mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 10:51:17 +00:00
+
This commit is contained in:
@@ -8,19 +8,20 @@ class DopeFlix extends MProvider {
|
|||||||
|
|
||||||
final Client client = Client(source);
|
final Client client = Client(source);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get baseUrl => getPreferenceValue(source.id, "preferred_domain");
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${preferenceBaseUrl(source.id)}/${getPreferenceValue(source.id, "preferred_popular_page")}?page=$page")))
|
"$baseUrl/${getPreferenceValue(source.id, "preferred_popular_page")}?page=$page")))
|
||||||
.body;
|
.body;
|
||||||
return parseAnimeList(res);
|
return parseAnimeList(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res =
|
final res = (await client.get(Uri.parse("$baseUrl/home"))).body;
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}/home")))
|
|
||||||
.body;
|
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
final path =
|
final path =
|
||||||
'//section[contains(text(),"${getPreferenceValue(source.id, "preferred_latest_page")}")]/div/div[@class="film_list-wrap"]/div[@class="flw-item"]/div[@class="film-poster"]';
|
'//section[contains(text(),"${getPreferenceValue(source.id, "preferred_latest_page")}")]/div/div[@class="film_list-wrap"]/div[@class="flw-item"]/div[@class="film-poster"]';
|
||||||
@@ -41,7 +42,7 @@ class DopeFlix extends MProvider {
|
|||||||
@override
|
@override
|
||||||
Future<MPages> search(String query, int page, FilterList filterList) async {
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "${preferenceBaseUrl(source.id)}";
|
String url = "$baseUrl";
|
||||||
|
|
||||||
if (query.isNotEmpty) {
|
if (query.isNotEmpty) {
|
||||||
url += "/search/${query.replaceAll(" ", "-")}?page=$page";
|
url += "/search/${query.replaceAll(" ", "-")}?page=$page";
|
||||||
@@ -84,9 +85,7 @@ class DopeFlix extends MProvider {
|
|||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
url = getUrlWithoutDomain(url);
|
url = getUrlWithoutDomain(url);
|
||||||
final res =
|
final res = (await client.get(Uri.parse("$baseUrl$url"))).body;
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
|
||||||
.body;
|
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
final description = xpath(res, '//div[@class="description"]/text()');
|
final description = xpath(res, '//div[@class="description"]/text()');
|
||||||
if (description.isNotEmpty) {
|
if (description.isNotEmpty) {
|
||||||
@@ -104,12 +103,11 @@ class DopeFlix extends MProvider {
|
|||||||
if (dataType == "1") {
|
if (dataType == "1") {
|
||||||
MChapter episode = MChapter();
|
MChapter episode = MChapter();
|
||||||
episode.name = "Movie";
|
episode.name = "Movie";
|
||||||
episode.url = "${preferenceBaseUrl(source.id)}/ajax/movie/episodes/$id";
|
episode.url = "$baseUrl/ajax/movie/episodes/$id";
|
||||||
episodesList.add(episode);
|
episodesList.add(episode);
|
||||||
} else {
|
} else {
|
||||||
final resS = (await client.get(Uri.parse(
|
final resS =
|
||||||
"${preferenceBaseUrl(source.id)}/ajax/v2/tv/seasons/$id")))
|
(await client.get(Uri.parse("$baseUrl/ajax/v2/tv/seasons/$id"))).body;
|
||||||
.body;
|
|
||||||
|
|
||||||
final seasonIds =
|
final seasonIds =
|
||||||
xpath(resS, '//a[@class="dropdown-item ss-item"]/@data-id');
|
xpath(resS, '//a[@class="dropdown-item ss-item"]/@data-id');
|
||||||
@@ -119,8 +117,8 @@ class DopeFlix extends MProvider {
|
|||||||
final seasonId = seasonIds[i];
|
final seasonId = seasonIds[i];
|
||||||
final seasonName = seasonNames[i];
|
final seasonName = seasonNames[i];
|
||||||
|
|
||||||
final html = (await client.get(Uri.parse(
|
final html = (await client
|
||||||
"${preferenceBaseUrl(source.id)}/ajax/v2/season/episodes/$seasonId")))
|
.get(Uri.parse("$baseUrl/ajax/v2/season/episodes/$seasonId")))
|
||||||
.body;
|
.body;
|
||||||
|
|
||||||
final epsHtmls = parseHtml(html).select("div.eps-item");
|
final epsHtmls = parseHtml(html).select("div.eps-item");
|
||||||
@@ -135,8 +133,7 @@ class DopeFlix extends MProvider {
|
|||||||
final epName = xpath(epHtml, '//h3[@class="film-name"]/text()').first;
|
final epName = xpath(epHtml, '//h3[@class="film-name"]/text()').first;
|
||||||
MChapter episode = MChapter();
|
MChapter episode = MChapter();
|
||||||
episode.name = "$seasonName $epNum $epName";
|
episode.name = "$seasonName $epNum $epName";
|
||||||
episode.url =
|
episode.url = "$baseUrl/ajax/v2/episode/servers/$episodeId";
|
||||||
"${preferenceBaseUrl(source.id)}/ajax/v2/episode/servers/$episodeId";
|
|
||||||
episodesList.add(episode);
|
episodesList.add(episode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -148,9 +145,7 @@ class DopeFlix extends MProvider {
|
|||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
url = getUrlWithoutDomain(url);
|
url = getUrlWithoutDomain(url);
|
||||||
final res =
|
final res = (await client.get(Uri.parse("$baseUrl/$url"))).body;
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}/$url")))
|
|
||||||
.body;
|
|
||||||
|
|
||||||
final vidsHtmls = parseHtml(res).select("ul.fss-list a.btn-play");
|
final vidsHtmls = parseHtml(res).select("ul.fss-list a.btn-play");
|
||||||
|
|
||||||
@@ -159,9 +154,8 @@ class DopeFlix extends MProvider {
|
|||||||
final vidHtml = vidH.outerHtml;
|
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 client.get(
|
final resSource =
|
||||||
Uri.parse("${preferenceBaseUrl(source.id)}/ajax/sources/$id")))
|
(await client.get(Uri.parse("$baseUrl/ajax/sources/$id"))).body;
|
||||||
.body;
|
|
||||||
|
|
||||||
final vidUrl =
|
final vidUrl =
|
||||||
substringBefore(substringAfter(resSource, "\"link\":\""), "\"");
|
substringBefore(substringAfter(resSource, "\"link\":\""), "\"");
|
||||||
@@ -531,10 +525,6 @@ class DopeFlix extends MProvider {
|
|||||||
return subs;
|
return subs;
|
||||||
}
|
}
|
||||||
|
|
||||||
String preferenceBaseUrl(int sourceId) {
|
|
||||||
return getPreferenceValue(sourceId, "preferred_domain");
|
|
||||||
}
|
|
||||||
|
|
||||||
String ll(String url) {
|
String ll(String url) {
|
||||||
if (url.contains("?")) {
|
if (url.contains("?")) {
|
||||||
return "&";
|
return "&";
|
||||||
|
|||||||
@@ -8,18 +8,21 @@ class Aniwave extends MProvider {
|
|||||||
|
|
||||||
final Client client = Client(source);
|
final Client client = Client(source);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get baseUrl => getPreferenceValue(source.id, "preferred_domain1");
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client
|
||||||
"${preferenceBaseUrl(source.id)}/filter?sort=trending&page=$page")))
|
.get(Uri.parse("$baseUrl/filter?sort=trending&page=$page")))
|
||||||
.body;
|
.body;
|
||||||
return parseAnimeList(res);
|
return parseAnimeList(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client
|
||||||
"${preferenceBaseUrl(source.id)}/filter?sort=recently_updated&page=$page")))
|
.get(Uri.parse("$baseUrl/filter?sort=recently_updated&page=$page")))
|
||||||
.body;
|
.body;
|
||||||
return parseAnimeList(res);
|
return parseAnimeList(res);
|
||||||
}
|
}
|
||||||
@@ -27,7 +30,7 @@ class Aniwave extends MProvider {
|
|||||||
@override
|
@override
|
||||||
Future<MPages> search(String query, int page, FilterList filterList) async {
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "${preferenceBaseUrl(source.id)}/filter?keyword=$query";
|
String url = "$baseUrl/filter?keyword=$query";
|
||||||
|
|
||||||
for (var filter in filters) {
|
for (var filter in filters) {
|
||||||
if (filter.type == "OrderFilter") {
|
if (filter.type == "OrderFilter") {
|
||||||
@@ -101,9 +104,7 @@ class Aniwave extends MProvider {
|
|||||||
final statusList = [
|
final statusList = [
|
||||||
{"Releasing": 0, "Completed": 1}
|
{"Releasing": 0, "Completed": 1}
|
||||||
];
|
];
|
||||||
final res =
|
final res = (await client.get(Uri.parse("$baseUrl$url"))).body;
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
|
||||||
.body;
|
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
final status = xpath(res, '//div[contains(text(),"Status")]/span/text()');
|
final status = xpath(res, '//div[contains(text(),"Status")]/span/text()');
|
||||||
if (status.isNotEmpty) {
|
if (status.isNotEmpty) {
|
||||||
@@ -124,9 +125,9 @@ class Aniwave extends MProvider {
|
|||||||
final encrypt = vrfEncrypt(id);
|
final encrypt = vrfEncrypt(id);
|
||||||
final vrf = "vrf=${Uri.encodeComponent(encrypt)}";
|
final vrf = "vrf=${Uri.encodeComponent(encrypt)}";
|
||||||
|
|
||||||
final resEp = (await client.get(Uri.parse(
|
final resEp =
|
||||||
"${preferenceBaseUrl(source.id)}/ajax/episode/list/$id?$vrf")))
|
(await client.get(Uri.parse("$baseUrl/ajax/episode/list/$id?$vrf")))
|
||||||
.body;
|
.body;
|
||||||
|
|
||||||
final html = json.decode(resEp)["result"];
|
final html = json.decode(resEp)["result"];
|
||||||
List<MChapter>? episodesList = [];
|
List<MChapter>? episodesList = [];
|
||||||
@@ -173,9 +174,9 @@ class Aniwave extends MProvider {
|
|||||||
final ids = substringBefore(url, "&");
|
final ids = substringBefore(url, "&");
|
||||||
final encrypt = vrfEncrypt(ids);
|
final encrypt = vrfEncrypt(ids);
|
||||||
final vrf = "vrf=${Uri.encodeComponent(encrypt)}";
|
final vrf = "vrf=${Uri.encodeComponent(encrypt)}";
|
||||||
final res = (await client.get(Uri.parse(
|
final res =
|
||||||
"${preferenceBaseUrl(source.id)}/ajax/server/list/$ids?$vrf")))
|
(await client.get(Uri.parse("$baseUrl/ajax/server/list/$ids?$vrf")))
|
||||||
.body;
|
.body;
|
||||||
final html = json.decode(res)["result"];
|
final html = json.decode(res)["result"];
|
||||||
|
|
||||||
final vidsHtmls = parseHtml(html).select("div.servers > div");
|
final vidsHtmls = parseHtml(html).select("div.servers > div");
|
||||||
@@ -190,9 +191,9 @@ class Aniwave extends MProvider {
|
|||||||
|
|
||||||
final encrypt = vrfEncrypt(serverId);
|
final encrypt = vrfEncrypt(serverId);
|
||||||
final vrf = "vrf=${Uri.encodeComponent(encrypt)}";
|
final vrf = "vrf=${Uri.encodeComponent(encrypt)}";
|
||||||
final res = (await client.get(Uri.parse(
|
final res =
|
||||||
"${preferenceBaseUrl(source.id)}/ajax/server/$serverId?$vrf")))
|
(await client.get(Uri.parse("$baseUrl/ajax/server/$serverId?$vrf")))
|
||||||
.body;
|
.body;
|
||||||
final status = json.decode(res)["status"];
|
final status = json.decode(res)["status"];
|
||||||
if (status == 200) {
|
if (status == 200) {
|
||||||
List<MVideo> a = [];
|
List<MVideo> a = [];
|
||||||
@@ -633,10 +634,6 @@ class Aniwave extends MProvider {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
String preferenceBaseUrl(int sourceId) {
|
|
||||||
return getPreferenceValue(sourceId, "preferred_domain1");
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> preferenceHosterSelection(int sourceId) {
|
List<String> preferenceHosterSelection(int sourceId) {
|
||||||
return getPreferenceValue(sourceId, "hoster_selection");
|
return getPreferenceValue(sourceId, "hoster_selection");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,11 +8,14 @@ class DramaCool extends MProvider {
|
|||||||
|
|
||||||
final Client client = Client(source);
|
final Client client = Client(source);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get baseUrl => getPreferenceValue(source.id, "overrideBaseUrl");
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res =
|
||||||
"${preferenceBaseUrl(source.id)}/most-popular-drama?page=$page")))
|
(await client.get(Uri.parse("$baseUrl/most-popular-drama?page=$page")))
|
||||||
.body;
|
.body;
|
||||||
final document = parseHtml(res);
|
final document = parseHtml(res);
|
||||||
return animeFromElement(document.select("ul.list-episode-item li a"),
|
return animeFromElement(document.select("ul.list-episode-item li a"),
|
||||||
document.selectFirst("li.next a")?.attr("href") != null);
|
document.selectFirst("li.next a")?.attr("href") != null);
|
||||||
@@ -20,9 +23,9 @@ class DramaCool extends MProvider {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res =
|
||||||
"${preferenceBaseUrl(source.id)}/recently-added?page=$page")))
|
(await client.get(Uri.parse("$baseUrl/recently-added?page=$page")))
|
||||||
.body;
|
.body;
|
||||||
final document = parseHtml(res);
|
final document = parseHtml(res);
|
||||||
return animeFromElement(document.select("ul.switch-block a"),
|
return animeFromElement(document.select("ul.switch-block a"),
|
||||||
document.selectFirst("li.next a")?.attr("href") != null);
|
document.selectFirst("li.next a")?.attr("href") != null);
|
||||||
@@ -30,8 +33,8 @@ class DramaCool extends MProvider {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(String query, int page, FilterList filterList) async {
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client
|
||||||
"${preferenceBaseUrl(source.id)}/search?keyword=$query&page=$page")))
|
.get(Uri.parse("$baseUrl/search?keyword=$query&page=$page")))
|
||||||
.body;
|
.body;
|
||||||
final document = parseHtml(res);
|
final document = parseHtml(res);
|
||||||
return animeFromElement(document.select("ul.list-episode-item li a"),
|
return animeFromElement(document.select("ul.list-episode-item li a"),
|
||||||
@@ -45,16 +48,12 @@ class DramaCool extends MProvider {
|
|||||||
];
|
];
|
||||||
url = getUrlWithoutDomain(url);
|
url = getUrlWithoutDomain(url);
|
||||||
if (url.contains("-episode-") && url.endsWith(".html")) {
|
if (url.contains("-episode-") && url.endsWith(".html")) {
|
||||||
final res =
|
final res = (await client.get(Uri.parse("$baseUrl$url"))).body;
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
|
||||||
.body;
|
|
||||||
url = parseHtml(res).selectFirst("div.category a").attr("href");
|
url = parseHtml(res).selectFirst("div.category a").attr("href");
|
||||||
}
|
}
|
||||||
url = getUrlWithoutDomain(url);
|
url = getUrlWithoutDomain(url);
|
||||||
|
|
||||||
final res =
|
final res = (await client.get(Uri.parse("$baseUrl$url"))).body;
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
|
||||||
.body;
|
|
||||||
final document = parseHtml(res);
|
final document = parseHtml(res);
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
anime.description = document
|
anime.description = document
|
||||||
@@ -104,9 +103,7 @@ class DramaCool extends MProvider {
|
|||||||
Future<List<MVideo>> getVideoList(String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
url = getUrlWithoutDomain(url);
|
url = getUrlWithoutDomain(url);
|
||||||
|
|
||||||
final res =
|
final res = (await client.get(Uri.parse("$baseUrl$url"))).body;
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
|
||||||
.body;
|
|
||||||
final document = parseHtml(res);
|
final document = parseHtml(res);
|
||||||
String iframeUrl = document.selectFirst("iframe")?.getSrc ?? "";
|
String iframeUrl = document.selectFirst("iframe")?.getSrc ?? "";
|
||||||
if (iframeUrl.isEmpty) return [];
|
if (iframeUrl.isEmpty) return [];
|
||||||
@@ -166,10 +163,6 @@ class DramaCool extends MProvider {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
String preferenceBaseUrl(int sourceId) {
|
|
||||||
return getPreferenceValue(sourceId, "overrideBaseUrl");
|
|
||||||
}
|
|
||||||
|
|
||||||
MPages animeFromElement(List<MElement> elements, bool hasNextPage) {
|
MPages animeFromElement(List<MElement> elements, bool hasNextPage) {
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
for (var element in elements) {
|
for (var element in elements) {
|
||||||
|
|||||||
@@ -8,11 +8,14 @@ class GogoAnime extends MProvider {
|
|||||||
|
|
||||||
final Client client = Client(source);
|
final Client client = Client(source);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get baseUrl =>
|
||||||
|
getPreferenceValue(source.id, "override_baseurl_v${source.id}");
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res =
|
||||||
"${preferenceBaseUrl(source.id)}/popular.html?page=$page")))
|
(await client.get(Uri.parse("$baseUrl/popular.html?page=$page"))).body;
|
||||||
.body;
|
|
||||||
|
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
final urls = xpath(res, '//*[@class="img"]/a/@href');
|
final urls = xpath(res, '//*[@class="img"]/a/@href');
|
||||||
@@ -132,15 +135,14 @@ class GogoAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (genre.isNotEmpty) {
|
if (genre.isNotEmpty) {
|
||||||
url = "${preferenceBaseUrl(source.id)}/genre/$genre?page=$page";
|
url = "$baseUrl/genre/$genre?page=$page";
|
||||||
} else if (recent.isNotEmpty) {
|
} else if (recent.isNotEmpty) {
|
||||||
url =
|
url =
|
||||||
"https://ajax.gogo-load.com/ajax/page-recent-release.html?page=$page&type=$recent";
|
"https://ajax.gogo-load.com/ajax/page-recent-release.html?page=$page&type=$recent";
|
||||||
} else if (season.isNotEmpty) {
|
} else if (season.isNotEmpty) {
|
||||||
url = "${preferenceBaseUrl(source.id)}/$season?page=$page";
|
url = "$baseUrl/$season?page=$page";
|
||||||
} else {
|
} else {
|
||||||
url =
|
url = "$baseUrl/filter.html?keyword=$query$filterStr&page=$page";
|
||||||
"${preferenceBaseUrl(source.id)}/filter.html?keyword=$query$filterStr&page=$page";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final res = (await client.get(Uri.parse(url))).body;
|
final res = (await client.get(Uri.parse(url))).body;
|
||||||
@@ -167,9 +169,7 @@ class GogoAnime extends MProvider {
|
|||||||
{"Ongoing": 0, "Completed": 1}
|
{"Ongoing": 0, "Completed": 1}
|
||||||
];
|
];
|
||||||
|
|
||||||
final res =
|
final res = (await client.get(Uri.parse("$baseUrl$url"))).body;
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
|
||||||
.body;
|
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
final status = xpath(
|
final status = xpath(
|
||||||
res, '//*[@class="anime_info_body_bg"]/p[@class="type"][5]/text()')
|
res, '//*[@class="anime_info_body_bg"]/p[@class="type"][5]/text()')
|
||||||
@@ -214,9 +214,7 @@ class GogoAnime extends MProvider {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
final res =
|
final res = (await client.get(Uri.parse("$baseUrl$url"))).body;
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
|
||||||
.body;
|
|
||||||
final serverUrls =
|
final serverUrls =
|
||||||
xpath(res, '//*[@class="anime_muti_link"]/ul/li/a/@data-video');
|
xpath(res, '//*[@class="anime_muti_link"]/ul/li/a/@data-video');
|
||||||
final serverNames =
|
final serverNames =
|
||||||
@@ -1101,10 +1099,6 @@ class GogoAnime extends MProvider {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
String preferenceBaseUrl(int sourceId) {
|
|
||||||
return getPreferenceValue(sourceId, "override_baseurl_v$sourceId");
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> preferenceHosterSelection(int sourceId) {
|
List<String> preferenceHosterSelection(int sourceId) {
|
||||||
return getPreferenceValue(sourceId, "hoster_selection");
|
return getPreferenceValue(sourceId, "hoster_selection");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,11 +11,12 @@ class UHDMovies extends MProvider {
|
|||||||
@override
|
@override
|
||||||
bool get supportsLatest => false;
|
bool get supportsLatest => false;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get baseUrl => getPreferenceValue(source.id, "pref_domain");
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client
|
final res = (await client.get(Uri.parse("$baseUrl/page/$page"))).body;
|
||||||
.get(Uri.parse("${preferenceBaseUrl(source.id)}/page/$page")))
|
|
||||||
.body;
|
|
||||||
return animeFromElement(res);
|
return animeFromElement(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,8 +27,8 @@ class UHDMovies extends MProvider {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(String query, int page, FilterList filterList) async {
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(
|
||||||
"${preferenceBaseUrl(source.id)}/page/$page/?s=${query.replaceAll(" ", "+")}")))
|
Uri.parse("$baseUrl/page/$page/?s=${query.replaceAll(" ", "+")}")))
|
||||||
.body;
|
.body;
|
||||||
return animeFromElement(res);
|
return animeFromElement(res);
|
||||||
}
|
}
|
||||||
@@ -35,9 +36,7 @@ class UHDMovies extends MProvider {
|
|||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
url = getUrlWithoutDomain(url);
|
url = getUrlWithoutDomain(url);
|
||||||
final res =
|
final res = (await client.get(Uri.parse("$baseUrl${url}"))).body;
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}${url}")))
|
|
||||||
.body;
|
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
final description = xpath(res, '//pre/span/text()');
|
final description = xpath(res, '//pre/span/text()');
|
||||||
if (description.isNotEmpty) {
|
if (description.isNotEmpty) {
|
||||||
@@ -137,10 +136,6 @@ class UHDMovies extends MProvider {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
String preferenceBaseUrl(int sourceId) {
|
|
||||||
return getPreferenceValue(sourceId, "pref_domain");
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<List<MVideo>> extractVideos(String url) async {
|
Future<List<MVideo>> extractVideos(String url) async {
|
||||||
List<MVideo> videos = [];
|
List<MVideo> videos = [];
|
||||||
for (int type = 1; type < 3; type++) {
|
for (int type = 1; type < 3; type++) {
|
||||||
|
|||||||
@@ -8,6 +8,9 @@ class YoMovies extends MProvider {
|
|||||||
|
|
||||||
final Client client = Client(source);
|
final Client client = Client(source);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get baseUrl => getPreferenceValue(source.id, "overrideBaseUrl");
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool get supportsLatest => false;
|
bool get supportsLatest => false;
|
||||||
|
|
||||||
@@ -15,9 +18,8 @@ class YoMovies extends MProvider {
|
|||||||
Future<MPages> getPopular(int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
String pageNu = page == 1 ? "" : "page/$page/";
|
String pageNu = page == 1 ? "" : "page/$page/";
|
||||||
|
|
||||||
final res = (await client.get(Uri.parse(
|
final res =
|
||||||
"${preferenceBaseUrl(source.id)}/most-favorites/$pageNu")))
|
(await client.get(Uri.parse("$baseUrl/most-favorites/$pageNu"))).body;
|
||||||
.body;
|
|
||||||
final document = parseHtml(res);
|
final document = parseHtml(res);
|
||||||
return animeFromElement(
|
return animeFromElement(
|
||||||
document.select("div.movies-list > div.ml-item"),
|
document.select("div.movies-list > div.ml-item"),
|
||||||
@@ -36,7 +38,7 @@ class YoMovies extends MProvider {
|
|||||||
String url = "";
|
String url = "";
|
||||||
String pageNu = page == 1 ? "" : "/page/$page";
|
String pageNu = page == 1 ? "" : "/page/$page";
|
||||||
if (query.isNotEmpty) {
|
if (query.isNotEmpty) {
|
||||||
url = "${preferenceBaseUrl(source.id)}$pageNu/?s=$query";
|
url = "$baseUrl$pageNu/?s=$query";
|
||||||
} else {
|
} else {
|
||||||
for (var filter in filters) {
|
for (var filter in filters) {
|
||||||
if (filter.type.isNotEmpty) {
|
if (filter.type.isNotEmpty) {
|
||||||
@@ -46,7 +48,7 @@ class YoMovies extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
url = "${preferenceBaseUrl(source.id)}$url$pageNu";
|
url = "$baseUrl$url$pageNu";
|
||||||
}
|
}
|
||||||
final res = (await client.get(Uri.parse(url))).body;
|
final res = (await client.get(Uri.parse(url))).body;
|
||||||
final document = parseHtml(res);
|
final document = parseHtml(res);
|
||||||
@@ -60,9 +62,7 @@ class YoMovies extends MProvider {
|
|||||||
Future<MManga> getDetail(String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
url = getUrlWithoutDomain(url);
|
url = getUrlWithoutDomain(url);
|
||||||
|
|
||||||
final res =
|
final res = (await client.get(Uri.parse("$baseUrl$url"))).body;
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
|
||||||
.body;
|
|
||||||
final document = parseHtml(res);
|
final document = parseHtml(res);
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
var infoElement = document.selectFirst("div.mvi-content");
|
var infoElement = document.selectFirst("div.mvi-content");
|
||||||
@@ -99,9 +99,7 @@ class YoMovies extends MProvider {
|
|||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
url = getUrlWithoutDomain(url);
|
url = getUrlWithoutDomain(url);
|
||||||
final res =
|
final res = (await client.get(Uri.parse("$baseUrl$url"))).body;
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
|
||||||
.body;
|
|
||||||
final document = parseHtml(res);
|
final document = parseHtml(res);
|
||||||
final serverElements = document.select("div.movieplay > iframe");
|
final serverElements = document.select("div.movieplay > iframe");
|
||||||
List<MVideo> videos = [];
|
List<MVideo> videos = [];
|
||||||
@@ -164,10 +162,6 @@ class YoMovies extends MProvider {
|
|||||||
return videos;
|
return videos;
|
||||||
}
|
}
|
||||||
|
|
||||||
String preferenceBaseUrl(int sourceId) {
|
|
||||||
return getPreferenceValue(sourceId, "overrideBaseUrl");
|
|
||||||
}
|
|
||||||
|
|
||||||
MPages animeFromElement(List<MElement> elements, bool hasNextPage) {
|
MPages animeFromElement(List<MElement> elements, bool hasNextPage) {
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
for (var element in elements) {
|
for (var element in elements) {
|
||||||
|
|||||||
@@ -8,21 +8,21 @@ class Filma24 extends MProvider {
|
|||||||
|
|
||||||
final Client client = Client(source);
|
final Client client = Client(source);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get baseUrl => getPreferenceValue(source.id, "pref_domain");
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
String pageNu = page == 1 ? "" : "/page/$page/";
|
String pageNu = page == 1 ? "" : "/page/$page/";
|
||||||
final res =
|
final res = (await client.get(Uri.parse("$baseUrl$pageNu"))).body;
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$pageNu")))
|
|
||||||
.body;
|
|
||||||
return animeFromRes(res);
|
return animeFromRes(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
String pageNu = page == 1 ? "" : "page/$page/";
|
String pageNu = page == 1 ? "" : "page/$page/";
|
||||||
final res = (await client.get(
|
final res =
|
||||||
Uri.parse("${preferenceBaseUrl(source.id)}/$pageNu?sort=trendy")))
|
(await client.get(Uri.parse("$baseUrl/$pageNu?sort=trendy"))).body;
|
||||||
.body;
|
|
||||||
return animeFromRes(res);
|
return animeFromRes(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ class Filma24 extends MProvider {
|
|||||||
String url = "";
|
String url = "";
|
||||||
String pageNu = page == 1 ? "" : "page/$page/";
|
String pageNu = page == 1 ? "" : "page/$page/";
|
||||||
if (query.isNotEmpty) {
|
if (query.isNotEmpty) {
|
||||||
url += "${preferenceBaseUrl(source.id)}/search/$query/";
|
url += "$baseUrl/search/$query/";
|
||||||
} else {
|
} else {
|
||||||
for (var filter in filters) {
|
for (var filter in filters) {
|
||||||
if (filter.type == "ReleaseFilter") {
|
if (filter.type == "ReleaseFilter") {
|
||||||
@@ -47,7 +47,7 @@ class Filma24 extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
url = "${preferenceBaseUrl(source.id)}$url";
|
url = "$baseUrl$url";
|
||||||
}
|
}
|
||||||
|
|
||||||
url += pageNu;
|
url += pageNu;
|
||||||
@@ -131,10 +131,6 @@ class Filma24 extends MProvider {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
String preferenceBaseUrl(int sourceId) {
|
|
||||||
return getPreferenceValue(sourceId, "pref_domain");
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList() {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
|
|||||||
Reference in New Issue
Block a user