mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-17 23:56:13 +08:00
opt view fav
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -97,8 +97,9 @@ class VideoCardH extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
final int cid = videoItem.cid ??
|
final int? cid = videoItem.cid ??
|
||||||
await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
||||||
|
if (cid != null) {
|
||||||
if (source == 'later') {
|
if (source == 'later') {
|
||||||
onViewLater!(cid);
|
onViewLater!(cid);
|
||||||
} else {
|
} else {
|
||||||
@@ -110,6 +111,7 @@ class VideoCardH extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
SmartDialog.showToast(err.toString());
|
SmartDialog.showToast(err.toString());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -159,22 +159,25 @@ class SearchHttp {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<int> ab2c({dynamic aid, dynamic bvid, int? part}) async {
|
static Future<int?> ab2c({dynamic aid, dynamic bvid, int? part}) async {
|
||||||
Map<String, dynamic> data = {};
|
var res = await Request().get(
|
||||||
if (aid != null) {
|
Api.ab2c,
|
||||||
data['aid'] = aid;
|
queryParameters: {
|
||||||
} else if (bvid != null) {
|
if (aid != null) 'aid': aid,
|
||||||
data['bvid'] = bvid;
|
if (bvid != null) 'bvid': bvid,
|
||||||
}
|
},
|
||||||
var res = await Request().get(Api.ab2c, queryParameters: data);
|
);
|
||||||
if (res.data['code'] == 0) {
|
if (res.data['code'] == 0) {
|
||||||
|
if (res.data['data'] case List list) {
|
||||||
return part != null
|
return part != null
|
||||||
? ((res.data['data'] as List).getOrNull(part - 1)?['cid'] ??
|
? (list.getOrNull(part - 1)?['cid'] ?? list.firstOrNull?['cid'])
|
||||||
res.data['data'].first['cid'])
|
: list.firstOrNull?['cid'];
|
||||||
: res.data['data'].first['cid'];
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
SmartDialog.showToast("ab2c error: ${res.data['message']}");
|
SmartDialog.showToast("ab2c error: ${res.data['message']}");
|
||||||
return -1;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,8 +59,8 @@ class FavDetailItemData extends BaseVideoItemModel with MultiSelectData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static final _digitRegExp = RegExp(r'\d+');
|
static final _digitRegExp = RegExp(r'ep(\d+)');
|
||||||
String resolveEpId(String url) => _digitRegExp.firstMatch(url)!.group(0)!;
|
String? resolveEpId(String url) => _digitRegExp.firstMatch(url)?.group(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
class Ogv {
|
class Ogv {
|
||||||
|
|||||||
@@ -218,13 +218,15 @@ TextSpan? richNode(
|
|||||||
recognizer: TapGestureRecognizer()
|
recognizer: TapGestureRecognizer()
|
||||||
..onTap = () async {
|
..onTap = () async {
|
||||||
try {
|
try {
|
||||||
int cid = await SearchHttp.ab2c(bvid: i.rid);
|
int? cid = await SearchHttp.ab2c(bvid: i.rid);
|
||||||
|
if (cid != null) {
|
||||||
PageUtils.toVideoPage(
|
PageUtils.toVideoPage(
|
||||||
'bvid=${i.rid}&cid=$cid',
|
'bvid=${i.rid}&cid=$cid',
|
||||||
arguments: {
|
arguments: {
|
||||||
'heroTag': Utils.makeHeroTag(i.rid),
|
'heroTag': Utils.makeHeroTag(i.rid),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
SmartDialog.showToast(err.toString());
|
SmartDialog.showToast(err.toString());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -546,7 +546,7 @@ class _EpisodePanelState extends CommonSlidePageState<EpisodePanel> {
|
|||||||
? Icons.notifications_off_outlined
|
? Icons.notifications_off_outlined
|
||||||
: Icons.notifications_active_outlined,
|
: Icons.notifications_active_outlined,
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
dynamic result = await VideoHttp.seasonFav(
|
var result = await VideoHttp.seasonFav(
|
||||||
isFav: response,
|
isFav: response,
|
||||||
seasonId: widget.seasonId,
|
seasonId: widget.seasonId,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -4,15 +4,11 @@ import 'package:PiliPlus/common/widgets/button/icon_button.dart';
|
|||||||
import 'package:PiliPlus/common/widgets/image/image_save.dart';
|
import 'package:PiliPlus/common/widgets/image/image_save.dart';
|
||||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||||
import 'package:PiliPlus/common/widgets/stat/stat.dart';
|
import 'package:PiliPlus/common/widgets/stat/stat.dart';
|
||||||
import 'package:PiliPlus/http/search.dart';
|
|
||||||
import 'package:PiliPlus/http/video.dart';
|
|
||||||
import 'package:PiliPlus/models/common/badge_type.dart';
|
import 'package:PiliPlus/models/common/badge_type.dart';
|
||||||
import 'package:PiliPlus/models/user/fav_detail.dart';
|
import 'package:PiliPlus/models/user/fav_detail.dart';
|
||||||
import 'package:PiliPlus/utils/id_utils.dart';
|
|
||||||
import 'package:PiliPlus/utils/page_utils.dart';
|
import 'package:PiliPlus/utils/page_utils.dart';
|
||||||
import 'package:PiliPlus/utils/utils.dart';
|
import 'package:PiliPlus/utils/utils.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
|
||||||
// 收藏视频卡片 - 水平布局
|
// 收藏视频卡片 - 水平布局
|
||||||
@@ -36,8 +32,6 @@ class FavVideoCardH extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
int id = videoItem.id!;
|
|
||||||
String bvid = videoItem.bvid ?? IdUtils.av2bv(id);
|
|
||||||
return InkWell(
|
return InkWell(
|
||||||
onTap: isSort == true
|
onTap: isSort == true
|
||||||
? null
|
? null
|
||||||
@@ -46,26 +40,21 @@ class FavVideoCardH extends StatelessWidget {
|
|||||||
onTap!();
|
onTap!();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String? epId;
|
|
||||||
if (videoItem.type == 24) {
|
|
||||||
videoItem.cid = await SearchHttp.ab2c(bvid: bvid);
|
|
||||||
dynamic seasonId = videoItem.ogv!.seasonId;
|
|
||||||
epId = videoItem.epId;
|
|
||||||
PageUtils.viewBangumi(seasonId: seasonId, epId: epId);
|
|
||||||
return;
|
|
||||||
} else if (videoItem.page == 0 || videoItem.page! > 1) {
|
|
||||||
var result = await VideoHttp.videoIntro(bvid: bvid);
|
|
||||||
if (result['status']) {
|
|
||||||
epId = result['data'].epId;
|
|
||||||
} else {
|
|
||||||
SmartDialog.showToast(result['msg']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!const [0, 16].contains(videoItem.attr)) {
|
if (!const [0, 16].contains(videoItem.attr)) {
|
||||||
Get.toNamed('/member?mid=${videoItem.owner.mid}');
|
Get.toNamed('/member?mid=${videoItem.owner.mid}');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// pgc
|
||||||
|
if (videoItem.type == 24) {
|
||||||
|
PageUtils.viewBangumi(
|
||||||
|
seasonId: videoItem.ogv!.seasonId,
|
||||||
|
epId: videoItem.epId,
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
onViewFav?.call();
|
onViewFav?.call();
|
||||||
},
|
},
|
||||||
onLongPress: isSort == true
|
onLongPress: isSort == true
|
||||||
|
|||||||
@@ -76,8 +76,9 @@ class HistoryItem extends StatelessWidget {
|
|||||||
if (epid != null) {
|
if (epid != null) {
|
||||||
PageUtils.viewBangumi(epId: epid);
|
PageUtils.viewBangumi(epId: epid);
|
||||||
} else {
|
} else {
|
||||||
int cid = videoItem.history.cid ??
|
int? cid = videoItem.history.cid ??
|
||||||
await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
||||||
|
if (cid != null) {
|
||||||
PageUtils.toVideoPage(
|
PageUtils.toVideoPage(
|
||||||
'bvid=$bvid&cid=$cid',
|
'bvid=$bvid&cid=$cid',
|
||||||
arguments: {
|
arguments: {
|
||||||
@@ -86,6 +87,7 @@ class HistoryItem extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
SmartDialog.showToast(result['msg']);
|
SmartDialog.showToast(result['msg']);
|
||||||
}
|
}
|
||||||
@@ -95,8 +97,9 @@ class HistoryItem extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int cid = videoItem.history.cid ??
|
int? cid = videoItem.history.cid ??
|
||||||
await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
||||||
|
if (cid != null) {
|
||||||
PageUtils.toVideoPage(
|
PageUtils.toVideoPage(
|
||||||
'bvid=$bvid&cid=$cid',
|
'bvid=$bvid&cid=$cid',
|
||||||
arguments: {
|
arguments: {
|
||||||
@@ -105,6 +108,7 @@ class HistoryItem extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onLongPress: () {
|
onLongPress: () {
|
||||||
if (ctr is MultiSelectController || ctr is HistoryBaseController) {
|
if (ctr is MultiSelectController || ctr is HistoryBaseController) {
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ class HistorySearchController
|
|||||||
loadingState
|
loadingState
|
||||||
..value.data!.removeAt(index)
|
..value.data!.removeAt(index)
|
||||||
..refresh();
|
..refresh();
|
||||||
|
}
|
||||||
SmartDialog.showToast(res['msg']);
|
SmartDialog.showToast(res['msg']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@@ -346,15 +346,8 @@ class _LiveRoomPageState extends State<LiveRoomPage>
|
|||||||
: Row(
|
: Row(
|
||||||
children: [
|
children: [
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () {
|
onTap: () => Get.toNamed(
|
||||||
dynamic uid = roomInfoH5.roomInfo?.uid;
|
'/member?mid=${roomInfoH5.roomInfo?.uid}'),
|
||||||
Get.toNamed(
|
|
||||||
'/member?mid=$uid',
|
|
||||||
arguments: {
|
|
||||||
'heroTag': Utils.makeHeroTag(uid),
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
child: NetworkImgLayer(
|
child: NetworkImgLayer(
|
||||||
width: 34,
|
width: 34,
|
||||||
height: 34,
|
height: 34,
|
||||||
|
|||||||
@@ -34,8 +34,9 @@ class MemberCoinsItem extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int cid =
|
int? cid =
|
||||||
await SearchHttp.ab2c(aid: coinItem.aid, bvid: coinItem.bvid);
|
await SearchHttp.ab2c(aid: coinItem.aid, bvid: coinItem.bvid);
|
||||||
|
if (cid != null) {
|
||||||
PageUtils.toVideoPage(
|
PageUtils.toVideoPage(
|
||||||
'bvid=${coinItem.bvid}&cid=$cid',
|
'bvid=${coinItem.bvid}&cid=$cid',
|
||||||
arguments: {
|
arguments: {
|
||||||
@@ -43,6 +44,7 @@ class MemberCoinsItem extends StatelessWidget {
|
|||||||
'heroTag': Utils.makeHeroTag(coinItem.aid)
|
'heroTag': Utils.makeHeroTag(coinItem.aid)
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onLongPress: () => imageSaveDialog(
|
onLongPress: () => imageSaveDialog(
|
||||||
title: coinItem.title,
|
title: coinItem.title,
|
||||||
|
|||||||
@@ -147,11 +147,12 @@ class MemberVideoCtr
|
|||||||
if (list.isNullOrEmpty) return;
|
if (list.isNullOrEmpty) return;
|
||||||
|
|
||||||
if (episodicButton.value.text == '继续播放') {
|
if (episodicButton.value.text == '继续播放') {
|
||||||
dynamic oid = RegExp(r'oid=([\d]+)')
|
String? oid = RegExp(r'oid=(\d+)')
|
||||||
.firstMatch('${episodicButton.value.uri}')
|
.firstMatch('${episodicButton.value.uri}')
|
||||||
?.group(1);
|
?.group(1);
|
||||||
dynamic bvid = IdUtils.av2bv(int.tryParse(oid) ?? 0);
|
if (oid != null) {
|
||||||
dynamic cid = await SearchHttp.ab2c(aid: oid, bvid: bvid);
|
var bvid = IdUtils.av2bv(int.parse(oid));
|
||||||
|
var cid = await SearchHttp.ab2c(aid: oid, bvid: bvid);
|
||||||
PageUtils.toVideoPage(
|
PageUtils.toVideoPage(
|
||||||
'bvid=$bvid&cid=$cid',
|
'bvid=$bvid&cid=$cid',
|
||||||
arguments: {
|
arguments: {
|
||||||
@@ -176,6 +177,7 @@ class MemberVideoCtr
|
|||||||
'isContinuePlaying': true,
|
'isContinuePlaying': true,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,8 @@ class SubVideoCardH extends StatelessWidget {
|
|||||||
String bvid = videoItem.bvid!;
|
String bvid = videoItem.bvid!;
|
||||||
return InkWell(
|
return InkWell(
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
int cid = await SearchHttp.ab2c(bvid: bvid);
|
int? cid = await SearchHttp.ab2c(bvid: bvid);
|
||||||
|
if (cid != null) {
|
||||||
PageUtils.toVideoPage(
|
PageUtils.toVideoPage(
|
||||||
'bvid=$bvid&cid=$cid',
|
'bvid=$bvid&cid=$cid',
|
||||||
arguments: {
|
arguments: {
|
||||||
@@ -37,6 +38,7 @@ class SubVideoCardH extends StatelessWidget {
|
|||||||
'videoType': SearchType.video,
|
'videoType': SearchType.video,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onLongPress: () => imageSaveDialog(
|
onLongPress: () => imageSaveDialog(
|
||||||
title: videoItem.title,
|
title: videoItem.title,
|
||||||
|
|||||||
@@ -164,9 +164,11 @@ class _MediaListPanelState
|
|||||||
String bvid = item.bvid!;
|
String bvid = item.bvid!;
|
||||||
int? aid = item.aid;
|
int? aid = item.aid;
|
||||||
String cover = item.cover ?? '';
|
String cover = item.cover ?? '';
|
||||||
final int cid =
|
final int? cid =
|
||||||
item.cid ?? await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
item.cid ?? await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
||||||
|
if (cid != null) {
|
||||||
widget.changeMediaList?.call(bvid, cid, aid, cover);
|
widget.changeMediaList?.call(bvid, cid, aid, cover);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onLongPress: () => imageSaveDialog(
|
onLongPress: () => imageSaveDialog(
|
||||||
title: item.title,
|
title: item.title,
|
||||||
|
|||||||
@@ -2160,7 +2160,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
..cid.refresh();
|
..cid.refresh();
|
||||||
} else {
|
} else {
|
||||||
// switch to first episode
|
// switch to first episode
|
||||||
dynamic episode = videoIntroController.videoDetail.value.ugcSeason!
|
var episode = videoIntroController.videoDetail.value.ugcSeason!
|
||||||
.sections![videoDetailController.seasonIndex.value].episodes!.first;
|
.sections![videoDetailController.seasonIndex.value].episodes!.first;
|
||||||
if (episode.cid != videoDetailController.cid.value) {
|
if (episode.cid != videoDetailController.cid.value) {
|
||||||
changeEpisode(episode);
|
changeEpisode(episode);
|
||||||
@@ -2182,7 +2182,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
videoDetailController.cid.refresh();
|
videoDetailController.cid.refresh();
|
||||||
} else {
|
} else {
|
||||||
// switch to first episode
|
// switch to first episode
|
||||||
dynamic episode = videoIntroController.videoDetail.value.pages!.first;
|
var episode = videoIntroController.videoDetail.value.pages!.first;
|
||||||
if (episode.cid != videoDetailController.cid.value) {
|
if (episode.cid != videoDetailController.cid.value) {
|
||||||
changeEpisode(episode);
|
changeEpisode(episode);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -291,8 +291,9 @@ class ChatItem extends StatelessWidget {
|
|||||||
String bvid = match.group(0)!;
|
String bvid = match.group(0)!;
|
||||||
try {
|
try {
|
||||||
SmartDialog.showLoading();
|
SmartDialog.showLoading();
|
||||||
final int cid = await SearchHttp.ab2c(bvid: bvid);
|
final int? cid = await SearchHttp.ab2c(bvid: bvid);
|
||||||
SmartDialog.dismiss();
|
SmartDialog.dismiss();
|
||||||
|
if (cid != null) {
|
||||||
PageUtils.toVideoPage(
|
PageUtils.toVideoPage(
|
||||||
'bvid=$bvid&cid=$cid',
|
'bvid=$bvid&cid=$cid',
|
||||||
arguments: <String, String?>{
|
arguments: <String, String?>{
|
||||||
@@ -300,6 +301,7 @@ class ChatItem extends StatelessWidget {
|
|||||||
'heroTag': Utils.makeHeroTag(bvid),
|
'heroTag': Utils.makeHeroTag(bvid),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
SmartDialog.dismiss();
|
SmartDialog.dismiss();
|
||||||
SmartDialog.showToast(err.toString());
|
SmartDialog.showToast(err.toString());
|
||||||
@@ -378,8 +380,9 @@ class ChatItem extends StatelessWidget {
|
|||||||
try {
|
try {
|
||||||
SmartDialog.showLoading();
|
SmartDialog.showLoading();
|
||||||
var bvid = content["bvid"];
|
var bvid = content["bvid"];
|
||||||
final int cid = await SearchHttp.ab2c(bvid: bvid);
|
final int? cid = await SearchHttp.ab2c(bvid: bvid);
|
||||||
SmartDialog.dismiss();
|
SmartDialog.dismiss();
|
||||||
|
if (cid != null) {
|
||||||
PageUtils.toVideoPage(
|
PageUtils.toVideoPage(
|
||||||
'bvid=$bvid&cid=$cid',
|
'bvid=$bvid&cid=$cid',
|
||||||
arguments: {
|
arguments: {
|
||||||
@@ -387,6 +390,7 @@ class ChatItem extends StatelessWidget {
|
|||||||
'heroTag': Utils.makeHeroTag(bvid),
|
'heroTag': Utils.makeHeroTag(bvid),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
SmartDialog.dismiss();
|
SmartDialog.dismiss();
|
||||||
SmartDialog.showToast(err.toString());
|
SmartDialog.showToast(err.toString());
|
||||||
@@ -460,8 +464,9 @@ class ChatItem extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
bvid ??= IdUtils.av2bv(aid);
|
bvid ??= IdUtils.av2bv(aid);
|
||||||
SmartDialog.showLoading();
|
SmartDialog.showLoading();
|
||||||
final int cid = await SearchHttp.ab2c(bvid: bvid);
|
final int? cid = await SearchHttp.ab2c(bvid: bvid);
|
||||||
SmartDialog.dismiss();
|
SmartDialog.dismiss();
|
||||||
|
if (cid != null) {
|
||||||
PageUtils.toVideoPage(
|
PageUtils.toVideoPage(
|
||||||
'bvid=$bvid&cid=$cid',
|
'bvid=$bvid&cid=$cid',
|
||||||
arguments: <String, String?>{
|
arguments: <String, String?>{
|
||||||
@@ -469,6 +474,7 @@ class ChatItem extends StatelessWidget {
|
|||||||
'heroTag': Utils.makeHeroTag(bvid),
|
'heroTag': Utils.makeHeroTag(bvid),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -624,7 +624,8 @@ class PiliScheme {
|
|||||||
?.group(1);
|
?.group(1);
|
||||||
if (bvid != null) {
|
if (bvid != null) {
|
||||||
if (mediaId != null) {
|
if (mediaId != null) {
|
||||||
final int cid = await SearchHttp.ab2c(bvid: bvid);
|
final int? cid = await SearchHttp.ab2c(bvid: bvid);
|
||||||
|
if (cid != null) {
|
||||||
PageUtils.toVideoPage(
|
PageUtils.toVideoPage(
|
||||||
'bvid=$bvid&cid=$cid',
|
'bvid=$bvid&cid=$cid',
|
||||||
arguments: {
|
arguments: {
|
||||||
@@ -637,6 +638,7 @@ class PiliScheme {
|
|||||||
'isContinuePlaying': true,
|
'isContinuePlaying': true,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
videoPush(null, bvid, off: off);
|
videoPush(null, bvid, off: off);
|
||||||
}
|
}
|
||||||
@@ -852,7 +854,7 @@ class PiliScheme {
|
|||||||
if (showDialog) {
|
if (showDialog) {
|
||||||
SmartDialog.showLoading<dynamic>(msg: '获取中...');
|
SmartDialog.showLoading<dynamic>(msg: '获取中...');
|
||||||
}
|
}
|
||||||
final int cid = await SearchHttp.ab2c(
|
final int? cid = await SearchHttp.ab2c(
|
||||||
bvid: bvid,
|
bvid: bvid,
|
||||||
aid: aid,
|
aid: aid,
|
||||||
part: part != null ? int.tryParse(part) : null,
|
part: part != null ? int.tryParse(part) : null,
|
||||||
@@ -860,6 +862,7 @@ class PiliScheme {
|
|||||||
if (showDialog) {
|
if (showDialog) {
|
||||||
SmartDialog.dismiss();
|
SmartDialog.dismiss();
|
||||||
}
|
}
|
||||||
|
if (cid != null) {
|
||||||
PageUtils.toVideoPage(
|
PageUtils.toVideoPage(
|
||||||
'bvid=$bvid&cid=$cid',
|
'bvid=$bvid&cid=$cid',
|
||||||
arguments: {
|
arguments: {
|
||||||
@@ -870,6 +873,7 @@ class PiliScheme {
|
|||||||
off: off,
|
off: off,
|
||||||
preventDuplicates: false,
|
preventDuplicates: false,
|
||||||
);
|
);
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
SmartDialog.dismiss();
|
SmartDialog.dismiss();
|
||||||
SmartDialog.showToast('video获取失败: $e');
|
SmartDialog.showToast('video获取失败: $e');
|
||||||
|
|||||||
@@ -393,7 +393,8 @@ class PageUtils {
|
|||||||
try {
|
try {
|
||||||
String bvid = item.modules.moduleDynamic!.major!.archive!.bvid!;
|
String bvid = item.modules.moduleDynamic!.major!.archive!.bvid!;
|
||||||
String cover = item.modules.moduleDynamic!.major!.archive!.cover!;
|
String cover = item.modules.moduleDynamic!.major!.archive!.cover!;
|
||||||
int cid = await SearchHttp.ab2c(bvid: bvid);
|
int? cid = await SearchHttp.ab2c(bvid: bvid);
|
||||||
|
if (cid != null) {
|
||||||
toVideoPage(
|
toVideoPage(
|
||||||
'bvid=$bvid&cid=$cid',
|
'bvid=$bvid&cid=$cid',
|
||||||
arguments: {
|
arguments: {
|
||||||
@@ -402,6 +403,7 @@ class PageUtils {
|
|||||||
},
|
},
|
||||||
preventDuplicates: false,
|
preventDuplicates: false,
|
||||||
);
|
);
|
||||||
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
SmartDialog.showToast(err.toString());
|
SmartDialog.showToast(err.toString());
|
||||||
}
|
}
|
||||||
@@ -456,7 +458,8 @@ class PageUtils {
|
|||||||
int aid = ugcSeason.aid!;
|
int aid = ugcSeason.aid!;
|
||||||
String bvid = IdUtils.av2bv(aid);
|
String bvid = IdUtils.av2bv(aid);
|
||||||
String cover = ugcSeason.cover!;
|
String cover = ugcSeason.cover!;
|
||||||
int cid = await SearchHttp.ab2c(bvid: bvid);
|
int? cid = await SearchHttp.ab2c(bvid: bvid);
|
||||||
|
if (cid != null) {
|
||||||
toVideoPage(
|
toVideoPage(
|
||||||
'bvid=$bvid&cid=$cid',
|
'bvid=$bvid&cid=$cid',
|
||||||
arguments: {
|
arguments: {
|
||||||
@@ -465,6 +468,7 @@ class PageUtils {
|
|||||||
},
|
},
|
||||||
preventDuplicates: false,
|
preventDuplicates: false,
|
||||||
);
|
);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/// 番剧查看
|
/// 番剧查看
|
||||||
|
|||||||
@@ -49,7 +49,8 @@ class UrlUtils {
|
|||||||
int? aid = matchRes['AV'];
|
int? aid = matchRes['AV'];
|
||||||
String? bvid = matchRes['BV'];
|
String? bvid = matchRes['BV'];
|
||||||
bvid ??= IdUtils.av2bv(aid!);
|
bvid ??= IdUtils.av2bv(aid!);
|
||||||
final int cid = await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
final int? cid = await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
||||||
|
if (cid != null) {
|
||||||
PageUtils.toVideoPage(
|
PageUtils.toVideoPage(
|
||||||
'bvid=$bvid&cid=$cid',
|
'bvid=$bvid&cid=$cid',
|
||||||
arguments: <String, String?>{
|
arguments: <String, String?>{
|
||||||
@@ -58,6 +59,7 @@ class UrlUtils {
|
|||||||
},
|
},
|
||||||
preventDuplicates: false,
|
preventDuplicates: false,
|
||||||
);
|
);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (redirectUrl.isNotEmpty) {
|
if (redirectUrl.isNotEmpty) {
|
||||||
PageUtils.handleWebview(redirectUrl);
|
PageUtils.handleWebview(redirectUrl);
|
||||||
|
|||||||
Reference in New Issue
Block a user