This commit is contained in:
kodjomoustapha
2024-01-31 13:32:53 +01:00
parent 236573c002
commit 5132ebd716
67 changed files with 482 additions and 446 deletions

View File

@@ -2,29 +2,30 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class DataLifeEngine extends MProvider {
DataLifeEngine();
DataLifeEngine({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
bool get supportsLatest => false;
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client
.get(Uri.parse("${source.baseUrl}${getPath(source)}page/$page")))
.body;
return animeFromElement(res, source.baseUrl);
return animeFromElement(res);
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
return MPages([], false);
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
final baseUrl = source.baseUrl;
String res = "";
@@ -65,11 +66,11 @@ class DataLifeEngine extends MProvider {
res = (await client.get(Uri.parse(url))).body;
}
return animeFromElement(res, baseUrl);
return animeFromElement(res);
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
String res = (await client.get(Uri.parse(url))).body;
MManga anime = MManga();
final description = xpath(res, '//span[@itemprop="description"]/text()');
@@ -116,7 +117,7 @@ class DataLifeEngine extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
List<MVideo> videos = [];
final sUrls = url.split(',');
for (var sUrl in sUrls) {
@@ -143,7 +144,7 @@ class DataLifeEngine extends MProvider {
return videos;
}
MPages animeFromElement(String res, String baseUrl) {
MPages animeFromElement(String res) {
final htmls = parseHtml(res).select("div#dle-content > div.mov");
List<MManga> animeList = [];
for (var h in htmls) {
@@ -155,7 +156,7 @@ class DataLifeEngine extends MProvider {
MManga anime = MManga();
anime.name =
"$name ${season.isNotEmpty ? season.first.replaceAll("\n", " ") : ""}";
anime.imageUrl = "$baseUrl$image";
anime.imageUrl = "${source.baseUrl}$image";
anime.link = url;
animeList.add(anime);
}
@@ -245,13 +246,13 @@ class DataLifeEngine extends MProvider {
return [video];
}
String getPath(MSource source) {
String getPath() {
if (source.name == "French Anime") return "/animes-vostfr/";
return "/serie-en-streaming/";
}
@override
List<dynamic> getFilterList(MSource source) {
List<dynamic> getFilterList() {
return [
HeaderFilter("La recherche de texte ignore les filtres"),
if (source.name == "French Anime")
@@ -326,6 +327,6 @@ class DataLifeEngine extends MProvider {
}
}
DataLifeEngine main() {
return DataLifeEngine();
DataLifeEngine main(MSource source) {
return DataLifeEngine(source: source);
}

View File

@@ -2,7 +2,7 @@ import '../../../model/source.dart';
import 'src/frenchanime/frenchanime.dart';
import 'src/wiflix/wiflix.dart';
const _datalifeengineVersion = "0.0.25";
const _datalifeengineVersion = "0.0.3";
const _datalifeengineSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/datalifeengine/datalifeengine.dart";

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class DopeFlix extends MProvider {
DopeFlix();
DopeFlix({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client.get(Uri.parse(
"${preferenceBaseUrl(source.id)}/${getPreferenceValue(source.id, "preferred_popular_page")}?page=$page")))
.body;
@@ -15,7 +17,7 @@ class DopeFlix extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res =
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}/home")))
.body;
@@ -37,8 +39,7 @@ class DopeFlix extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
String url = "${preferenceBaseUrl(source.id)}";
@@ -81,7 +82,7 @@ class DopeFlix extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
url = getUrlWithoutDomain(url);
final res =
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
@@ -145,7 +146,7 @@ class DopeFlix extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
url = getUrlWithoutDomain(url);
final res =
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}/$url")))
@@ -317,7 +318,7 @@ class DopeFlix extends MProvider {
}
@override
List<dynamic> getFilterList(MSource source) {
List<dynamic> getFilterList() {
return [
SelectFilter("TypeFilter", "Type", 0, [
SelectFilterOption("All", "all"),
@@ -413,7 +414,7 @@ class DopeFlix extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
if (source.name == "DopeBox")
ListPreference(
@@ -542,6 +543,6 @@ class DopeFlix extends MProvider {
}
}
DopeFlix main() {
return DopeFlix();
DopeFlix main(MSource source) {
return DopeFlix(source: source);
}

View File

@@ -2,7 +2,7 @@ import '../../../model/source.dart';
import 'src/dopebox/dopebox.dart';
import 'src/sflix/sflix.dart';
const _dopeflixVersion = "0.0.35";
const _dopeflixVersion = "0.0.4";
const _dopeflixSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/dopeflix/dopeflix.dart";

View File

@@ -2,7 +2,7 @@ import '../../../model/source.dart';
import 'src/aniwatch/aniwatch.dart';
import 'src/kaido/kaido.dart';
const _zorothemeVersion = "0.0.75";
const _zorothemeVersion = "0.0.8";
const _zorothemeSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/zorotheme/zorotheme.dart";

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class ZoroTheme extends MProvider {
ZoroTheme();
ZoroTheme({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client
.get(Uri.parse("${source.baseUrl}/most-popular?page=$page")))
.body;
@@ -16,7 +18,7 @@ class ZoroTheme extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = (await client
.get(Uri.parse("${source.baseUrl}/recently-updated?page=$page")))
.body;
@@ -25,8 +27,7 @@ class ZoroTheme extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
String url = "${source.baseUrl}/";
@@ -119,7 +120,7 @@ class ZoroTheme extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final statusList = [
{"Currently Airing": 0, "Finished Airing": 1}
];
@@ -170,7 +171,7 @@ class ZoroTheme extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final id = substringAfterLast(url, '?ep=');
final res = (await client.get(
@@ -384,7 +385,7 @@ class ZoroTheme extends MProvider {
];
@override
List<dynamic> getFilterList(MSource source) {
List<dynamic> getFilterList() {
return [
SelectFilter("TypeFilter", "Type", 0, [
SelectFilterOption("All", ""),
@@ -518,7 +519,7 @@ class ZoroTheme extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
ListPreference(
key: "preferred_quality",
@@ -606,6 +607,6 @@ class ZoroTheme extends MProvider {
}
}
ZoroTheme main() {
return ZoroTheme();
ZoroTheme main(MSource source) {
return ZoroTheme(source: source);
}

View File

@@ -2,31 +2,32 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class AnimeWorldIndia extends MProvider {
AnimeWorldIndia();
AnimeWorldIndia({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client.get(Uri.parse(
"${source.baseUrl}/advanced-search/page/$page/?s_lang=${source.lang}&s_orderby=viewed")))
.body;
return parseAnimeList(res, source.baseUrl);
return parseAnimeList(res);
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = (await client.get(Uri.parse(
"${source.baseUrl}/advanced-search/page/$page/?s_lang=${source.lang}&s_orderby=update")))
.body;
return parseAnimeList(res, source.baseUrl);
return parseAnimeList(res);
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
String url =
"${source.baseUrl}/advanced-search/page/$page/?s_keyword=$query&s_lang=${source.lang}";
@@ -64,11 +65,11 @@ class AnimeWorldIndia extends MProvider {
}
final res = (await client.get(Uri.parse(url))).body;
return parseAnimeList(res, source.baseUrl);
return parseAnimeList(res);
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final res = (await client.get(Uri.parse(url))).body;
MManga anime = MManga();
final document = parseHtml(res);
@@ -143,7 +144,7 @@ class AnimeWorldIndia extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final res = (await client.get(Uri.parse("${source.baseUrl}$url"))).body;
var resJson = substringBefore(
substringAfterLast(res, "\"players\":"), ",\"noplayer\":");
@@ -168,7 +169,7 @@ class AnimeWorldIndia extends MProvider {
return sortVideos(videos, source.id);
}
MPages parseAnimeList(String res, String baseUrl) {
MPages parseAnimeList(String res) {
List<MManga> animeList = [];
final document = parseHtml(res);
@@ -178,7 +179,7 @@ class AnimeWorldIndia extends MProvider {
element.selectFirst("div.font-medium.line-clamp-2.mb-3").text;
anime.link = element.selectFirst("a").getHref;
anime.imageUrl =
"$baseUrl${getUrlWithoutDomain(element.selectFirst("img").getSrc)}";
"${source.baseUrl}${getUrlWithoutDomain(element.selectFirst("img").getSrc)}";
animeList.add(anime);
}
final hasNextPage = xpath(res,
@@ -244,7 +245,7 @@ class AnimeWorldIndia extends MProvider {
}
@override
List<dynamic> getFilterList(MSource source) {
List<dynamic> getFilterList() {
return [
SelectFilter("TypeFilter", "Type", 0, [
SelectFilterOption("Any", "all"),
@@ -343,7 +344,7 @@ class AnimeWorldIndia extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
ListPreference(
key: "preferred_quality",
@@ -389,6 +390,6 @@ class AnimeWorldIndia extends MProvider {
}
}
AnimeWorldIndia main() {
return AnimeWorldIndia();
AnimeWorldIndia main(MSource source) {
return AnimeWorldIndia(source: source);
}

View File

@@ -1,6 +1,6 @@
import '../../../../model/source.dart';
const _animeworldindiaVersion = "0.0.15";
const _animeworldindiaVersion = "0.0.2";
const _animeworldindiaSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/all/animeworldindia/animeworldindia.dart";

View File

@@ -1,29 +1,30 @@
import 'package:mangayomi/bridge_lib.dart';
class Nyaa extends MProvider {
Nyaa();
Nyaa({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client.get(Uri.parse(
"${source.baseUrl}/?f=0&c=${getPreferenceValue(source.id, "preferred_categorie_page")}&q=&s=downloads&o=desc&p=$page")))
.body;
return parseAnimeList(res, source.baseUrl);
return parseAnimeList(res);
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = (await client.get(Uri.parse(
"${source.baseUrl}/?f=0&c=${getPreferenceValue(source.id, "preferred_categorie_page")}&q=$page")))
.body;
return parseAnimeList(res, source.baseUrl);
return parseAnimeList(res);
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
String url = "";
url =
@@ -36,11 +37,11 @@ class Nyaa extends MProvider {
}
}
final res = (await client.get(Uri.parse(url))).body;
return parseAnimeList(res, source.baseUrl);
return parseAnimeList(res);
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
MManga anime = MManga();
final res = (await client.get(Uri.parse(url))).body;
final document = parseHtml(res);
@@ -59,7 +60,7 @@ class Nyaa extends MProvider {
}
@override
List<dynamic> getFilterList(MSource source) {
List<dynamic> getFilterList() {
return [
SortFilter("SortFilter", "Sort by", SortState(0, true), [
SelectFilterOption("None", ""),
@@ -73,7 +74,7 @@ class Nyaa extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
ListPreference(
key: "preferred_categorie_page",
@@ -85,7 +86,7 @@ class Nyaa extends MProvider {
];
}
MPages parseAnimeList(String res, String baseUrl) {
MPages parseAnimeList(String res) {
List<MManga> animeList = [];
final document = parseHtml(res);
@@ -94,7 +95,7 @@ class Nyaa extends MProvider {
for (var value in values) {
MManga anime = MManga();
anime.imageUrl =
"$baseUrl${getUrlWithoutDomain(value.selectFirst("td:nth-child(1) > a > img").getSrc)}";
"${source.baseUrl}${getUrlWithoutDomain(value.selectFirst("td:nth-child(1) > a > img").getSrc)}";
MElement firstElement = value
.select("td > a")
.where((MElement e) =>
@@ -102,7 +103,8 @@ class Nyaa extends MProvider {
!e.outerHtml.contains("#comments"))
.toList()
.first;
anime.link = "$baseUrl${getUrlWithoutDomain(firstElement.getHref)}";
anime.link =
"${source.baseUrl}${getUrlWithoutDomain(firstElement.getHref)}";
anime.name = firstElement.attr("title");
animeList.add(anime);
}
@@ -121,6 +123,6 @@ class Nyaa extends MProvider {
}
}
Nyaa main() {
return Nyaa();
Nyaa main(MSource source) {
return Nyaa(source: source);
}

View File

@@ -1,6 +1,6 @@
import '../../../../model/source.dart';
const _nyaaVersion = "0.0.1";
const _nyaaVersion = "0.0.15";
const _nyaaSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/all/nyaa/nyaa.dart";
@@ -16,5 +16,4 @@ Source _nyaaSource = Source(
iconUrl: _iconUrl,
version: _nyaaVersion,
isManga: false,
appMinVerReq: "0.1.65",
sourceCodeUrl: _nyaaSourceCodeUrl);

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class OkAnime extends MProvider {
OkAnime();
OkAnime({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client.get(Uri.parse(source.baseUrl))).body;
List<MManga> animeList = [];
String path =
@@ -27,7 +29,7 @@ class OkAnime extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = (await client
.get(Uri.parse("${source.baseUrl}/espisode-list?page=$page")))
.body;
@@ -50,8 +52,7 @@ class OkAnime extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
String url = "${source.baseUrl}/search/?s=$query";
if (page > 1) {
url += "&page=$page";
@@ -78,7 +79,7 @@ class OkAnime extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final statusList = [
{"يعرض الان": 0, "مكتمل": 1}
];
@@ -114,7 +115,7 @@ class OkAnime extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final res = (await client.get(Uri.parse(url))).body;
final urls = xpath(res, '//*[@id="streamlinks"]/a/@data-src');
final qualities = xpath(res, '//*[@id="streamlinks"]/a/span/text()');
@@ -143,7 +144,7 @@ class OkAnime extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
ListPreference(
key: "preferred_quality",
@@ -217,6 +218,6 @@ class OkAnime extends MProvider {
}
}
OkAnime main() {
return OkAnime();
OkAnime main(MSource source) {
return OkAnime(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get okanimeSource => _okanimeSource;
const _okanimeVersion = "0.0.45";
const _okanimeVersion = "0.0.5";
const _okanimeSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/ar/okanime/okanime.dart";
Source _okanimeSource = Source(

View File

@@ -2,23 +2,25 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class AniFlix extends MProvider {
AniFlix();
AniFlix({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final headers = getHeader(source.baseUrl);
final res = (await client.get(
Uri.parse("${source.baseUrl}/api/show/new/${page - 1}"),
headers: headers))
.body;
return parseAnimeList(res, source.baseUrl, true);
return parseAnimeList(res, true);
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final headers = getHeader(source.baseUrl);
final res = (await client.get(
Uri.parse("${source.baseUrl}/api/show/airing/${page - 1}"),
@@ -50,17 +52,16 @@ class AniFlix extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final res = await client.post(
Uri.parse("${source.baseUrl}/api/show/search"),
headers: {'Referer': source.baseUrl},
body: {"search": query});
return parseAnimeList(res.body, source.baseUrl, false);
return parseAnimeList(res.body, false);
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final res = (await client.get(Uri.parse("${source.baseUrl}$url"))).body;
MManga anime = MManga();
final jsonRes = json.decode(res);
@@ -117,7 +118,7 @@ class AniFlix extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final res = (await client.get(Uri.parse("${source.baseUrl}$url"),
headers: getHeader(source.baseUrl)))
.body;
@@ -147,15 +148,17 @@ class AniFlix extends MProvider {
return sortVideos(videos, source.id);
}
MPages parseAnimeList(String res, String baseUrl, bool hasNextPage) {
MPages parseAnimeList(String res, bool hasNextPage) {
final datas = json.decode(res);
List<MManga> animeList = [];
for (var data in datas) {
MManga anime = MManga();
anime.name = data["name"];
anime.imageUrl = "$baseUrl/storage/" + (data["cover_portrait"] ?? "");
anime.link = getUrlWithoutDomain("$baseUrl/api/show/${data['url']}");
anime.imageUrl =
"${source.baseUrl}/storage/" + (data["cover_portrait"] ?? "");
anime.link =
getUrlWithoutDomain("${source.baseUrl}/api/show/${data['url']}");
anime.description = data["description"];
if (data["airing"] == 0) {
anime.status = MStatus.completed;
@@ -191,7 +194,7 @@ class AniFlix extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
ListPreference(
key: "preferred_hoster",
@@ -232,6 +235,6 @@ Map<String, String> getHeader(String url) {
return {'Referer': url};
}
AniFlix main() {
return AniFlix();
AniFlix main(MSource source) {
return AniFlix(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get aniflix => _aniflix;
const _aniflixVersion = "0.0.2";
const _aniflixVersion = "0.0.25";
const _aniflixCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/de/aniflix/aniflix.dart";
Source _aniflix = Source(

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class Aniwave extends MProvider {
Aniwave();
Aniwave({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client.get(Uri.parse(
"${preferenceBaseUrl(source.id)}/filter?sort=trending&page=$page")))
.body;
@@ -15,7 +17,7 @@ class Aniwave extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = (await client.get(Uri.parse(
"${preferenceBaseUrl(source.id)}/filter?sort=recently_updated&page=$page")))
.body;
@@ -23,8 +25,7 @@ class Aniwave extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
String url = "${preferenceBaseUrl(source.id)}/filter?keyword=$query";
@@ -96,7 +97,7 @@ class Aniwave extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final statusList = [
{"Releasing": 0, "Completed": 1}
];
@@ -168,7 +169,7 @@ class Aniwave extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final ids = substringBefore(url, "&");
final encrypt = vrfEncrypt(ids);
final vrf = "vrf=${Uri.encodeComponent(encrypt)}";
@@ -412,7 +413,7 @@ class Aniwave extends MProvider {
}
@override
List<dynamic> getFilterList(MSource source) {
List<dynamic> getFilterList() {
return [
SelectFilter("OrderFilter", "Sort order", 0, [
SelectFilterOption("Most relevance", "most_relevance"),
@@ -545,7 +546,7 @@ class Aniwave extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
ListPreference(
key: "preferred_domain1",
@@ -685,6 +686,6 @@ class Aniwave extends MProvider {
}
}
Aniwave main() {
return Aniwave();
Aniwave main(MSource source) {
return Aniwave(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get aniwave => _aniwave;
const _aniwaveVersion = "0.0.55";
const _aniwaveVersion = "0.0.6";
const _aniwaveCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/aniwave/aniwave.dart";
Source _aniwave = Source(

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class DramaCool extends MProvider {
DramaCool();
DramaCool({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client.get(Uri.parse(
"${preferenceBaseUrl(source.id)}/most-popular-drama?page=$page")))
.body;
@@ -17,7 +19,7 @@ class DramaCool extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = (await client.get(Uri.parse(
"${preferenceBaseUrl(source.id)}/recently-added?page=$page")))
.body;
@@ -27,8 +29,7 @@ class DramaCool extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final res = (await client.get(Uri.parse(
"${preferenceBaseUrl(source.id)}/search?keyword=$query&page=$page")))
.body;
@@ -38,7 +39,7 @@ class DramaCool extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final statusList = [
{"Ongoing": 0, "Completed": 1}
];
@@ -100,7 +101,7 @@ class DramaCool extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
url = getUrlWithoutDomain(url);
final res =
@@ -131,7 +132,7 @@ class DramaCool extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
EditTextPreference(
key: "overrideBaseUrl",
@@ -211,6 +212,6 @@ class DramaCool extends MProvider {
}
}
DramaCool main() {
return DramaCool();
DramaCool main(MSource source) {
return DramaCool(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get dramacoolSource => _dramacoolSource;
const _dramacoolVersion = "0.0.15";
const _dramacoolVersion = "0.0.2";
const _dramacoolSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/dramacool/dramacool.dart";
Source _dramacoolSource = Source(

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class GogoAnime extends MProvider {
GogoAnime();
GogoAnime({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client.get(Uri.parse(
"${preferenceBaseUrl(source.id)}/popular.html?page=$page")))
.body;
@@ -29,7 +31,7 @@ class GogoAnime extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = (await client.get(Uri.parse(
"https://ajax.gogo-load.com/ajax/page-recent-release-ongoing.html?page=$page&type=1")))
.body;
@@ -58,8 +60,7 @@ class GogoAnime extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
String filterStr = "";
String url = "";
@@ -161,7 +162,7 @@ class GogoAnime extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final statusList = [
{"Ongoing": 0, "Completed": 1}
];
@@ -212,7 +213,7 @@ class GogoAnime extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final res =
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
.body;
@@ -248,7 +249,7 @@ class GogoAnime extends MProvider {
}
@override
List<dynamic> getFilterList(MSource source) {
List<dynamic> getFilterList() {
return [
HeaderFilter("Advanced search"),
GroupFilter("GenreFilter", "Genre", [
@@ -1030,7 +1031,7 @@ class GogoAnime extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
EditTextPreference(
key: "override_baseurl_v${source.id}",
@@ -1137,6 +1138,6 @@ class GogoAnime extends MProvider {
}
}
GogoAnime main() {
return GogoAnime();
GogoAnime main(MSource source) {
return GogoAnime(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get gogoanimeSource => _gogoanimeSource;
const _gogoanimeVersion = "0.0.7";
const _gogoanimeVersion = "0.0.75";
const _gogoanimeSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/gogoanime/gogoanime.dart";
Source _gogoanimeSource = Source(

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class KissKh extends MProvider {
KissKh();
KissKh({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client.get(Uri.parse(
"${source.baseUrl}/api/DramaList/List?page=$page&type=0&sub=0&country=0&status=0&order=1&pageSize=40")))
.body;
@@ -30,7 +32,7 @@ class KissKh extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = (await client.get(Uri.parse(
"${source.baseUrl}/api/DramaList/List?page=$page&type=0&sub=0&country=0&status=0&order=12&pageSize=40")))
.body;
@@ -54,8 +56,7 @@ class KissKh extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final res = (await client.get(Uri.parse(
"${source.baseUrl}/api/DramaList/Search?q=$query&type=0")))
.body;
@@ -73,7 +74,7 @@ class KissKh extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final statusList = [
{"Ongoing": 0, "Completed": 1}
];
@@ -114,7 +115,7 @@ class KissKh extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final res = (await client.get(Uri.parse(url))).body;
final id = substringAfter(substringBefore(url, ".png"), "Episode/");
final jsonRes = json.decode(res);
@@ -151,6 +152,6 @@ class KissKh extends MProvider {
}
}
KissKh main() {
return KissKh();
KissKh main(MSource source) {
return KissKh(source: source);
}

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class NineAnimeTv extends MProvider {
NineAnimeTv();
NineAnimeTv({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client
.get(Uri.parse("${source.baseUrl}/filter?sort=all&page=$page")))
.body;
@@ -15,7 +17,7 @@ class NineAnimeTv extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = (await client.get(Uri.parse(
"${source.baseUrl}/filter?sort=recently_updated&page=$page")))
.body;
@@ -23,8 +25,7 @@ class NineAnimeTv extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
String url = "${source.baseUrl}/filter?keyword=$query";
@@ -113,7 +114,7 @@ class NineAnimeTv extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final statusList = [
{"Currently Airing": 0, "Finished Airing": 1}
];
@@ -161,7 +162,7 @@ class NineAnimeTv extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final res = (await client.get(
Uri.parse("${source.baseUrl}/ajax/episode/servers?episodeId=$url")))
.body;
@@ -346,7 +347,7 @@ class NineAnimeTv extends MProvider {
}
@override
List<dynamic> getFilterList(MSource source) {
List<dynamic> getFilterList() {
return [
GroupFilter("GenreFilter", "Genre", [
CheckBoxFilter("Action", "1"),
@@ -452,7 +453,7 @@ class NineAnimeTv extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
ListPreference(
key: "preferred_quality",
@@ -540,6 +541,6 @@ class NineAnimeTv extends MProvider {
}
}
NineAnimeTv main() {
return NineAnimeTv();
NineAnimeTv main(MSource source) {
return NineAnimeTv(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get nineanimetv => _nineanimetv;
const _nineanimetvVersion = "0.0.2";
const _nineanimetvVersion = "0.0.25";
const _nineanimetvCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/nineanimetv/nineanimetv.dart";
Source _nineanimetv = Source(

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get uhdmoviesSource => _uhdmoviesSource;
const _uhdmoviesVersion = "0.0.25";
const _uhdmoviesVersion = "0.0.3";
const _uhdmoviesSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/uhdmovies/uhdmovies.dart";
Source _uhdmoviesSource = Source(

View File

@@ -2,15 +2,17 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class UHDMovies extends MProvider {
UHDMovies();
UHDMovies({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
bool get supportsLatest => false;
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client
.get(Uri.parse("${preferenceBaseUrl(source.id)}/page/$page")))
.body;
@@ -18,13 +20,12 @@ class UHDMovies extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
return MPages([], false);
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final res = (await client.get(Uri.parse(
"${preferenceBaseUrl(source.id)}/page/$page/?s=${query.replaceAll(" ", "+")}")))
.body;
@@ -32,7 +33,7 @@ class UHDMovies extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
url = getUrlWithoutDomain(url);
final res =
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}${url}")))
@@ -117,13 +118,13 @@ class UHDMovies extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final res = await getMediaUrl(url);
return await extractVideos(res);
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
EditTextPreference(
key: "pref_domain",
@@ -233,6 +234,6 @@ class UHDMovies extends MProvider {
}
}
UHDMovies main() {
return UHDMovies();
UHDMovies main(MSource source) {
return UHDMovies(source: source);
}

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class AnimeSama extends MProvider {
AnimeSama();
AnimeSama({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final doc = (await client.get(Uri.parse("${source.baseUrl}/#$page"))).body;
final regex = RegExp(r"""^\s*carteClassique\(\s*.*?\s*,\s*"(.*?)".*\)""",
multiLine: true);
@@ -24,7 +26,7 @@ class AnimeSama extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = (await client.get(Uri.parse(source.baseUrl))).body;
var document = parseHtml(res);
final latest = document
@@ -44,8 +46,7 @@ class AnimeSama extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
final res = (await client
.get(Uri.parse("${source.baseUrl}/catalogue/listing_all.php")))
@@ -104,7 +105,7 @@ class AnimeSama extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
var animeUrl =
"${source.baseUrl}${substringBeforeLast(getUrlWithoutDomain(url), "/")}";
var movie =
@@ -152,7 +153,7 @@ class AnimeSama extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final players = json.decode(url);
List<MVideo> videos = [];
for (var player in players) {
@@ -178,7 +179,7 @@ class AnimeSama extends MProvider {
}
@override
List<dynamic> getFilterList(MSource source) {
List<dynamic> getFilterList() {
return [
GroupFilter("TypeFilter", "Type", [
CheckBoxFilter("Anime", "Anime"),
@@ -218,7 +219,7 @@ class AnimeSama extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
ListPreference(
key: "preferred_quality",
@@ -403,6 +404,6 @@ class AnimeSama extends MProvider {
}
}
AnimeSama main() {
return AnimeSama();
AnimeSama main(MSource source) {
return AnimeSama(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get animesamaSource => _animesama;
const animesamaVersion = "0.0.15";
const animesamaVersion = "0.0.2";
const animesamaCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/animesama/animesama.dart";
Source _animesama = Source(

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class AnimesUltra extends MProvider {
AnimesUltra();
AnimesUltra({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client.get(Uri.parse(source.baseUrl))).body;
List<MManga> animeList = [];
@@ -30,7 +32,7 @@ class AnimesUltra extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = (await client.get(Uri.parse(source.baseUrl))).body;
List<MManga> animeList = [];
@@ -53,8 +55,7 @@ class AnimesUltra extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final res = (await client.get(Uri.parse(source.baseUrl))).body;
List<MManga> animeList = [];
@@ -74,7 +75,7 @@ class AnimesUltra extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final statusList = [
{"En cours": 0, "Terminé": 1}
];
@@ -116,7 +117,7 @@ class AnimesUltra extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final resWebview = await getHtmlViaWebview(
url, '//*[@class="ps__-list"]/div/@data-server-id');
@@ -152,6 +153,6 @@ class AnimesUltra extends MProvider {
}
}
AnimesUltra main() {
return AnimesUltra();
AnimesUltra main(MSource source) {
return AnimesUltra(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get animesultraSource => _animesultraSource;
const _animesultraVersion = "0.0.55";
const _animesultraVersion = "0.0.6";
const _animesultraSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/animesultra/animesultra.dart";
Source _animesultraSource = Source(

View File

@@ -2,19 +2,21 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class FrAnime extends MProvider {
FrAnime();
FrAnime({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = await dataBase();
return animeResList(res);
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = await dataBase();
List list = json.decode(res);
@@ -22,15 +24,14 @@ class FrAnime extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final res = await dataBase();
return animeSeachFetch(res, query);
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
MManga anime = MManga();
String language = "vo".toString();
if (url.contains("lang=")) {
@@ -84,7 +85,7 @@ class FrAnime extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
String language = "vo";
String videoBaseUrl = "https://api.franime.fr/api/anime";
if (url.contains("lang=")) {
@@ -336,6 +337,6 @@ class FrAnime extends MProvider {
}
}
FrAnime main() {
return FrAnime();
FrAnime main(MSource source) {
return FrAnime(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get franimeSource => _franimeSource;
const _franimeVersion = "0.0.6";
const _franimeVersion = "0.0.65";
const _franimeSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/franime/franime.dart";
Source _franimeSource = Source(

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class OtakuFr extends MProvider {
OtakuFr();
OtakuFr({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res =
(await client.get(Uri.parse("${source.baseUrl}/en-cours/page/$page")))
.body;
@@ -31,7 +33,7 @@ class OtakuFr extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res =
(await client.get(Uri.parse("${source.baseUrl}/page/$page/"))).body;
@@ -71,8 +73,7 @@ class OtakuFr extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
String url = "";
if (query.isNotEmpty) {
@@ -117,7 +118,7 @@ class OtakuFr extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final statusList = [
{"En cours": 0, "Terminé": 1}
];
@@ -171,7 +172,7 @@ class OtakuFr extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final res = (await client.get(Uri.parse(url))).body;
final servers = xpath(res, '//*[@id="nav-tabContent"]/div/iframe/@src');
@@ -220,7 +221,7 @@ class OtakuFr extends MProvider {
}
@override
List<dynamic> getFilterList(MSource source) {
List<dynamic> getFilterList() {
return [
HeaderFilter("La recherche de texte ignore les filtres"),
SelectFilter("GenreFilter", "Genre", 0, [
@@ -276,7 +277,7 @@ class OtakuFr extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
ListPreference(
key: "preferred_quality",
@@ -436,6 +437,6 @@ class OtakuFr extends MProvider {
}
}
OtakuFr main() {
return OtakuFr();
OtakuFr main(MSource source) {
return OtakuFr(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get otakufr => _otakufr;
const otakufrVersion = "0.0.7";
const otakufrVersion = "0.0.75";
const otakufrCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/otakufr/otakufr.dart";
Source _otakufr = Source(

View File

@@ -2,15 +2,17 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class YoMovies extends MProvider {
YoMovies();
YoMovies({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
bool get supportsLatest => false;
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
String pageNu = page == 1 ? "" : "page/$page/";
final res = (await client.get(Uri.parse(
@@ -24,13 +26,12 @@ class YoMovies extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
return MPages([], false);
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
String url = "";
String pageNu = page == 1 ? "" : "/page/$page";
@@ -56,7 +57,7 @@ class YoMovies extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
url = getUrlWithoutDomain(url);
final res =
@@ -96,7 +97,7 @@ class YoMovies extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
url = getUrlWithoutDomain(url);
final res =
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
@@ -116,7 +117,7 @@ class YoMovies extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
EditTextPreference(
key: "overrideBaseUrl",
@@ -209,7 +210,7 @@ class YoMovies extends MProvider {
}
@override
List<dynamic> getFilterList(MSource source) {
List<dynamic> getFilterList() {
return [
HeaderFilter(
"Note: Only one selection at a time works, and it ignores text search"),
@@ -340,6 +341,6 @@ class YoMovies extends MProvider {
}
}
YoMovies main() {
return YoMovies();
YoMovies main(MSource source) {
return YoMovies(source: source);
}

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class NimeGami extends MProvider {
NimeGami();
NimeGami({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res =
(await client.get(Uri.parse("${source.baseUrl}/page/$page"))).body;
List<MManga> animeList = [];
@@ -27,7 +29,7 @@ class NimeGami extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res =
(await client.get(Uri.parse("${source.baseUrl}/page/$page"))).body;
List<MManga> animeList = [];
@@ -48,8 +50,7 @@ class NimeGami extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final res = (await client.get(
Uri.parse("${source.baseUrl}/page/$page/?s=$query&post_type=post")))
.body;
@@ -70,7 +71,7 @@ class NimeGami extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final res = (await client.get(Uri.parse(url))).body;
MManga anime = MManga();
final description = xpath(res, '//*[@id="Sinopsis"]/p/text()');
@@ -106,7 +107,7 @@ class NimeGami extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final resJson = json.decode(url);
final urls = resJson["urls"];
List<MVideo> videos = [];
@@ -176,6 +177,6 @@ class NimeGami extends MProvider {
}
}
NimeGami main() {
return NimeGami();
NimeGami main(MSource source) {
return NimeGami(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get nimegami => _nimegami;
const _nimegamiVersion = "0.0.45";
const _nimegamiVersion = "0.0.5";
const _nimegamiCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/nimegami/nimegami.dart";
Source _nimegami = Source(

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class OploVerz extends MProvider {
OploVerz();
OploVerz({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client.get(Uri.parse(
"${source.baseUrl}/anime-list/page/$page/?order=popular")))
.body;
@@ -15,7 +17,7 @@ class OploVerz extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = (await client.get(
Uri.parse("${source.baseUrl}/anime-list/page/$page/?order=latest")))
.body;
@@ -23,8 +25,7 @@ class OploVerz extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final res = (await client.get(
Uri.parse("${source.baseUrl}/anime-list/page/$page/?title=$query")))
.body;
@@ -32,7 +33,7 @@ class OploVerz extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final statusList = [
{"ongoing": 0, "completed": 1}
];
@@ -67,7 +68,7 @@ class OploVerz extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final res = (await client.get(Uri.parse(url))).body;
final dataPost = xpath(res,
'//*[@id="server"]/ul/li/div[contains(@id,"player-option")]/@data-post')
@@ -147,6 +148,6 @@ class OploVerz extends MProvider {
}
}
OploVerz main() {
return OploVerz();
OploVerz main(MSource source) {
return OploVerz(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get oploverz => _oploverz;
const _oploverzVersion = "0.0.35";
const _oploverzVersion = "0.0.4";
const _oploverzCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/oploverz/oploverz.dart";
Source _oploverz = Source(

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class OtakuDesu extends MProvider {
OtakuDesu();
OtakuDesu({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client
.get(Uri.parse("${source.baseUrl}/complete-anime/page/$page")))
.body;
@@ -15,7 +17,7 @@ class OtakuDesu extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res = (await client
.get(Uri.parse("${source.baseUrl}/ongoing-anime/page/$page")))
.body;
@@ -23,8 +25,7 @@ class OtakuDesu extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final res = (await client
.get(Uri.parse("${source.baseUrl}/?s=$query&post_type=anime")))
.body;
@@ -44,7 +45,7 @@ class OtakuDesu extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final statusList = [
{"Ongoing": 0, "Completed": 1}
];
@@ -85,7 +86,7 @@ class OtakuDesu extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
List<MVideo> videos = [];
final res = (await client.get(Uri.parse(url))).body;
final script =
@@ -186,6 +187,6 @@ class OtakuDesu extends MProvider {
}
}
OtakuDesu main() {
return OtakuDesu();
OtakuDesu main(MSource source) {
return OtakuDesu(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get otakudesu => _otakudesu;
const _otakudesuVersion = "0.0.4";
const _otakudesuVersion = "0.0.45";
const _otakudesuCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/otakudesu/otakudesu.dart";
Source _otakudesu = Source(

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class AnimeSaturn extends MProvider {
AnimeSaturn();
AnimeSaturn({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
final res = (await client
.get(Uri.parse("${source.baseUrl}/animeincorso?page=$page")))
.body;
@@ -34,7 +36,7 @@ class AnimeSaturn extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
final res =
(await client.get(Uri.parse("${source.baseUrl}/newest?page=$page")))
.body;
@@ -59,8 +61,7 @@ class AnimeSaturn extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
String url = "";
@@ -141,7 +142,7 @@ class AnimeSaturn extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
final statusList = [
{"In corso": 0, "Finito": 1}
];
@@ -192,7 +193,7 @@ class AnimeSaturn extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final res = (await client.get(Uri.parse(url))).body;
final urlVid = xpath(res, '//a[contains(@href,"/watch")]/@href').first;
@@ -245,7 +246,7 @@ class AnimeSaturn extends MProvider {
}
@override
List<dynamic> getFilterList(MSource source) {
List<dynamic> getFilterList() {
return [
HeaderFilter("Ricerca per titolo ignora i filtri e viceversa"),
GroupFilter("GenreFilter", "Generi", [
@@ -313,7 +314,7 @@ class AnimeSaturn extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
ListPreference(
key: "preferred_quality",
@@ -353,6 +354,6 @@ class AnimeSaturn extends MProvider {
}
}
AnimeSaturn main() {
return AnimeSaturn();
AnimeSaturn main(MSource source) {
return AnimeSaturn(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get animesaturn => _animesaturn;
const _animesaturnVersion = "0.0.25";
const _animesaturnVersion = "0.0.3";
const _animesaturnCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/it/animesaturn/animesaturn.dart";
Source _animesaturn = Source(

View File

@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class Filma24 extends MProvider {
Filma24();
Filma24({required this.source});
final Client client = Client();
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(MSource source, int page) async {
Future<MPages> getPopular(int page) async {
String pageNu = page == 1 ? "" : "/page/$page/";
final res =
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$pageNu")))
@@ -16,7 +18,7 @@ class Filma24 extends MProvider {
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
Future<MPages> getLatestUpdates(int page) async {
String pageNu = page == 1 ? "" : "page/$page/";
final res = (await client.get(
Uri.parse("${preferenceBaseUrl(source.id)}/$pageNu?sort=trendy")))
@@ -25,8 +27,7 @@ class Filma24 extends MProvider {
}
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
String url = "";
String pageNu = page == 1 ? "" : "page/$page/";
@@ -56,7 +57,7 @@ class Filma24 extends MProvider {
}
@override
Future<MManga> getDetail(MSource source, String url) async {
Future<MManga> getDetail(String url) async {
List<MChapter>? episodesList = [];
if (!url.contains("seriale")) {
MChapter episode = MChapter();
@@ -86,7 +87,7 @@ class Filma24 extends MProvider {
}
@override
Future<List<MVideo>> getVideoList(MSource source, String url) async {
Future<List<MVideo>> getVideoList(String url) async {
final res = (await client.get(Uri.parse(url))).body;
List<MVideo> videos = [];
final serverUrls = xpath(res, '//*[@class="player"]/div[1]/a/@href');
@@ -117,7 +118,7 @@ class Filma24 extends MProvider {
}
@override
List<dynamic> getSourcePreferences(MSource source) {
List<dynamic> getSourcePreferences() {
return [
EditTextPreference(
key: "pref_domain",
@@ -135,7 +136,7 @@ class Filma24 extends MProvider {
}
@override
List<dynamic> getFilterList(MSource source) {
List<dynamic> getFilterList() {
return [
SelectFilter("ReleaseFilter", "Viti", 0, [
SelectFilterOption("<Select>", ""),
@@ -289,6 +290,6 @@ class Filma24 extends MProvider {
}
}
Filma24 main() {
return Filma24();
Filma24 main(MSource source) {
return Filma24(source: source);
}

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get filma24 => _filma24;
const _filma24Version = "0.0.15";
const _filma24Version = "0.0.2";
const _filma24CodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/sq/filma24/filma24.dart";
Source _filma24 = Source(