Add New sources: BeastScan (AR), Lelmanga (FR) & remove unused code

This commit is contained in:
kodjomoustapha
2023-11-01 17:13:24 +01:00
parent 615d63179b
commit 8ae72d12e7
21 changed files with 210 additions and 321 deletions

View File

@@ -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();
}

View File

@@ -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() {

View File

@@ -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() {

View File

@@ -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() {

View File

@@ -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() {

View File

@@ -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}

View File

@@ -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() {