mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 10:51:17 +00:00
KissKh: add decrypt subtitle
This commit is contained in:
@@ -18,7 +18,7 @@ class KissKh extends MProvider {
|
|||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
|
|
||||||
for (var data in datas) {
|
for (var data in datas) {
|
||||||
MManga anime = MManga();
|
var anime = MManga();
|
||||||
anime.name = data["title"];
|
anime.name = data["title"];
|
||||||
anime.imageUrl = data["thumbnail"] ?? "";
|
anime.imageUrl = data["thumbnail"] ?? "";
|
||||||
anime.link =
|
anime.link =
|
||||||
@@ -42,7 +42,7 @@ class KissKh extends MProvider {
|
|||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
|
|
||||||
for (var data in datas) {
|
for (var data in datas) {
|
||||||
MManga anime = MManga();
|
var anime = MManga();
|
||||||
anime.name = data["title"];
|
anime.name = data["title"];
|
||||||
anime.imageUrl = data["thumbnail"] ?? "";
|
anime.imageUrl = data["thumbnail"] ?? "";
|
||||||
anime.link =
|
anime.link =
|
||||||
@@ -63,7 +63,7 @@ class KissKh extends MProvider {
|
|||||||
final jsonRes = json.decode(res);
|
final jsonRes = json.decode(res);
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
for (var data in jsonRes) {
|
for (var data in jsonRes) {
|
||||||
MManga anime = MManga();
|
var anime = MManga();
|
||||||
anime.name = data["title"];
|
anime.name = data["title"];
|
||||||
anime.imageUrl = data["thumbnail"] ?? "";
|
anime.imageUrl = data["thumbnail"] ?? "";
|
||||||
anime.link =
|
anime.link =
|
||||||
@@ -79,7 +79,7 @@ class KissKh extends MProvider {
|
|||||||
{"Ongoing": 0, "Completed": 1}
|
{"Ongoing": 0, "Completed": 1}
|
||||||
];
|
];
|
||||||
final res = (await client.get(Uri.parse(url))).body;
|
final res = (await client.get(Uri.parse(url))).body;
|
||||||
MManga anime = MManga();
|
var anime = MManga();
|
||||||
final jsonRes = json.decode(res);
|
final jsonRes = json.decode(res);
|
||||||
final status = jsonRes["status"] ?? "";
|
final status = jsonRes["status"] ?? "";
|
||||||
anime.description = jsonRes["description"];
|
anime.description = jsonRes["description"];
|
||||||
@@ -123,22 +123,24 @@ class KissKh extends MProvider {
|
|||||||
final subRes =
|
final subRes =
|
||||||
(await client.get(Uri.parse("${source.baseUrl}/api/Sub/$id"))).body;
|
(await client.get(Uri.parse("${source.baseUrl}/api/Sub/$id"))).body;
|
||||||
var jsonSubRes = json.decode(subRes);
|
var jsonSubRes = json.decode(subRes);
|
||||||
|
|
||||||
List<MTrack> subtitles = [];
|
List<MTrack> subtitles = [];
|
||||||
|
|
||||||
for (var sub in jsonSubRes) {
|
for (var sub in jsonSubRes) {
|
||||||
try {
|
final subUrl = sub["src"] as String;
|
||||||
final subUrl = sub["src"];
|
|
||||||
final label = sub["label"];
|
final label = sub["label"];
|
||||||
MTrack subtitle = MTrack();
|
if (subUrl.endsWith("txt")) {
|
||||||
|
var subtitle = await getSubtitle(subUrl, label);
|
||||||
|
subtitles.add(subtitle);
|
||||||
|
} else {
|
||||||
|
var subtitle = MTrack();
|
||||||
subtitle
|
subtitle
|
||||||
..label = label
|
..label = label
|
||||||
..file = subUrl;
|
..file = subUrl;
|
||||||
subtitles.add(subtitle);
|
subtitles.add(subtitle);
|
||||||
} catch (_) {}
|
}
|
||||||
}
|
}
|
||||||
final videoUrl = jsonRes["Video"];
|
final videoUrl = jsonRes["Video"];
|
||||||
MVideo video = MVideo();
|
var video = MVideo();
|
||||||
video
|
video
|
||||||
..url = videoUrl
|
..url = videoUrl
|
||||||
..originalUrl = videoUrl
|
..originalUrl = videoUrl
|
||||||
@@ -150,6 +152,31 @@ class KissKh extends MProvider {
|
|||||||
};
|
};
|
||||||
return [video];
|
return [video];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<MTrack> getSubtitle(String subUrl, String subLang) async {
|
||||||
|
final response = await client.get(Uri.parse(subUrl), headers: {
|
||||||
|
"referer": "https://kisskh.me/",
|
||||||
|
"origin": "https://kisskh.me"
|
||||||
|
});
|
||||||
|
final subtitleData = response.body;
|
||||||
|
String decrypted = "\n";
|
||||||
|
for (String line in subtitleData.split('\n')) {
|
||||||
|
decrypted += "${decrypt(line.trim())}\n";
|
||||||
|
}
|
||||||
|
var subtitle = MTrack();
|
||||||
|
subtitle
|
||||||
|
..label = subLang
|
||||||
|
..file = decrypted;
|
||||||
|
return subtitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
String decrypt(String data) {
|
||||||
|
final key = utf8.decode(
|
||||||
|
[56, 48, 53, 54, 52, 56, 51, 54, 52, 54, 51, 50, 56, 55, 54, 51]);
|
||||||
|
final iv = utf8.decode(
|
||||||
|
[54, 56, 53, 50, 54, 49, 50, 51, 55, 48, 49, 56, 53, 50, 55, 51]);
|
||||||
|
return cryptoHandler(data, iv, key, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
KissKh main(MSource source) {
|
KissKh main(MSource source) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../../model/source.dart';
|
import '../../../../../model/source.dart';
|
||||||
|
|
||||||
Source get kisskhSource => _kisskhSource;
|
Source get kisskhSource => _kisskhSource;
|
||||||
const _kisskhVersion = "0.0.55";
|
const _kisskhVersion = "0.0.6";
|
||||||
const _kisskhSourceCodeUrl =
|
const _kisskhSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/en/kisskh/kisskh.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/en/kisskh/kisskh.dart";
|
||||||
Source _kisskhSource = Source(
|
Source _kisskhSource = Source(
|
||||||
|
|||||||
Reference in New Issue
Block a user