mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 10:51:17 +00:00
fix
This commit is contained in:
@@ -8,11 +8,13 @@ class OtakuFr extends MProvider {
|
||||
|
||||
final Client client = Client(source);
|
||||
|
||||
@override
|
||||
String get baseUrl => getPreferenceValue(source.id, "overrideBaseUrl");
|
||||
|
||||
@override
|
||||
Future<MPages> getPopular(int page) async {
|
||||
final res =
|
||||
(await client.get(Uri.parse("${source.baseUrl}/en-cours/page/$page")))
|
||||
.body;
|
||||
(await client.get(Uri.parse("$baseUrl/en-cours/page/$page"))).body;
|
||||
List<MManga> animeList = [];
|
||||
final urls =
|
||||
xpath(res, '//*[@class="list"]/article/div/div/figure/a/@href');
|
||||
@@ -34,8 +36,7 @@ class OtakuFr extends MProvider {
|
||||
|
||||
@override
|
||||
Future<MPages> getLatestUpdates(int page) async {
|
||||
final res =
|
||||
(await client.get(Uri.parse("${source.baseUrl}/page/$page/"))).body;
|
||||
final res = (await client.get(Uri.parse("$baseUrl/page/$page/"))).body;
|
||||
|
||||
List<MManga> animeList = [];
|
||||
final urls = xpath(res, '//*[@class="episode"]/div/a/@href');
|
||||
@@ -77,19 +78,17 @@ class OtakuFr extends MProvider {
|
||||
final filters = filterList.filters;
|
||||
String url = "";
|
||||
if (query.isNotEmpty) {
|
||||
url = "${source.baseUrl}/toute-la-liste-affiches/page/$page/?q=$query";
|
||||
url = "$baseUrl/toute-la-liste-affiches/page/$page/?q=$query";
|
||||
} else {
|
||||
for (var filter in filters) {
|
||||
if (filter.type == "GenreFilter") {
|
||||
if (filter.state != 0) {
|
||||
url =
|
||||
"${source.baseUrl}/${filter.values[filter.state].value}page/$page";
|
||||
url = "$baseUrl/${filter.values[filter.state].value}page/$page";
|
||||
}
|
||||
} else if (filter.type == "SubPageFilter") {
|
||||
if (url.isEmpty) {
|
||||
if (filter.state != 0) {
|
||||
url =
|
||||
"${source.baseUrl}/${filter.values[filter.state].value}page/$page";
|
||||
url = "$baseUrl/${filter.values[filter.state].value}page/$page";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -122,7 +121,9 @@ class OtakuFr extends MProvider {
|
||||
final statusList = [
|
||||
{"En cours": 0, "Terminé": 1}
|
||||
];
|
||||
String res = (await client.get(Uri.parse(url))).body;
|
||||
String res =
|
||||
(await client.get(Uri.parse("$baseUrl${getUrlWithoutDomain(url)}")))
|
||||
.body;
|
||||
MManga anime = MManga();
|
||||
final originalUrl = xpath(res,
|
||||
'//*[@class="breadcrumb"]/li[@class="breadcrumb-item"][2]/a/@href');
|
||||
@@ -173,7 +174,9 @@ class OtakuFr extends MProvider {
|
||||
|
||||
@override
|
||||
Future<List<MVideo>> getVideoList(String url) async {
|
||||
final res = (await client.get(Uri.parse(url))).body;
|
||||
final res =
|
||||
(await client.get(Uri.parse("$baseUrl${getUrlWithoutDomain(url)}")))
|
||||
.body;
|
||||
|
||||
final servers = parseHtml(res).select("div.tab-content iframe[src]");
|
||||
List<MVideo> videos = [];
|
||||
@@ -189,15 +192,12 @@ class OtakuFr extends MProvider {
|
||||
if (serverUrl.contains("https://streamwish") &&
|
||||
hosterSelection.contains("Streamwish")) {
|
||||
a = await streamWishExtractor(serverUrl, "StreamWish");
|
||||
} else if (serverUrl.contains("sibnet") &&
|
||||
hosterSelection.contains("Sibnet")) {
|
||||
a = await sibnetExtractor(serverUrl);
|
||||
} else if (serverUrl.contains("https://doo") &&
|
||||
hosterSelection.contains("Doodstream")) {
|
||||
a = await doodExtractor(serverUrl);
|
||||
} else if (serverUrl.contains("https://voe.sx") &&
|
||||
hosterSelection.contains("Voe")) {
|
||||
// a = await voeExtractor(serverUrl, null);
|
||||
} else if (containsVidBom(serverUrl) &&
|
||||
hosterSelection.contains("VidBom")) {
|
||||
a = await vidBomExtractor(serverUrl);
|
||||
} else if (serverUrl.contains("https://ok.ru") &&
|
||||
hosterSelection.contains("Okru")) {
|
||||
a = await okruExtractor(serverUrl);
|
||||
@@ -207,6 +207,9 @@ class OtakuFr extends MProvider {
|
||||
} else if (serverUrl.contains("sendvid") &&
|
||||
hosterSelection.contains("Sendvid")) {
|
||||
a = await sendVidExtractorr(serverUrl, "");
|
||||
} else if (serverUrl.contains("voe.sx") &&
|
||||
hosterSelection.contains("Voe")) {
|
||||
a = await voeExtractor(serverUrl, "");
|
||||
}
|
||||
videos.addAll(a);
|
||||
}
|
||||
@@ -218,6 +221,17 @@ class OtakuFr extends MProvider {
|
||||
return regExp(url, r"^(?:(?:https?:)?//|www\.)", 'https://', 0, 0);
|
||||
}
|
||||
|
||||
bool containsVidBom(String url) {
|
||||
url = url;
|
||||
final list = ["vidbam", "vadbam", "vidbom", "vidbm"];
|
||||
for (var n in list) {
|
||||
if (url.contains(n)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@override
|
||||
List<dynamic> getFilterList() {
|
||||
return [
|
||||
@@ -277,6 +291,14 @@ class OtakuFr extends MProvider {
|
||||
@override
|
||||
List<dynamic> getSourcePreferences() {
|
||||
return [
|
||||
EditTextPreference(
|
||||
key: "overrideBaseUrl",
|
||||
title: "Changer l'url de base",
|
||||
summary: "",
|
||||
value: "https://otakufr.cc",
|
||||
dialogTitle: "Changer l'url de base",
|
||||
dialogMessage: "",
|
||||
text: "https://otakufr.cc"),
|
||||
ListPreference(
|
||||
key: "preferred_quality",
|
||||
title: "Qualité préférée",
|
||||
@@ -285,14 +307,14 @@ class OtakuFr extends MProvider {
|
||||
entries: ["1080p", "720p", "480p", "360p"],
|
||||
entryValues: ["1080", "720", "480", "360"]),
|
||||
MultiSelectListPreference(
|
||||
key: "hoster_selection",
|
||||
key: "hoster_selection_",
|
||||
title: "Enable/Disable Hosts",
|
||||
summary: "",
|
||||
entries: [
|
||||
"Streamwish",
|
||||
"Doodstream",
|
||||
"Sendvid",
|
||||
"Vidbm",
|
||||
"VidBom",
|
||||
"Okru",
|
||||
"Voe",
|
||||
"Sibnet",
|
||||
@@ -302,7 +324,7 @@ class OtakuFr extends MProvider {
|
||||
"Streamwish",
|
||||
"Doodstream",
|
||||
"Sendvid",
|
||||
"Vidbm",
|
||||
"VidBom",
|
||||
"Okru",
|
||||
"Voe",
|
||||
"Sibnet",
|
||||
@@ -349,7 +371,7 @@ class OtakuFr extends MProvider {
|
||||
}
|
||||
|
||||
List<String> preferenceHosterSelection(int sourceId) {
|
||||
return getPreferenceValue(sourceId, "hoster_selection");
|
||||
return getPreferenceValue(sourceId, "hoster_selection_");
|
||||
}
|
||||
|
||||
Future<List<MVideo>> sendVidExtractorr(String url, String prefix) async {
|
||||
@@ -436,56 +458,6 @@ class OtakuFr extends MProvider {
|
||||
}
|
||||
return videos;
|
||||
}
|
||||
|
||||
Future<List<MVideo>> vidbmExtractor(String url) async {
|
||||
final res = (await client.get(Uri.parse(url))).body;
|
||||
final js = xpath(res,
|
||||
'//script[contains(text(), "m3u8") or contains(text(), "mp4")]/text()');
|
||||
if (js.isEmpty) {
|
||||
return [];
|
||||
}
|
||||
final masterUrl = substringBefore(substringAfter(js.first, "source"), "\"");
|
||||
final quality = substringBefore(
|
||||
substringAfter(
|
||||
substringBefore(
|
||||
substringAfter(substringAfter(js.first, "source"), "file"),
|
||||
"]"),
|
||||
"label:\""),
|
||||
"\"");
|
||||
List<MVideo> videos = [];
|
||||
if (masterUrl.contains("m3u8")) {
|
||||
final masterPlaylistRes = (await client.get(Uri.parse(masterUrl))).body;
|
||||
|
||||
for (var it in substringAfter(masterPlaylistRes, "#EXT-X-STREAM-INF:")
|
||||
.split("#EXT-X-STREAM-INF:")) {
|
||||
final quality =
|
||||
"${substringBefore(substringBefore(substringAfter(substringAfter(it, "RESOLUTION="), "x"), ","), "\n")}p";
|
||||
|
||||
String videoUrl = substringBefore(substringAfter(it, "\n"), "\n");
|
||||
|
||||
if (!videoUrl.startsWith("http")) {
|
||||
videoUrl =
|
||||
"${masterUrl.split("/").sublist(0, masterUrl.split("/").length - 1).join("/")}/$videoUrl";
|
||||
}
|
||||
|
||||
MVideo video = MVideo();
|
||||
video
|
||||
..url = videoUrl
|
||||
..originalUrl = videoUrl
|
||||
..quality = "Vidbm - $quality";
|
||||
videos.add(video);
|
||||
}
|
||||
return videos;
|
||||
} else {
|
||||
MVideo video = MVideo();
|
||||
video
|
||||
..url = masterUrl
|
||||
..originalUrl = masterUrl
|
||||
..quality = "Vidbm - $quality";
|
||||
videos.add(video);
|
||||
}
|
||||
return videos;
|
||||
}
|
||||
}
|
||||
|
||||
OtakuFr main(MSource source) {
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import '../../../../../model/source.dart';
|
||||
|
||||
Source get otakufr => _otakufr;
|
||||
const otakufrVersion = "0.0.9";
|
||||
const otakufrVersion = "0.0.95";
|
||||
const otakufrCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/fr/otakufr/otakufr.dart";
|
||||
Source _otakufr = Source(
|
||||
name: "OtakuFr",
|
||||
baseUrl: "https://otakufr.co",
|
||||
baseUrl: "https://otakufr.cc",
|
||||
lang: "fr",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
|
||||
Reference in New Issue
Block a user