diff --git a/lib/http/member.dart b/lib/http/member.dart index c1f20b6f..e3a49352 100644 --- a/lib/http/member.dart +++ b/lib/http/member.dart @@ -336,6 +336,7 @@ class MemberHttp { String? keyword, String order = 'pubdate', bool orderAvoided = true, + dynamic wwebid, }) async { String dmImgStr = Utils.base64EncodeRandomString(16, 64); String dmCoverImgStr = Utils.base64EncodeRandomString(32, 128); @@ -353,6 +354,7 @@ class MemberHttp { 'dm_img_str': dmImgStr, 'dm_cover_img_str': dmCoverImgStr, 'dm_img_inter': '{"ds":[],"wh":[0,0,0],"of":[0,0,0]}', + 'w_webid': wwebid, }); var res = await Request().get( Api.memberArchive, diff --git a/lib/pages/member_search/controller.dart b/lib/pages/member_search/controller.dart index 2a6bfa29..fc84a384 100644 --- a/lib/pages/member_search/controller.dart +++ b/lib/pages/member_search/controller.dart @@ -1,8 +1,14 @@ +import 'dart:convert'; + +import 'package:PiliPalaX/http/constants.dart'; +import 'package:PiliPalaX/http/init.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/utils/extension.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/http/member.dart'; +import 'package:html/dom.dart' as dom; +import 'package:html/parser.dart' as html_parser; class MemberSearchController extends GetxController with GetSingleTickerProviderStateMixin { @@ -26,11 +32,14 @@ class MemberSearchController extends GetxController bool isEndDynamic = false; Rx dynamicState = LoadingState.loading().obs; + dynamic wwebid; + @override void onInit() { super.onInit(); mid = int.parse(Get.parameters['mid']!); uname.value = Get.parameters['uname']!; + getWwebid(); } // 清空搜索 @@ -96,6 +105,20 @@ class MemberSearchController extends GetxController } } + Future getWwebid() async { + try { + dynamic response = + await Request().get('${HttpString.spaceBaseUrl}/$mid/dynamic'); + dom.Document document = html_parser.parse(response.data); + dom.Element? scriptElement = + document.querySelector('script#__RENDER_DATA__'); + wwebid = jsonDecode( + Uri.decodeComponent(scriptElement?.text ?? ''))['access_id']; + } catch (e) { + debugPrint('failed to get wwebid: $e'); + } + } + // 搜索视频 Future searchArchives([bool isRefresh = true]) async { if (isRefresh.not && isEndArchive) return; @@ -104,6 +127,7 @@ class MemberSearchController extends GetxController pn: archivePn, keyword: textEditingController.text, order: 'pubdate', + wwebid: wwebid, ); if (res['status']) { if (isRefresh) {