mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 02:41:39 +00:00
New source : KissKH (EN)
This commit is contained in:
@@ -5,6 +5,7 @@ import '../model/source.dart';
|
||||
import 'src/en/aniwatch/sources.dart';
|
||||
import 'src/en/gogoanime/source.dart';
|
||||
// import 'src/en/wcostream/source.dart';
|
||||
import 'src/en/kisskh/source.dart';
|
||||
import 'src/fr/animesultra/source.dart';
|
||||
import 'src/fr/franime/source.dart';
|
||||
import 'src/fr/otakufr/source.dart';
|
||||
@@ -18,7 +19,8 @@ void main() {
|
||||
otakufr,
|
||||
// wcostreamSource,
|
||||
animesultraSource,
|
||||
...aniwatchSourcesList
|
||||
...aniwatchSourcesList,
|
||||
kisskhSource
|
||||
];
|
||||
final List<Map<String, dynamic>> jsonList =
|
||||
_sourcesList.map((source) => source.toJson()).toList();
|
||||
|
||||
161
anime/src/en/kisskh/kisskh-v0.0.1.dart
Normal file
161
anime/src/en/kisskh/kisskh-v0.0.1.dart
Normal file
@@ -0,0 +1,161 @@
|
||||
import 'dart:convert';
|
||||
import 'package:bridge_lib/bridge_lib.dart';
|
||||
|
||||
getPopularAnime(MangaModel anime) async {
|
||||
final data = {
|
||||
"url":
|
||||
"${anime.baseUrl}/api/DramaList/List?page=${anime.page}&type=0&sub=0&country=0&status=0&order=1&pageSize=40"
|
||||
};
|
||||
final res = await MBridge.http('GET', json.encode(data));
|
||||
if (res.isEmpty) {
|
||||
return anime;
|
||||
}
|
||||
final jsonRes = json.decode(res);
|
||||
final datas = jsonRes["data"] as List;
|
||||
anime.names = datas.map((e) => e["title"]).toList();
|
||||
anime.images = datas.map((e) => e["thumbnail"] ?? "").toList();
|
||||
anime.urls = datas
|
||||
.map((e) => "${anime.baseUrl}/api/DramaList/Drama/${e["id"]}?isq=false")
|
||||
.toList();
|
||||
final lastPage = jsonRes["totalCount"] as int;
|
||||
final page = jsonRes["page"] as int;
|
||||
|
||||
anime.hasNextPage = page < lastPage;
|
||||
return anime;
|
||||
}
|
||||
|
||||
getLatestUpdatesAnime(MangaModel anime) async {
|
||||
final data = {
|
||||
"url":
|
||||
"${anime.baseUrl}/api/DramaList/List?page=${anime.page}&type=0&sub=0&country=0&status=0&order=12&pageSize=40"
|
||||
};
|
||||
final res = await MBridge.http('GET', json.encode(data));
|
||||
if (res.isEmpty) {
|
||||
return anime;
|
||||
}
|
||||
final jsonRes = json.decode(res);
|
||||
final datas = jsonRes["data"] as List;
|
||||
anime.names = datas.map((e) => e["title"]).toList();
|
||||
anime.images = datas.map((e) => e["thumbnail"] ?? "").toList();
|
||||
anime.urls = datas
|
||||
.map((e) => "${anime.baseUrl}/api/DramaList/Drama/${e["id"]}?isq=false")
|
||||
.toList();
|
||||
final lastPage = jsonRes["totalCount"] as int;
|
||||
final page = jsonRes["page"] as int;
|
||||
|
||||
anime.hasNextPage = page < lastPage;
|
||||
|
||||
return anime;
|
||||
}
|
||||
|
||||
getAnimeDetail(MangaModel anime) async {
|
||||
final statusList = [
|
||||
{
|
||||
"Ongoing": 0,
|
||||
"Completed": 1,
|
||||
}
|
||||
];
|
||||
|
||||
final data = {"url": anime.link};
|
||||
final res = await MBridge.http('GET', json.encode(data));
|
||||
if (res.isEmpty) {
|
||||
return anime;
|
||||
}
|
||||
final jsonRes = json.decode(res);
|
||||
final status = jsonRes["status"] ?? "";
|
||||
print(status);
|
||||
anime.description = jsonRes["description"];
|
||||
anime.status = MBridge.parseStatus(status, statusList);
|
||||
anime.imageUrl = jsonRes["thumbnail"];
|
||||
var episodes = jsonRes["episodes"];
|
||||
String type = jsonRes["type"];
|
||||
final episodesCount = jsonRes["episodesCount"] as int;
|
||||
List<String> episodesNames = [];
|
||||
List<String> episodesUrls = [];
|
||||
bool containsAnime = type.contains("Anime") as bool;
|
||||
bool containsTVSeries = type.contains("TVSeries") as bool;
|
||||
bool containsHollywood = type.contains("Hollywood") as bool;
|
||||
bool containsMovie = type.contains("Movie") as bool;
|
||||
for (var a in episodes) {
|
||||
String number = (a["number"] as double).toString().replaceAll(".0", "");
|
||||
final id = a["id"];
|
||||
if (containsAnime || containsTVSeries) {
|
||||
episodesNames.add("Episode $number");
|
||||
} else if (containsHollywood && episodesCount == 1 || containsMovie) {
|
||||
episodesNames.add("Movie");
|
||||
} else if (containsHollywood && episodesCount > 1) {
|
||||
episodesNames.add("Episode $number");
|
||||
}
|
||||
|
||||
episodesUrls.add(
|
||||
"${anime.baseUrl}/api/DramaList/Episode/$id.png?err=false&ts=&time=");
|
||||
}
|
||||
anime.urls = episodesUrls;
|
||||
anime.names = episodesNames;
|
||||
anime.chaptersDateUploads = [];
|
||||
return anime;
|
||||
}
|
||||
|
||||
getVideoList(MangaModel anime) async {
|
||||
final datas = {"url": anime.link};
|
||||
|
||||
final res = await MBridge.http('GET', json.encode(datas));
|
||||
|
||||
if (res.isEmpty) {
|
||||
return [];
|
||||
}
|
||||
final id = MBridge.substringAfter(
|
||||
MBridge.substringBefore(anime.link, ".png"), "Episode/");
|
||||
final jsonRes = json.decode(res);
|
||||
final subRes = await MBridge.http(
|
||||
'GET', json.encode({"url": "${anime.baseUrl}/api/Sub/$id"}));
|
||||
var jsonSubRes = json.decode(subRes);
|
||||
|
||||
List<TrackModel> subtitles = [];
|
||||
|
||||
for (var sub in jsonSubRes) {
|
||||
try {
|
||||
final subUrl = sub["src"];
|
||||
final label = sub["label"];
|
||||
TrackModel subtitle = TrackModel();
|
||||
subtitle
|
||||
..label = label
|
||||
..file = subUrl;
|
||||
subtitles.add(subtitle);
|
||||
} catch (_) {}
|
||||
}
|
||||
|
||||
final videoUrl = jsonRes["Video"];
|
||||
VideoModel video = VideoModel();
|
||||
video
|
||||
..url = videoUrl
|
||||
..originalUrl = videoUrl
|
||||
..quality = "kisskh"
|
||||
..subtitles = subtitles
|
||||
..headers = {
|
||||
"referer": "https://kisskh.me/",
|
||||
"origin": "https://kisskh.me"
|
||||
};
|
||||
return [video];
|
||||
}
|
||||
|
||||
searchAnime(MangaModel anime) async {
|
||||
final data = {
|
||||
"url": "${anime.baseUrl}/api/DramaList/Search?q=${anime.query}&type=0"
|
||||
};
|
||||
final res = await MBridge.http('GET', json.encode(data));
|
||||
if (res.isEmpty) {
|
||||
return anime;
|
||||
}
|
||||
var jsonRes = json.decode(res) as List;
|
||||
|
||||
anime.names = jsonRes.map((e) => e["title"]).toList();
|
||||
|
||||
anime.images = jsonRes.map((e) => e["thumbnail"] ?? "").toList();
|
||||
|
||||
anime.urls = jsonRes
|
||||
.map((e) => "${anime.baseUrl}/api/DramaList/Drama/${e["id"]}?isq=false")
|
||||
.toList();
|
||||
|
||||
return anime;
|
||||
}
|
||||
17
anime/src/en/kisskh/source.dart
Normal file
17
anime/src/en/kisskh/source.dart
Normal file
@@ -0,0 +1,17 @@
|
||||
import '../../../../model/source.dart';
|
||||
import '../../../../utils/utils.dart';
|
||||
|
||||
Source get kisskhSource => _kisskhSource;
|
||||
const kisskhVersion = "0.0.1";
|
||||
const kisskhSourceCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/en/kisskh/kisskh-v$kisskhVersion.dart";
|
||||
Source _kisskhSource = Source(
|
||||
name: "KissKH",
|
||||
baseUrl: "https://kisskh.co",
|
||||
lang: "en",
|
||||
typeSource: "single",
|
||||
iconUrl: getIconUrl("kisskh", "en"),
|
||||
sourceCodeUrl: kisskhSourceCodeUrl,
|
||||
version: kisskhVersion,
|
||||
appMinVerReq: "0.0.48",
|
||||
isManga: false);
|
||||
BIN
icons/mangayomi-en-kisskh.png
Normal file
BIN
icons/mangayomi-en-kisskh.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
Reference in New Issue
Block a user