mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-01 08:38:18 +08:00
fix: article requset
This commit is contained in:
@@ -16,16 +16,16 @@ class HtmlHttp {
|
|||||||
if (response.data is! String && response.data is! List<int>) {
|
if (response.data is! String && response.data is! List<int>) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (response.data.contains('Redirecting to')) {
|
|
||||||
RegExp regex = RegExp(r'//([\w\.]+)/(\w+)/(\w+)');
|
|
||||||
Match match = regex.firstMatch(response.data)!;
|
|
||||||
String matchedString = match.group(0)!;
|
|
||||||
response = await Request().get(
|
|
||||||
'https:$matchedString/',
|
|
||||||
extra: {'ua': 'pc'},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
|
if (response.data.contains('Redirecting to')) {
|
||||||
|
RegExp regex = RegExp(r'//([\w\.]+)/(\w+)/(\w+)');
|
||||||
|
Match match = regex.firstMatch(response.data)!;
|
||||||
|
String matchedString = match.group(0)!;
|
||||||
|
response = await Request().get(
|
||||||
|
'https:$matchedString/',
|
||||||
|
extra: {'ua': 'pc'},
|
||||||
|
);
|
||||||
|
}
|
||||||
Document rootTree = parse(response.data);
|
Document rootTree = parse(response.data);
|
||||||
// log(response.data.body.toString());
|
// log(response.data.body.toString());
|
||||||
Element body = rootTree.body!;
|
Element body = rootTree.body!;
|
||||||
@@ -80,67 +80,72 @@ class HtmlHttp {
|
|||||||
if (response.data is! String && response.data is! List<int>) {
|
if (response.data is! String && response.data is! List<int>) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Document rootTree = parse(response.data);
|
try {
|
||||||
Element body = rootTree.body!;
|
Document rootTree = parse(response.data);
|
||||||
Element appDom = body.querySelector('#app')!;
|
Element body = rootTree.body!;
|
||||||
Element authorHeader = appDom.querySelector('.up-left')!;
|
Element appDom = body.querySelector('#app')!;
|
||||||
// 头像
|
Element authorHeader = appDom.querySelector('.up-left')!;
|
||||||
// String avatar =
|
// 头像
|
||||||
// authorHeader.querySelector('.bili-avatar-img')!.attributes['data-src']!;
|
// String avatar =
|
||||||
// 正则寻找形如"author":{"mid":\d+,"name":".*","face":"xxxx"的匹配项
|
// authorHeader.querySelector('.bili-avatar-img')!.attributes['data-src']!;
|
||||||
String avatar = RegExp(r'"author":\{"mid":\d+?,"name":".+?","face":"(.+?)"')
|
// 正则寻找形如"author":{"mid":\d+,"name":".*","face":"xxxx"的匹配项
|
||||||
.firstMatch(response.data)!
|
String avatar =
|
||||||
.group(1)!
|
RegExp(r'"author":\{"mid":\d+?,"name":".+?","face":"(.+?)"')
|
||||||
.replaceAll(r'\u002F', '/')
|
.firstMatch(response.data)!
|
||||||
.split('@')[0];
|
.group(1)!
|
||||||
// print(avatar);
|
.replaceAll(r'\u002F', '/')
|
||||||
String uname = authorHeader.querySelector('.up-name')!.text.trim();
|
.split('@')[0];
|
||||||
// 动态详情
|
// print(avatar);
|
||||||
Element opusDetail = appDom.querySelector('.article-content')!;
|
String uname = authorHeader.querySelector('.up-name')!.text.trim();
|
||||||
// 发布时间
|
// 动态详情
|
||||||
// String updateTime =
|
Element opusDetail = appDom.querySelector('.article-content')!;
|
||||||
// opusDetail.querySelector('.opus-module-author__pub__text')!.text;
|
// 发布时间
|
||||||
// print(updateTime);
|
// String updateTime =
|
||||||
|
// opusDetail.querySelector('.opus-module-author__pub__text')!.text;
|
||||||
|
// print(updateTime);
|
||||||
|
|
||||||
//
|
//
|
||||||
dynamic opusContent =
|
dynamic opusContent =
|
||||||
opusDetail.querySelector('#read-article-holder')?.innerHtml ?? '';
|
opusDetail.querySelector('#read-article-holder')?.innerHtml ?? '';
|
||||||
|
|
||||||
bool isJsonContent = false;
|
bool isJsonContent = false;
|
||||||
if (opusContent.isEmpty) {
|
if (opusContent.isEmpty) {
|
||||||
final regex = RegExp(r'window\.__INITIAL_STATE__\s*=\s*(\{.*?\});');
|
final regex = RegExp(r'window\.__INITIAL_STATE__\s*=\s*(\{.*?\});');
|
||||||
final match = regex.firstMatch(response.data);
|
final match = regex.firstMatch(response.data);
|
||||||
if (match != null) {
|
if (match != null) {
|
||||||
final jsonString = match.group(1);
|
final jsonString = match.group(1);
|
||||||
if (jsonString != null) {
|
if (jsonString != null) {
|
||||||
try {
|
|
||||||
opusContent = jsonDecode(jsonString)['readInfo']['content'];
|
|
||||||
try {
|
try {
|
||||||
opusContent = (jsonDecode(opusContent)['ops'] as List)
|
opusContent = jsonDecode(jsonString)['readInfo']['content'];
|
||||||
.map((item) => ArticleContentModel.fromJson(item))
|
try {
|
||||||
.toList();
|
opusContent = (jsonDecode(opusContent)['ops'] as List)
|
||||||
isJsonContent = true;
|
.map((item) => ArticleContentModel.fromJson(item))
|
||||||
|
.toList();
|
||||||
|
isJsonContent = true;
|
||||||
|
} catch (e) {
|
||||||
|
print('second: $e');
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print('second: $e');
|
print('first: $e');
|
||||||
}
|
}
|
||||||
} catch (e) {
|
|
||||||
print('first: $e');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
RegExp digitRegExp = RegExp(r'\d+');
|
RegExp digitRegExp = RegExp(r'\d+');
|
||||||
Iterable<Match> matches = digitRegExp.allMatches(id);
|
Iterable<Match> matches = digitRegExp.allMatches(id);
|
||||||
String number = matches.first.group(0)!;
|
String number = matches.first.group(0)!;
|
||||||
return {
|
return {
|
||||||
'status': true,
|
'status': true,
|
||||||
'avatar': avatar,
|
'avatar': avatar,
|
||||||
'uname': uname,
|
'uname': uname,
|
||||||
'updateTime': '',
|
'updateTime': '',
|
||||||
'content': opusContent,
|
'content': opusContent,
|
||||||
'isJsonContent': isJsonContent,
|
'isJsonContent': isJsonContent,
|
||||||
'commentId': int.parse(number),
|
'commentId': int.parse(number),
|
||||||
};
|
};
|
||||||
|
} catch (e) {
|
||||||
|
print(e.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user