mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 10:51:17 +00:00
Refactor
This commit is contained in:
@@ -145,13 +145,10 @@ class DataLifeEngine extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MPages animeFromElement(String res, String baseUrl) {
|
MPages animeFromElement(String res, String baseUrl) {
|
||||||
final htmls = querySelectorAll(res,
|
final htmls = parseHtml(res).select("div#dle-content > div.mov");
|
||||||
selector: "div#dle-content > div.mov",
|
|
||||||
typeElement: 1,
|
|
||||||
attributes: "",
|
|
||||||
typeRegExp: 0);
|
|
||||||
List<MManga> animeList = [];
|
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 url = xpath(html, '//a/@href').first;
|
||||||
final name = xpath(html, '//a/text()').first;
|
final name = xpath(html, '//a/text()').first;
|
||||||
final image = xpath(html, '//div[contains(@class,"mov")]/img/@src').first;
|
final image = xpath(html, '//div[contains(@class,"mov")]/img/@src').first;
|
||||||
|
|||||||
@@ -121,14 +121,11 @@ class DopeFlix extends MProvider {
|
|||||||
"${preferenceBaseUrl(source.id)}/ajax/v2/season/episodes/$seasonId"
|
"${preferenceBaseUrl(source.id)}/ajax/v2/season/episodes/$seasonId"
|
||||||
};
|
};
|
||||||
final html = await http('GET', json.encode(dataE));
|
final html = await http('GET', json.encode(dataE));
|
||||||
final epsHtml = querySelectorAll(html,
|
|
||||||
selector: "div.eps-item",
|
final epsHtmls = parseHtml(html).select("div.eps-item");
|
||||||
typeElement: 2,
|
|
||||||
attributes: "",
|
for (var epH in epsHtmls) {
|
||||||
typeRegExp: 0);
|
final epHtml = epH.outerHtml;
|
||||||
print(
|
|
||||||
"${preferenceBaseUrl(source.id)}/ajax/v2/season/episodes/$seasonId");
|
|
||||||
for (var epHtml in epsHtml) {
|
|
||||||
final episodeId =
|
final episodeId =
|
||||||
xpath(epHtml, '//div[contains(@class,"eps-item")]/@data-id')
|
xpath(epHtml, '//div[contains(@class,"eps-item")]/@data-id')
|
||||||
.first;
|
.first;
|
||||||
@@ -152,13 +149,11 @@ class DopeFlix extends MProvider {
|
|||||||
url = Uri.parse(url).path;
|
url = Uri.parse(url).path;
|
||||||
final res = await http(
|
final res = await http(
|
||||||
'GET', json.encode({"url": "${preferenceBaseUrl(source.id)}/$url"}));
|
'GET', json.encode({"url": "${preferenceBaseUrl(source.id)}/$url"}));
|
||||||
final vidsHtml = querySelectorAll(res,
|
final vidsHtmls = parseHtml(res).select("ul.fss-list a.btn-play");
|
||||||
selector: "ul.fss-list a.btn-play",
|
|
||||||
typeElement: 2,
|
|
||||||
attributes: "",
|
|
||||||
typeRegExp: 0);
|
|
||||||
List<MVideo> videos = [];
|
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 id = xpath(vidHtml, '//a/@data-id').first;
|
||||||
final name = xpath(vidHtml, '//span/text()').first;
|
final name = xpath(vidHtml, '//span/text()').first;
|
||||||
final resSource = await http(
|
final resSource = await http(
|
||||||
|
|||||||
@@ -155,36 +155,17 @@ class ZoroTheme extends MProvider {
|
|||||||
final resEp = await http('GET', json.encode(dataEp));
|
final resEp = await http('GET', json.encode(dataEp));
|
||||||
|
|
||||||
final html = json.decode(resEp)["html"];
|
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 = [];
|
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();
|
MChapter episode = MChapter();
|
||||||
episode.name = episodes[i];
|
episode.name = "Episode $number: $title";
|
||||||
episode.url = epUrls[i];
|
episode.url = epElement.getHref;
|
||||||
episodesList.add(episode);
|
episodesList.add(episode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,31 +185,15 @@ class ZoroTheme extends MProvider {
|
|||||||
final res = await http('GET', json.encode(datas));
|
final res = await http('GET', json.encode(datas));
|
||||||
final html = json.decode(res)["html"];
|
final html = json.decode(res)["html"];
|
||||||
|
|
||||||
final names = querySelectorAll(html,
|
final serverElements = parseHtml(html).select("div.server-item");
|
||||||
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);
|
|
||||||
|
|
||||||
List<MVideo> videos = [];
|
List<MVideo> videos = [];
|
||||||
final hosterSelection = preferenceHosterSelection(source.id);
|
final hosterSelection = preferenceHosterSelection(source.id);
|
||||||
final typeSelection = preferenceTypeSelection(source.id);
|
final typeSelection = preferenceTypeSelection(source.id);
|
||||||
for (var i = 0; i < names.length; i++) {
|
for (var serverElement in serverElements) {
|
||||||
final name = names[i];
|
final name = serverElement.text;
|
||||||
final id = ids[i];
|
final id = serverElement.attr("data-id");
|
||||||
final subDub = subDubs[i];
|
final subDub = serverElement.attr("data-type");
|
||||||
final datasE = {
|
final datasE = {
|
||||||
"url":
|
"url":
|
||||||
"${source.baseUrl}/ajax${ajaxRoute('${source.baseUrl}')}/episode/sources?id=$id",
|
"${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));
|
final resE = await http('GET', json.encode(datasE));
|
||||||
String epUrl = substringBefore(substringAfter(resE, "\"link\":\""), "\"");
|
String epUrl = substringBefore(substringAfter(resE, "\"link\":\""), "\"");
|
||||||
|
|
||||||
List<MVideo> a = [];
|
List<MVideo> a = [];
|
||||||
|
|
||||||
if (hosterSelection.contains(name) && typeSelection.contains(subDub)) {
|
if (hosterSelection.contains(name) && typeSelection.contains(subDub)) {
|
||||||
|
|||||||
@@ -119,26 +119,21 @@ class Aniwave extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
anime.genre = xpath(res, '//div[contains(text(),"Genre")]/span/a/text()');
|
anime.genre = xpath(res, '//div[contains(text(),"Genre")]/span/a/text()');
|
||||||
final id = querySelectorAll(res,
|
final id = parseHtml(res).selectFirst("div[data-id]").attr("data-id");
|
||||||
selector: "div[data-id]",
|
|
||||||
typeElement: 3,
|
|
||||||
attributes: "data-id",
|
|
||||||
typeRegExp: 0)
|
|
||||||
.first;
|
|
||||||
final encrypt = vrfEncrypt(id);
|
final encrypt = vrfEncrypt(id);
|
||||||
final vrf = "vrf=${Uri.encodeComponent(encrypt)}";
|
final vrf = "vrf=${Uri.encodeComponent(encrypt)}";
|
||||||
final dataEp = {
|
final dataEp = {
|
||||||
"url": "${preferenceBaseUrl(source.id)}/ajax/episode/list/$id?$vrf"
|
"url": "${preferenceBaseUrl(source.id)}/ajax/episode/list/$id?$vrf"
|
||||||
};
|
};
|
||||||
|
|
||||||
final resEp = await http('GET', json.encode(dataEp));
|
final resEp = await http('GET', json.encode(dataEp));
|
||||||
final html = json.decode(resEp)["result"];
|
final html = json.decode(resEp)["result"];
|
||||||
List<MChapter>? episodesList = [];
|
List<MChapter>? episodesList = [];
|
||||||
final epsHtml = querySelectorAll(html,
|
|
||||||
selector: "div.episodes ul > li",
|
final epsHtmls = parseHtml(html).select("div.episodes ul > li");
|
||||||
typeElement: 2,
|
|
||||||
attributes: "",
|
for (var epH in epsHtmls) {
|
||||||
typeRegExp: 0);
|
final epHtml = epH.outerHtml;
|
||||||
for (var epHtml in epsHtml) {
|
|
||||||
final title = xpath(epHtml, '//li/@title').isNotEmpty
|
final title = xpath(epHtml, '//li/@title').isNotEmpty
|
||||||
? xpath(epHtml, '//li/@title').first
|
? xpath(epHtml, '//li/@title').first
|
||||||
: "";
|
: "";
|
||||||
@@ -183,13 +178,12 @@ class Aniwave extends MProvider {
|
|||||||
"url": "${preferenceBaseUrl(source.id)}/ajax/server/list/$ids?$vrf"
|
"url": "${preferenceBaseUrl(source.id)}/ajax/server/list/$ids?$vrf"
|
||||||
}));
|
}));
|
||||||
final html = json.decode(res)["result"];
|
final html = json.decode(res)["result"];
|
||||||
final vidsHtml = querySelectorAll(html,
|
|
||||||
selector: "div.servers > div",
|
final vidsHtmls = parseHtml(html).select("div.servers > div");
|
||||||
typeElement: 2,
|
|
||||||
attributes: "",
|
|
||||||
typeRegExp: 0);
|
|
||||||
List<MVideo> videos = [];
|
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 type = xpath(vidHtml, '//div/@data-type').first;
|
||||||
final serversIds = xpath(vidHtml, '//li/@data-link-id');
|
final serversIds = xpath(vidHtml, '//li/@data-link-id');
|
||||||
for (int i = 0; i < serversIds.length; i++) {
|
for (int i = 0; i < serversIds.length; i++) {
|
||||||
|
|||||||
@@ -197,12 +197,9 @@ class UHDMovies extends MProvider {
|
|||||||
"url": nextUrl,
|
"url": nextUrl,
|
||||||
"headers": {"referer": url, "Cookie": "$cookieName=$cookieValue"}
|
"headers": {"referer": url, "Cookie": "$cookieName=$cookieValue"}
|
||||||
}));
|
}));
|
||||||
final lastRes = querySelectorAll(response,
|
|
||||||
selector: "meta[http-equiv]",
|
final lastRes =
|
||||||
typeElement: 3,
|
parseHtml(response).selectFirst("meta[http-equiv]").attr("content");
|
||||||
attributes: "content",
|
|
||||||
typeRegExp: 0)
|
|
||||||
.first;
|
|
||||||
return substringAfter(lastRes, "url=");
|
return substringAfter(lastRes, "url=");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -197,12 +197,7 @@ class AnimeSaturn extends MProvider {
|
|||||||
if (resVid.contains("jwplayer(")) {
|
if (resVid.contains("jwplayer(")) {
|
||||||
masterUrl = substringBefore(substringAfter(resVid, "file: \""), "\"");
|
masterUrl = substringBefore(substringAfter(resVid, "file: \""), "\"");
|
||||||
} else {
|
} else {
|
||||||
masterUrl = querySelectorAll(resVid,
|
masterUrl = parseHtml(resVid).selectFirst("source").attr("src");
|
||||||
selector: "source",
|
|
||||||
typeElement: 3,
|
|
||||||
attributes: "src",
|
|
||||||
typeRegExp: 0)
|
|
||||||
.first;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
List<MVideo> videos = [];
|
List<MVideo> videos = [];
|
||||||
|
|||||||
@@ -148,14 +148,13 @@ class HeanCms extends MProvider {
|
|||||||
res = await http('GET', json.encode(data));
|
res = await http('GET', json.encode(data));
|
||||||
|
|
||||||
List<String> pageUrls = [];
|
List<String> pageUrls = [];
|
||||||
var imagesRes = querySelectorAll(res,
|
var imagesRes = parseHtml(res)
|
||||||
selector: "div.min-h-screen > div.container > p.items-center",
|
.selectFirst("div.min-h-screen > div.container > p.items-center")
|
||||||
typeElement: 1,
|
.innerHtml;
|
||||||
attributes: "",
|
|
||||||
typeRegExp: 0);
|
|
||||||
pageUrls = xpath(imagesRes.first, '//img/@src');
|
|
||||||
|
|
||||||
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();
|
return pageUrls.where((e) => e.isNotEmpty).toList();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,12 +145,11 @@ class MangaReader extends MProvider {
|
|||||||
.replaceAll("[Add, ]", "");
|
.replaceAll("[Add, ]", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
final description = querySelectorAll(res,
|
final description = parseHtml(res)
|
||||||
selector: ".desc, .entry-content[itemprop=description]",
|
.selectFirst(".desc, .entry-content[itemprop=description]")
|
||||||
typeElement: 0,
|
?.text;
|
||||||
attributes: "",
|
|
||||||
typeRegExp: 0);
|
if (description != null) {
|
||||||
if (description.isNotEmpty) {
|
|
||||||
manga.description = description.first;
|
manga.description = description.first;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -128,25 +128,18 @@ class Batoto extends MProvider {
|
|||||||
.split(",");
|
.split(",");
|
||||||
manga.description = xpath(res, '//*[@class="limit-html"]/text()').first;
|
manga.description = xpath(res, '//*[@class="limit-html"]/text()').first;
|
||||||
|
|
||||||
List<String> chapsElement = querySelectorAll(res,
|
final chapElements = parseHtml(res).select("div.main div.p-2");
|
||||||
selector: "div.main div.p-2",
|
|
||||||
typeElement: 2,
|
|
||||||
attributes: "",
|
|
||||||
typeRegExp: 0);
|
|
||||||
List<String> times = [];
|
List<String> times = [];
|
||||||
List<String> chapsUrls = [];
|
List<String> chapsUrls = [];
|
||||||
List<String> chapsNames = [];
|
List<String> chapsNames = [];
|
||||||
List<String> scanlators = [];
|
List<String> scanlators = [];
|
||||||
for (var element in chapsElement) {
|
for (MElement el in chapElements) {
|
||||||
final urlElement = querySelectorAll(element,
|
final chapHtml = el.selectFirst("a.chapt").outerHtml;
|
||||||
selector: "a.chapt",
|
final element = el.outerHtml;
|
||||||
typeElement: 2,
|
|
||||||
attributes: "",
|
|
||||||
typeRegExp: 0)
|
|
||||||
.first;
|
|
||||||
final group = xpath(element, '//*[@class="extra"]/a/text()').first;
|
final group = xpath(element, '//*[@class="extra"]/a/text()').first;
|
||||||
final name = xpath(urlElement, '//a/text()').first;
|
final name = xpath(chapHtml, '//a/text()').first;
|
||||||
final url = xpath(urlElement, '//a/@href').first;
|
final url = xpath(chapHtml, '//a/@href').first;
|
||||||
final time =
|
final time =
|
||||||
xpath(element, '//*[@class="extra"]/i[@class="ps-3"]/text()').first;
|
xpath(element, '//*[@class="extra"]/i[@class="ps-3"]/text()').first;
|
||||||
times.add(time);
|
times.add(time);
|
||||||
@@ -201,46 +194,25 @@ class Batoto extends MProvider {
|
|||||||
MPages mangaElementM(String res, MSource source) async {
|
MPages mangaElementM(String res, MSource source) async {
|
||||||
final lang = source.lang.replaceAll("-", "_");
|
final lang = source.lang.replaceAll("-", "_");
|
||||||
|
|
||||||
var resB = querySelectorAll(res,
|
final mangaElements = parseHtml(res).select("div#series-list div.col");
|
||||||
selector: "div#series-list div.col",
|
|
||||||
typeElement: 2,
|
|
||||||
attributes: "",
|
|
||||||
typeRegExp: 0);
|
|
||||||
|
|
||||||
List<String> images = [];
|
List<String> images = [];
|
||||||
List<String> urls = [];
|
List<String> urls = [];
|
||||||
List<String> names = [];
|
List<String> names = [];
|
||||||
|
|
||||||
for (var element in resB) {
|
for (MElement element in mangaElements) {
|
||||||
if (source.lang == "all" ||
|
if (source.lang == "all" ||
|
||||||
source.lang == "en" && element.contains('no-flag') ||
|
source.lang == "en" && element.outerHtml.contains('no-flag') ||
|
||||||
element.contains('data-lang="$lang"')) {
|
element.outerHtml.contains('data-lang="$lang"')) {
|
||||||
final item = querySelectorAll(element,
|
final itemHtml = element.selectFirst("a.item-cover").outerHtml;
|
||||||
selector: "a.item-cover",
|
|
||||||
typeElement: 2,
|
final img = parseHtml(itemHtml).selectFirst("img").getSrc;
|
||||||
attributes: "",
|
|
||||||
typeRegExp: 0)
|
final url = parseHtml(itemHtml).selectFirst("a").getHref;
|
||||||
.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;
|
|
||||||
images.add(img);
|
images.add(img);
|
||||||
urls.add(url);
|
urls.add(url.replaceAll(";", "&"));
|
||||||
final title = querySelectorAll(element,
|
final title = element.selectFirst("a.item-title").text;
|
||||||
selector: "a.item-title",
|
|
||||||
typeElement: 0,
|
|
||||||
attributes: "",
|
|
||||||
typeRegExp: 0)
|
|
||||||
.first;
|
|
||||||
names.add(title);
|
names.add(title);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user