mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 10:51:17 +00:00
Add New sources: BeastScan (AR), Lelmanga (FR) & remove unused code
This commit is contained in:
@@ -22,9 +22,7 @@ class ZoroTheme extends MProvider {
|
||||
|
||||
@override
|
||||
Future<MPages> search(MSource source, String query, int page) async {
|
||||
final data = {
|
||||
"url": "${source.baseUrl}/search?keyword=$query&page=$page"
|
||||
};
|
||||
final data = {"url": "${source.baseUrl}/search?keyword=$query&page=$page"};
|
||||
final res = await http('GET', json.encode(data));
|
||||
|
||||
return animeElementM(res);
|
||||
@@ -44,7 +42,7 @@ class ZoroTheme extends MProvider {
|
||||
final status = xpath(res,
|
||||
'//*[@class="anisc-info"]/div[contains(text(),"Status:")]/span[2]/text()')
|
||||
.first;
|
||||
|
||||
|
||||
anime.status = parseStatus(status, statusList);
|
||||
anime.author = xpath(res,
|
||||
'//*[@class="anisc-info"]/div[contains(text(),"Studios:")]/span/text()')
|
||||
@@ -150,8 +148,7 @@ class ZoroTheme extends MProvider {
|
||||
};
|
||||
|
||||
final resE = await http('GET', json.encode(datasE));
|
||||
String epUrl = substringBefore(
|
||||
substringAfter(resE, "\"link\":\""), "\"");
|
||||
String epUrl = substringBefore(substringAfter(resE, "\"link\":\""), "\"");
|
||||
print(epUrl);
|
||||
List<MVideo> a = [];
|
||||
if (name.contains("Vidstreaming")) {
|
||||
@@ -167,11 +164,6 @@ class ZoroTheme extends MProvider {
|
||||
return videos;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<String>> getPageList(MSource source, String url) async {
|
||||
return [];
|
||||
}
|
||||
|
||||
MPages animeElementM(String res) {
|
||||
List<MManga> animeList = [];
|
||||
|
||||
@@ -190,8 +182,8 @@ class ZoroTheme extends MProvider {
|
||||
anime.link = urls[i];
|
||||
animeList.add(anime);
|
||||
}
|
||||
final nextPage = xpath(
|
||||
res, '//li[@class="page-item"]/a[@title="Next"]/@href', "");
|
||||
final nextPage =
|
||||
xpath(res, '//li[@class="page-item"]/a[@title="Next"]/@href', "");
|
||||
return MPages(animeList, !nextPage.isEmpty);
|
||||
}
|
||||
|
||||
@@ -206,4 +198,3 @@ class ZoroTheme extends MProvider {
|
||||
ZoroTheme main() {
|
||||
return ZoroTheme();
|
||||
}
|
||||
|
||||
|
||||
@@ -94,11 +94,9 @@ class OkAnime extends MProvider {
|
||||
if (status.isNotEmpty) {
|
||||
anime.status = parseStatus(status.first, statusList);
|
||||
}
|
||||
anime.description =
|
||||
xpath(res, '//*[@class="review-content"]/text()').first;
|
||||
anime.description = xpath(res, '//*[@class="review-content"]/text()').first;
|
||||
|
||||
anime.genre =
|
||||
xpath(res, '//*[@class="review-author-info"]/a/text()');
|
||||
anime.genre = xpath(res, '//*[@class="review-author-info"]/a/text()');
|
||||
final epUrls = xpath(res,
|
||||
'//*[contains(@class,"anime-card")]/div[@class="anime-title")]/h5/a/@href')
|
||||
.reversed
|
||||
@@ -125,8 +123,7 @@ class OkAnime extends MProvider {
|
||||
final res = await http('GET', json.encode({"url": url}));
|
||||
|
||||
final urls = xpath(res, '//*[@id="streamlinks"]/a/@data-src');
|
||||
final qualities =
|
||||
xpath(res, '//*[@id="streamlinks"]/a/span/text()');
|
||||
final qualities = xpath(res, '//*[@id="streamlinks"]/a/span/text()');
|
||||
|
||||
List<MVideo> videos = [];
|
||||
for (var i = 0; i < urls.length; i++) {
|
||||
@@ -172,11 +169,6 @@ class OkAnime extends MProvider {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<String>> getPageList(MSource source, String url) async {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
OkAnime main() {
|
||||
|
||||
@@ -34,8 +34,8 @@ class GogoAnime extends MProvider {
|
||||
final res = await http('GET', json.encode(data));
|
||||
|
||||
List<MManga> animeList = [];
|
||||
final urls = xpath(
|
||||
res, '//*[@class="added_series_body popular"]/ul/li/a[1]/@href');
|
||||
final urls =
|
||||
xpath(res, '//*[@class="added_series_body popular"]/ul/li/a[1]/@href');
|
||||
final names = xpath(
|
||||
res, '//*[//*[@class="added_series_body popular"]/ul/li/a[1]/@title');
|
||||
List<String> images = [];
|
||||
@@ -111,8 +111,7 @@ class GogoAnime extends MProvider {
|
||||
final dataEp = {"url": urlEp};
|
||||
final resEp = await http('GET', json.encode(dataEp));
|
||||
|
||||
final epUrls =
|
||||
xpath(resEp, '//*[@id="episode_related"]/li/a/@href');
|
||||
final epUrls = xpath(resEp, '//*[@id="episode_related"]/li/a/@href');
|
||||
final names = xpath(
|
||||
resEp, '//*[@id="episode_related"]/li/a/div[@class="name"]/text()');
|
||||
List<String> episodes = [];
|
||||
@@ -139,8 +138,7 @@ class GogoAnime extends MProvider {
|
||||
final res = await http('GET', json.encode(datas));
|
||||
final serverUrls =
|
||||
xpath(res, '//*[@class="anime_muti_link"]/ul/li/a/@data-video');
|
||||
final classNames =
|
||||
xpath(res, '//*[@class="anime_muti_link"]/ul/li/@class');
|
||||
final classNames = xpath(res, '//*[@class="anime_muti_link"]/ul/li/@class');
|
||||
List<MVideo> videos = [];
|
||||
for (var i = 0; i < classNames.length; i++) {
|
||||
final name = classNames[i];
|
||||
@@ -160,11 +158,6 @@ class GogoAnime extends MProvider {
|
||||
|
||||
return videos;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<String>> getPageList(MSource source, String url) async {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
GogoAnime main() {
|
||||
|
||||
@@ -126,8 +126,7 @@ class KissKh extends MProvider {
|
||||
final datas = {"url": url};
|
||||
|
||||
final res = await http('GET', json.encode(datas));
|
||||
final id = substringAfter(
|
||||
substringBefore(url, ".png"), "Episode/");
|
||||
final id = substringAfter(substringBefore(url, ".png"), "Episode/");
|
||||
final jsonRes = json.decode(res);
|
||||
|
||||
final subRes = await http(
|
||||
@@ -160,11 +159,6 @@ class KissKh extends MProvider {
|
||||
};
|
||||
return [video];
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<String>> getPageList(MSource source, String url) async {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
KissKh main() {
|
||||
|
||||
@@ -60,8 +60,7 @@ class AnimesUltra extends MProvider {
|
||||
List<MManga> animeList = [];
|
||||
final urls = xpath(res, '//*[@class="film-poster"]/a/@href');
|
||||
final names = xpath(res, '//*[@class="film-poster"]/a/@title');
|
||||
final images =
|
||||
xpath(res, '//*[@class="film-poster"]/img/@data-src');
|
||||
final images = xpath(res, '//*[@class="film-poster"]/img/@data-src');
|
||||
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
MManga anime = MManga();
|
||||
@@ -86,8 +85,7 @@ class AnimesUltra extends MProvider {
|
||||
final res = await http('GET', json.encode(data));
|
||||
MManga anime = MManga();
|
||||
anime.description =
|
||||
xpath(res, '//*[@class="film-description m-hide"]/text()')
|
||||
.first;
|
||||
xpath(res, '//*[@class="film-description m-hide"]/text()').first;
|
||||
|
||||
final status = xpath(res,
|
||||
'//*[@class="item item-title" and contains(text(),"Status:")]/span[2]/text()')
|
||||
@@ -101,9 +99,8 @@ class AnimesUltra extends MProvider {
|
||||
final urlEp = url.replaceAll('.html', '/episode-1.html');
|
||||
final resEpWebview =
|
||||
await getHtmlViaWebview(urlEp, '//*[@class="ss-list"]/a/@href');
|
||||
final epUrls = xpath(resEpWebview, '//*[@class="ss-list"]/a/@href')
|
||||
.reversed
|
||||
.toList();
|
||||
final epUrls =
|
||||
xpath(resEpWebview, '//*[@class="ss-list"]/a/@href').reversed.toList();
|
||||
final names = xpath(resEpWebview,
|
||||
'//*[@class="ss-list"]/a/div[@class="ssli-detail"]/div/text()')
|
||||
.reversed
|
||||
@@ -126,15 +123,14 @@ class AnimesUltra extends MProvider {
|
||||
final resWebview = await getHtmlViaWebview(
|
||||
url, '//*[@class="ps__-list"]/div/@data-server-id');
|
||||
|
||||
final serverIds = xpath(
|
||||
resWebview, '//*[@class="ps__-list"]/div/@data-server-id');
|
||||
final serverIds =
|
||||
xpath(resWebview, '//*[@class="ps__-list"]/div/@data-server-id');
|
||||
final serverNames =
|
||||
xpath(resWebview, '//*[@class="ps__-list"]/div/a/text()');
|
||||
List<String> serverUrls = [];
|
||||
for (var id in serverIds) {
|
||||
final serversUrls =
|
||||
xpath(resWebview, '//*[@id="content_player_${id}"]/text()')
|
||||
.first;
|
||||
xpath(resWebview, '//*[@id="content_player_${id}"]/text()').first;
|
||||
serverUrls.add(serversUrls);
|
||||
}
|
||||
List<MVideo> videos = [];
|
||||
@@ -144,10 +140,8 @@ class AnimesUltra extends MProvider {
|
||||
|
||||
List<MVideo> a = [];
|
||||
if (name.contains("Sendvid")) {
|
||||
a = await sendVidExtractor(
|
||||
url.replaceAll("https:////", "https://"),
|
||||
json.encode({"Referer": "${source.baseUrl}/"}),
|
||||
"");
|
||||
a = await sendVidExtractor(url.replaceAll("https:////", "https://"),
|
||||
json.encode({"Referer": "${source.baseUrl}/"}), "");
|
||||
} else if (name.contains("Sibnet")) {
|
||||
a = await sibnetExtractor(
|
||||
"https://video.sibnet.ru/shell.php?videoid=$url");
|
||||
@@ -159,11 +153,6 @@ class AnimesUltra extends MProvider {
|
||||
|
||||
return videos;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<String>> getPageList(MSource source, String url) async {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
AnimesUltra main() {
|
||||
|
||||
@@ -168,11 +168,6 @@ class FrAnime extends MProvider {
|
||||
return videos;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<String>> getPageList(MSource source, String url) async {
|
||||
return [];
|
||||
}
|
||||
|
||||
MPages animeResList(String res) {
|
||||
final statusList = [
|
||||
{"EN COURS": 0, "TERMINÉ": 1}
|
||||
|
||||
@@ -14,10 +14,10 @@ class OtakuFr extends MProvider {
|
||||
List<MManga> animeList = [];
|
||||
final urls =
|
||||
xpath(res, '//*[@class="list"]/article/div/div/figure/a/@href');
|
||||
final names = xpath(
|
||||
res, '//*[@class="list"]/article/div/div/figure/a/img/@title');
|
||||
final images = xpath(
|
||||
res, '//*[@class="list"]/article/div/div/figure/a/img/@src');
|
||||
final names =
|
||||
xpath(res, '//*[@class="list"]/article/div/div/figure/a/img/@title');
|
||||
final images =
|
||||
xpath(res, '//*[@class="list"]/article/div/div/figure/a/img/@src');
|
||||
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
MManga anime = MManga();
|
||||
@@ -57,8 +57,7 @@ class OtakuFr extends MProvider {
|
||||
.replaceAll(' (Vf)', '')
|
||||
.replaceAll(' (Vostfr)', ''));
|
||||
}
|
||||
final images =
|
||||
xpath(res, '//*[@class="episode"]/div/figure/a/img/@src');
|
||||
final images = xpath(res, '//*[@class="episode"]/div/figure/a/img/@src');
|
||||
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
MManga anime = MManga();
|
||||
@@ -74,18 +73,17 @@ class OtakuFr extends MProvider {
|
||||
@override
|
||||
Future<MPages> search(MSource source, String query, int page) async {
|
||||
final data = {
|
||||
"url":
|
||||
"${source.baseUrl}/toute-la-liste-affiches/page/$page/?q=$query"
|
||||
"url": "${source.baseUrl}/toute-la-liste-affiches/page/$page/?q=$query"
|
||||
};
|
||||
final res = await http('GET', json.encode(data));
|
||||
|
||||
List<MManga> animeList = [];
|
||||
final urls =
|
||||
xpath(res, '//*[@class="list"]/article/div/div/figure/a/@href');
|
||||
final names = xpath(
|
||||
res, '//*[@class="list"]/article/div/div/figure/a/img/@title');
|
||||
final images = xpath(
|
||||
res, '//*[@class="list"]/article/div/div/figure/a/img/@src');
|
||||
final names =
|
||||
xpath(res, '//*[@class="list"]/article/div/div/figure/a/img/@title');
|
||||
final images =
|
||||
xpath(res, '//*[@class="list"]/article/div/div/figure/a/img/@src');
|
||||
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
MManga anime = MManga();
|
||||
@@ -117,10 +115,9 @@ class OtakuFr extends MProvider {
|
||||
res = await http('GET', json.encode(newData));
|
||||
}
|
||||
|
||||
anime.description =
|
||||
xpath(res, '//*[@class="episode fz-sm synop"]/p/text()')
|
||||
.first
|
||||
.replaceAll("Synopsis:", "");
|
||||
anime.description = xpath(res, '//*[@class="episode fz-sm synop"]/p/text()')
|
||||
.first
|
||||
.replaceAll("Synopsis:", "");
|
||||
final status = xpath(res,
|
||||
'//*[@class="list-unstyled"]/li[contains(text(),"Statut")]/text()')
|
||||
.first
|
||||
@@ -129,12 +126,10 @@ class OtakuFr extends MProvider {
|
||||
anime.genre = xpath(res,
|
||||
'//*[@class="list-unstyled"]/li[contains(text(),"Genre")]/ul/li/a/text()');
|
||||
|
||||
final epUrls =
|
||||
xpath(res, '//*[@class="list-episodes list-group"]/a/@href');
|
||||
final dates = xpath(
|
||||
res, '//*[@class="list-episodes list-group"]/a/span/text()');
|
||||
final names =
|
||||
xpath(res, '//*[@class="list-episodes list-group"]/a/text()');
|
||||
final epUrls = xpath(res, '//*[@class="list-episodes list-group"]/a/@href');
|
||||
final dates =
|
||||
xpath(res, '//*[@class="list-episodes list-group"]/a/span/text()');
|
||||
final names = xpath(res, '//*[@class="list-episodes list-group"]/a/text()');
|
||||
List<String> episodes = [];
|
||||
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
@@ -162,8 +157,7 @@ class OtakuFr extends MProvider {
|
||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
||||
final res = await http('GET', json.encode({"url": url}));
|
||||
|
||||
final servers =
|
||||
xpath(res, '//*[@id="nav-tabContent"]/div/iframe/@src');
|
||||
final servers = xpath(res, '//*[@id="nav-tabContent"]/div/iframe/@src');
|
||||
List<MVideo> videos = [];
|
||||
for (var url in servers) {
|
||||
final datasServer = {
|
||||
@@ -195,11 +189,6 @@ class OtakuFr extends MProvider {
|
||||
String fixUrl(String url) {
|
||||
return regExp(url, r"^(?:(?:https?:)?//|www\.)", 'https://', 0, 0);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<String>> getPageList(MSource source, String url) async {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
OtakuFr main() {
|
||||
|
||||
Reference in New Issue
Block a user