mod: article req

Closes #305

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-03-05 14:25:50 +08:00
parent da5c2148ad
commit bf4ecc85dd
2 changed files with 35 additions and 21 deletions

View File

@@ -1,6 +1,7 @@
import 'dart:convert'; import 'dart:convert';
import 'package:PiliPlus/models/dynamics/article_content_model.dart'; import 'package:PiliPlus/models/dynamics/article_content_model.dart';
import 'package:PiliPlus/utils/url_utils.dart';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:html/dom.dart' as dom; import 'package:html/dom.dart' as dom;
@@ -48,10 +49,11 @@ class HtmlHttp {
String opusContent = String opusContent =
opusDetail.querySelector('.opus-module-content')!.innerHtml; opusDetail.querySelector('.opus-module-content')!.innerHtml;
String? test; String? test;
try {
test = opusDetail test = opusDetail
.querySelector('.horizontal-scroll-album__pic__img') .querySelector('.horizontal-scroll-album__pic__img')!
?.innerHtml ?? .innerHtml;
''; } catch (_) {}
String commentId = opusDetail String commentId = opusDetail
.querySelector('.bili-comment-container')! .querySelector('.bili-comment-container')!
@@ -64,7 +66,7 @@ class HtmlHttp {
'avatar': avatar, 'avatar': avatar,
'uname': uname, 'uname': uname,
'updateTime': updateTime, 'updateTime': updateTime,
'content': test + opusContent, 'content': (test ?? '') + opusContent,
'commentId': int.parse(commentId) 'commentId': int.parse(commentId)
}; };
} catch (err) { } catch (err) {
@@ -74,6 +76,12 @@ class HtmlHttp {
// read // read
static Future reqReadHtml(id, dynamicType) async { static Future reqReadHtml(id, dynamicType) async {
String? redirectUrl = await UrlUtils.parseRedirectUrl(
'https://www.bilibili.com/$dynamicType/$id/');
if (redirectUrl != null) {
return await reqHtml(redirectUrl.split('/').last, dynamicType);
}
var response = await Request().get( var response = await Request().get(
"https://www.bilibili.com/$dynamicType/$id/", "https://www.bilibili.com/$dynamicType/$id/",
extra: {'ua': 'pc'}, extra: {'ua': 'pc'},

View File

@@ -3,6 +3,7 @@ import 'dart:math';
import 'package:PiliPlus/common/widgets/article_content.dart'; import 'package:PiliPlus/common/widgets/article_content.dart';
import 'package:PiliPlus/common/widgets/http_error.dart'; import 'package:PiliPlus/common/widgets/http_error.dart';
import 'package:PiliPlus/common/widgets/loading_widget.dart'; import 'package:PiliPlus/common/widgets/loading_widget.dart';
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/constants.dart';
import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/common/reply_sort_type.dart'; import 'package:PiliPlus/models/common/reply_sort_type.dart';
@@ -404,7 +405,11 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
child: Scaffold( child: Scaffold(
key: _key, key: _key,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
body: CustomScrollView( body: refreshIndicator(
onRefresh: () async {
await _htmlRenderCtr.onRefresh();
},
child: CustomScrollView(
controller: _htmlRenderCtr.scrollController, controller: _htmlRenderCtr.scrollController,
physics: const AlwaysScrollableScrollPhysics(), physics: const AlwaysScrollableScrollPhysics(),
slivers: [ slivers: [
@@ -425,6 +430,7 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
), ),
), ),
), ),
),
], ],
], ],
); );