This commit is contained in:
kodjomoustapha
2023-12-20 18:17:40 +01:00
parent 2f9703a850
commit 787ef77a7e
9 changed files with 71 additions and 159 deletions

View File

@@ -145,13 +145,10 @@ class DataLifeEngine extends MProvider {
}
MPages animeFromElement(String res, String baseUrl) {
final htmls = querySelectorAll(res,
selector: "div#dle-content > div.mov",
typeElement: 1,
attributes: "",
typeRegExp: 0);
final htmls = parseHtml(res).select("div#dle-content > div.mov");
List<MManga> animeList = [];
for (var html in htmls) {
for (var h in htmls) {
final html = h.innerHtml;
final url = xpath(html, '//a/@href').first;
final name = xpath(html, '//a/text()').first;
final image = xpath(html, '//div[contains(@class,"mov")]/img/@src').first;

View File

@@ -121,14 +121,11 @@ class DopeFlix extends MProvider {
"${preferenceBaseUrl(source.id)}/ajax/v2/season/episodes/$seasonId"
};
final html = await http('GET', json.encode(dataE));
final epsHtml = querySelectorAll(html,
selector: "div.eps-item",
typeElement: 2,
attributes: "",
typeRegExp: 0);
print(
"${preferenceBaseUrl(source.id)}/ajax/v2/season/episodes/$seasonId");
for (var epHtml in epsHtml) {
final epsHtmls = parseHtml(html).select("div.eps-item");
for (var epH in epsHtmls) {
final epHtml = epH.outerHtml;
final episodeId =
xpath(epHtml, '//div[contains(@class,"eps-item")]/@data-id')
.first;
@@ -152,13 +149,11 @@ class DopeFlix extends MProvider {
url = Uri.parse(url).path;
final res = await http(
'GET', json.encode({"url": "${preferenceBaseUrl(source.id)}/$url"}));
final vidsHtml = querySelectorAll(res,
selector: "ul.fss-list a.btn-play",
typeElement: 2,
attributes: "",
typeRegExp: 0);
final vidsHtmls = parseHtml(res).select("ul.fss-list a.btn-play");
List<MVideo> videos = [];
for (var vidHtml in vidsHtml) {
for (var vidH in vidsHtmls) {
final vidHtml = vidH.outerHtml;
final id = xpath(vidHtml, '//a/@data-id').first;
final name = xpath(vidHtml, '//span/text()').first;
final resSource = await http(

View File

@@ -155,36 +155,17 @@ class ZoroTheme extends MProvider {
final resEp = await http('GET', json.encode(dataEp));
final html = json.decode(resEp)["html"];
final epElements = parseHtml(html).select("a.ep-item");
final epUrls = querySelectorAll(html,
selector: "a.ep-item",
typeElement: 3,
attributes: "href",
typeRegExp: 0);
final numbers = querySelectorAll(html,
selector: "a.ep-item",
typeElement: 3,
attributes: "data-number",
typeRegExp: 0);
final titles = querySelectorAll(html,
selector: "a.ep-item",
typeElement: 3,
attributes: "title",
typeRegExp: 0);
List<String> episodes = [];
for (var i = 0; i < titles.length; i++) {
final number = numbers[i];
final title = titles[i];
episodes.add("Episode $number: $title");
}
List<MChapter>? episodesList = [];
for (var i = 0; i < episodes.length; i++) {
for (var epElement in epElements) {
final number = epElement.attr("data-number");
final title = epElement.attr("title");
MChapter episode = MChapter();
episode.name = episodes[i];
episode.url = epUrls[i];
episode.name = "Episode $number: $title";
episode.url = epElement.getHref;
episodesList.add(episode);
}
@@ -204,31 +185,15 @@ class ZoroTheme extends MProvider {
final res = await http('GET', json.encode(datas));
final html = json.decode(res)["html"];
final names = querySelectorAll(html,
selector: "div.server-item",
typeElement: 0,
attributes: "",
typeRegExp: 0);
final ids = querySelectorAll(html,
selector: "div.server-item",
typeElement: 3,
attributes: "data-id",
typeRegExp: 0);
final subDubs = querySelectorAll(html,
selector: "div.server-item",
typeElement: 3,
attributes: "data-type",
typeRegExp: 0);
final serverElements = parseHtml(html).select("div.server-item");
List<MVideo> videos = [];
final hosterSelection = preferenceHosterSelection(source.id);
final typeSelection = preferenceTypeSelection(source.id);
for (var i = 0; i < names.length; i++) {
final name = names[i];
final id = ids[i];
final subDub = subDubs[i];
for (var serverElement in serverElements) {
final name = serverElement.text;
final id = serverElement.attr("data-id");
final subDub = serverElement.attr("data-type");
final datasE = {
"url":
"${source.baseUrl}/ajax${ajaxRoute('${source.baseUrl}')}/episode/sources?id=$id",
@@ -237,7 +202,6 @@ class ZoroTheme extends MProvider {
final resE = await http('GET', json.encode(datasE));
String epUrl = substringBefore(substringAfter(resE, "\"link\":\""), "\"");
List<MVideo> a = [];
if (hosterSelection.contains(name) && typeSelection.contains(subDub)) {

View File

@@ -119,26 +119,21 @@ class Aniwave extends MProvider {
}
anime.genre = xpath(res, '//div[contains(text(),"Genre")]/span/a/text()');
final id = querySelectorAll(res,
selector: "div[data-id]",
typeElement: 3,
attributes: "data-id",
typeRegExp: 0)
.first;
final id = parseHtml(res).selectFirst("div[data-id]").attr("data-id");
final encrypt = vrfEncrypt(id);
final vrf = "vrf=${Uri.encodeComponent(encrypt)}";
final dataEp = {
"url": "${preferenceBaseUrl(source.id)}/ajax/episode/list/$id?$vrf"
};
final resEp = await http('GET', json.encode(dataEp));
final html = json.decode(resEp)["result"];
List<MChapter>? episodesList = [];
final epsHtml = querySelectorAll(html,
selector: "div.episodes ul > li",
typeElement: 2,
attributes: "",
typeRegExp: 0);
for (var epHtml in epsHtml) {
final epsHtmls = parseHtml(html).select("div.episodes ul > li");
for (var epH in epsHtmls) {
final epHtml = epH.outerHtml;
final title = xpath(epHtml, '//li/@title').isNotEmpty
? xpath(epHtml, '//li/@title').first
: "";
@@ -183,13 +178,12 @@ class Aniwave extends MProvider {
"url": "${preferenceBaseUrl(source.id)}/ajax/server/list/$ids?$vrf"
}));
final html = json.decode(res)["result"];
final vidsHtml = querySelectorAll(html,
selector: "div.servers > div",
typeElement: 2,
attributes: "",
typeRegExp: 0);
final vidsHtmls = parseHtml(html).select("div.servers > div");
List<MVideo> videos = [];
for (var vidHtml in vidsHtml) {
for (var vidH in vidsHtmls) {
final vidHtml = vidH.outerHtml;
final type = xpath(vidHtml, '//div/@data-type').first;
final serversIds = xpath(vidHtml, '//li/@data-link-id');
for (int i = 0; i < serversIds.length; i++) {

View File

@@ -197,12 +197,9 @@ class UHDMovies extends MProvider {
"url": nextUrl,
"headers": {"referer": url, "Cookie": "$cookieName=$cookieValue"}
}));
final lastRes = querySelectorAll(response,
selector: "meta[http-equiv]",
typeElement: 3,
attributes: "content",
typeRegExp: 0)
.first;
final lastRes =
parseHtml(response).selectFirst("meta[http-equiv]").attr("content");
return substringAfter(lastRes, "url=");
}

View File

@@ -197,12 +197,7 @@ class AnimeSaturn extends MProvider {
if (resVid.contains("jwplayer(")) {
masterUrl = substringBefore(substringAfter(resVid, "file: \""), "\"");
} else {
masterUrl = querySelectorAll(resVid,
selector: "source",
typeElement: 3,
attributes: "src",
typeRegExp: 0)
.first;
masterUrl = parseHtml(resVid).selectFirst("source").attr("src");
}
List<MVideo> videos = [];

View File

@@ -148,14 +148,13 @@ class HeanCms extends MProvider {
res = await http('GET', json.encode(data));
List<String> pageUrls = [];
var imagesRes = querySelectorAll(res,
selector: "div.min-h-screen > div.container > p.items-center",
typeElement: 1,
attributes: "",
typeRegExp: 0);
pageUrls = xpath(imagesRes.first, '//img/@src');
var imagesRes = parseHtml(res)
.selectFirst("div.min-h-screen > div.container > p.items-center")
.innerHtml;
pageUrls.addAll(xpath(imagesRes.first, '//img/@data-src'));
pageUrls = xpath(imagesRes, '//img/@src');
pageUrls.addAll(xpath(imagesRes, '//img/@data-src'));
return pageUrls.where((e) => e.isNotEmpty).toList();
}

View File

@@ -145,12 +145,11 @@ class MangaReader extends MProvider {
.replaceAll("[Add, ]", "");
}
final description = querySelectorAll(res,
selector: ".desc, .entry-content[itemprop=description]",
typeElement: 0,
attributes: "",
typeRegExp: 0);
if (description.isNotEmpty) {
final description = parseHtml(res)
.selectFirst(".desc, .entry-content[itemprop=description]")
?.text;
if (description != null) {
manga.description = description.first;
}

View File

@@ -128,25 +128,18 @@ class Batoto extends MProvider {
.split(",");
manga.description = xpath(res, '//*[@class="limit-html"]/text()').first;
List<String> chapsElement = querySelectorAll(res,
selector: "div.main div.p-2",
typeElement: 2,
attributes: "",
typeRegExp: 0);
final chapElements = parseHtml(res).select("div.main div.p-2");
List<String> times = [];
List<String> chapsUrls = [];
List<String> chapsNames = [];
List<String> scanlators = [];
for (var element in chapsElement) {
final urlElement = querySelectorAll(element,
selector: "a.chapt",
typeElement: 2,
attributes: "",
typeRegExp: 0)
.first;
for (MElement el in chapElements) {
final chapHtml = el.selectFirst("a.chapt").outerHtml;
final element = el.outerHtml;
final group = xpath(element, '//*[@class="extra"]/a/text()').first;
final name = xpath(urlElement, '//a/text()').first;
final url = xpath(urlElement, '//a/@href').first;
final name = xpath(chapHtml, '//a/text()').first;
final url = xpath(chapHtml, '//a/@href').first;
final time =
xpath(element, '//*[@class="extra"]/i[@class="ps-3"]/text()').first;
times.add(time);
@@ -201,46 +194,25 @@ class Batoto extends MProvider {
MPages mangaElementM(String res, MSource source) async {
final lang = source.lang.replaceAll("-", "_");
var resB = querySelectorAll(res,
selector: "div#series-list div.col",
typeElement: 2,
attributes: "",
typeRegExp: 0);
final mangaElements = parseHtml(res).select("div#series-list div.col");
List<String> images = [];
List<String> urls = [];
List<String> names = [];
for (var element in resB) {
for (MElement element in mangaElements) {
if (source.lang == "all" ||
source.lang == "en" && element.contains('no-flag') ||
element.contains('data-lang="$lang"')) {
final item = querySelectorAll(element,
selector: "a.item-cover",
typeElement: 2,
attributes: "",
typeRegExp: 0)
.first;
final img = querySelectorAll(item,
selector: "img",
typeElement: 3,
attributes: "src",
typeRegExp: 0)
.first;
final url = querySelectorAll(item,
selector: "a",
typeElement: 3,
attributes: "href",
typeRegExp: 0)
.first;
source.lang == "en" && element.outerHtml.contains('no-flag') ||
element.outerHtml.contains('data-lang="$lang"')) {
final itemHtml = element.selectFirst("a.item-cover").outerHtml;
final img = parseHtml(itemHtml).selectFirst("img").getSrc;
final url = parseHtml(itemHtml).selectFirst("a").getHref;
images.add(img);
urls.add(url);
final title = querySelectorAll(element,
selector: "a.item-title",
typeElement: 0,
attributes: "",
typeRegExp: 0)
.first;
urls.add(url.replaceAll(";", "&"));
final title = element.selectFirst("a.item-title").text;
names.add(title);
}
}