mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-07-14 05:10:13 +08:00
@@ -37,6 +37,7 @@ import 'package:PiliPlus/utils/recommend_filter.dart';
|
||||
import 'package:PiliPlus/utils/request_utils.dart';
|
||||
import 'package:PiliPlus/utils/storage.dart';
|
||||
import 'package:PiliPlus/utils/storage_pref.dart';
|
||||
import 'package:PiliPlus/utils/subtitle_utils.dart';
|
||||
import 'package:PiliPlus/utils/utils.dart';
|
||||
import 'package:PiliPlus/utils/wbi_sign.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
@@ -834,33 +835,20 @@ abstract final class VideoHttp {
|
||||
}
|
||||
}
|
||||
|
||||
static String _subtitleTimecode(num seconds) {
|
||||
int h = seconds ~/ 3600;
|
||||
seconds %= 3600;
|
||||
int m = seconds ~/ 60;
|
||||
seconds %= 60;
|
||||
String sms = seconds.toStringAsFixed(3).padLeft(6, '0');
|
||||
return h == 0
|
||||
? "${m.toString().padLeft(2, '0')}:$sms"
|
||||
: "${h.toString().padLeft(2, '0')}:${m.toString().padLeft(2, '0')}:$sms";
|
||||
}
|
||||
|
||||
static String processList(List list) {
|
||||
final sb = StringBuffer('WEBVTT\n\n')
|
||||
..writeAll(
|
||||
list.map(
|
||||
(item) =>
|
||||
'${_subtitleTimecode(item['from'])} --> ${_subtitleTimecode(item['to'])}\n${item['content'].trim()}',
|
||||
),
|
||||
'\n\n',
|
||||
);
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
static Future<String?> vttSubtitles(String subtitleUrl) async {
|
||||
static Future<String?> vttSubtitles(
|
||||
String subtitleUrl, {
|
||||
SubtitleFormat format = .vtt,
|
||||
}) async {
|
||||
final res = await Request().get("https:$subtitleUrl");
|
||||
if (res.data?['body'] case List list) {
|
||||
return compute<List, String>(processList, list);
|
||||
switch (format) {
|
||||
case .json:
|
||||
throw UnimplementedError();
|
||||
case .vtt:
|
||||
return compute<List, String>(SubtitleUtils.json2Vtt, list);
|
||||
case .srt:
|
||||
return compute<List, String>(SubtitleUtils.json2Srt, list);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user