mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-15 11:21:11 +00:00
Refactor
This commit is contained in:
@@ -60,50 +60,50 @@ class TestSource extends MProvider {
|
|||||||
bool get supportsLatest => true;
|
bool get supportsLatest => true;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
String query, int page, FilterList filterList) async {
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
}
|
}
|
||||||
|
|
||||||
// For anime episode video list
|
// For anime episode video list
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
}
|
}
|
||||||
|
|
||||||
// For manga chapter pages
|
// For manga chapter pages
|
||||||
@override
|
@override
|
||||||
Future<List<String>> getPageList(MSource source, String url) {
|
Future<List<String>> getPageList(String url) {
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TestSource main() {
|
TestSource main(MSource source) {
|
||||||
return TestSource();
|
return TestSource();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,29 +2,30 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class DataLifeEngine extends MProvider {
|
class DataLifeEngine extends MProvider {
|
||||||
DataLifeEngine();
|
DataLifeEngine({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool get supportsLatest => false;
|
bool get supportsLatest => false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client
|
final res = (await client
|
||||||
.get(Uri.parse("${source.baseUrl}${getPath(source)}page/$page")))
|
.get(Uri.parse("${source.baseUrl}${getPath(source)}page/$page")))
|
||||||
.body;
|
.body;
|
||||||
return animeFromElement(res, source.baseUrl);
|
return animeFromElement(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
return MPages([], false);
|
return MPages([], false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
final baseUrl = source.baseUrl;
|
final baseUrl = source.baseUrl;
|
||||||
String res = "";
|
String res = "";
|
||||||
@@ -65,11 +66,11 @@ class DataLifeEngine extends MProvider {
|
|||||||
res = (await client.get(Uri.parse(url))).body;
|
res = (await client.get(Uri.parse(url))).body;
|
||||||
}
|
}
|
||||||
|
|
||||||
return animeFromElement(res, baseUrl);
|
return animeFromElement(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
String res = (await client.get(Uri.parse(url))).body;
|
String res = (await client.get(Uri.parse(url))).body;
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
final description = xpath(res, '//span[@itemprop="description"]/text()');
|
final description = xpath(res, '//span[@itemprop="description"]/text()');
|
||||||
@@ -116,7 +117,7 @@ class DataLifeEngine extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
List<MVideo> videos = [];
|
List<MVideo> videos = [];
|
||||||
final sUrls = url.split(',');
|
final sUrls = url.split(',');
|
||||||
for (var sUrl in sUrls) {
|
for (var sUrl in sUrls) {
|
||||||
@@ -143,7 +144,7 @@ class DataLifeEngine extends MProvider {
|
|||||||
return videos;
|
return videos;
|
||||||
}
|
}
|
||||||
|
|
||||||
MPages animeFromElement(String res, String baseUrl) {
|
MPages animeFromElement(String res) {
|
||||||
final htmls = parseHtml(res).select("div#dle-content > div.mov");
|
final htmls = parseHtml(res).select("div#dle-content > div.mov");
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
for (var h in htmls) {
|
for (var h in htmls) {
|
||||||
@@ -155,7 +156,7 @@ class DataLifeEngine extends MProvider {
|
|||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
anime.name =
|
anime.name =
|
||||||
"$name ${season.isNotEmpty ? season.first.replaceAll("\n", " ") : ""}";
|
"$name ${season.isNotEmpty ? season.first.replaceAll("\n", " ") : ""}";
|
||||||
anime.imageUrl = "$baseUrl$image";
|
anime.imageUrl = "${source.baseUrl}$image";
|
||||||
anime.link = url;
|
anime.link = url;
|
||||||
animeList.add(anime);
|
animeList.add(anime);
|
||||||
}
|
}
|
||||||
@@ -245,13 +246,13 @@ class DataLifeEngine extends MProvider {
|
|||||||
return [video];
|
return [video];
|
||||||
}
|
}
|
||||||
|
|
||||||
String getPath(MSource source) {
|
String getPath() {
|
||||||
if (source.name == "French Anime") return "/animes-vostfr/";
|
if (source.name == "French Anime") return "/animes-vostfr/";
|
||||||
return "/serie-en-streaming/";
|
return "/serie-en-streaming/";
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
HeaderFilter("La recherche de texte ignore les filtres"),
|
HeaderFilter("La recherche de texte ignore les filtres"),
|
||||||
if (source.name == "French Anime")
|
if (source.name == "French Anime")
|
||||||
@@ -326,6 +327,6 @@ class DataLifeEngine extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DataLifeEngine main() {
|
DataLifeEngine main(MSource source) {
|
||||||
return DataLifeEngine();
|
return DataLifeEngine(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import '../../../model/source.dart';
|
|||||||
import 'src/frenchanime/frenchanime.dart';
|
import 'src/frenchanime/frenchanime.dart';
|
||||||
import 'src/wiflix/wiflix.dart';
|
import 'src/wiflix/wiflix.dart';
|
||||||
|
|
||||||
const _datalifeengineVersion = "0.0.25";
|
const _datalifeengineVersion = "0.0.3";
|
||||||
const _datalifeengineSourceCodeUrl =
|
const _datalifeengineSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/datalifeengine/datalifeengine.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/datalifeengine/datalifeengine.dart";
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class DopeFlix extends MProvider {
|
class DopeFlix extends MProvider {
|
||||||
DopeFlix();
|
DopeFlix({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, 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")))
|
"${preferenceBaseUrl(source.id)}/${getPreferenceValue(source.id, "preferred_popular_page")}?page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -15,7 +17,7 @@ class DopeFlix extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res =
|
final res =
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}/home")))
|
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}/home")))
|
||||||
.body;
|
.body;
|
||||||
@@ -37,8 +39,7 @@ class DopeFlix extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "${preferenceBaseUrl(source.id)}";
|
String url = "${preferenceBaseUrl(source.id)}";
|
||||||
|
|
||||||
@@ -81,7 +82,7 @@ class DopeFlix extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
url = getUrlWithoutDomain(url);
|
url = getUrlWithoutDomain(url);
|
||||||
final res =
|
final res =
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
||||||
@@ -145,7 +146,7 @@ class DopeFlix extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, 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("${preferenceBaseUrl(source.id)}/$url")))
|
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}/$url")))
|
||||||
@@ -317,7 +318,7 @@ class DopeFlix extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
SelectFilter("TypeFilter", "Type", 0, [
|
SelectFilter("TypeFilter", "Type", 0, [
|
||||||
SelectFilterOption("All", "all"),
|
SelectFilterOption("All", "all"),
|
||||||
@@ -413,7 +414,7 @@ class DopeFlix extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
if (source.name == "DopeBox")
|
if (source.name == "DopeBox")
|
||||||
ListPreference(
|
ListPreference(
|
||||||
@@ -542,6 +543,6 @@ class DopeFlix extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DopeFlix main() {
|
DopeFlix main(MSource source) {
|
||||||
return DopeFlix();
|
return DopeFlix(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import '../../../model/source.dart';
|
|||||||
import 'src/dopebox/dopebox.dart';
|
import 'src/dopebox/dopebox.dart';
|
||||||
import 'src/sflix/sflix.dart';
|
import 'src/sflix/sflix.dart';
|
||||||
|
|
||||||
const _dopeflixVersion = "0.0.35";
|
const _dopeflixVersion = "0.0.4";
|
||||||
const _dopeflixSourceCodeUrl =
|
const _dopeflixSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/dopeflix/dopeflix.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/dopeflix/dopeflix.dart";
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import '../../../model/source.dart';
|
|||||||
import 'src/aniwatch/aniwatch.dart';
|
import 'src/aniwatch/aniwatch.dart';
|
||||||
import 'src/kaido/kaido.dart';
|
import 'src/kaido/kaido.dart';
|
||||||
|
|
||||||
const _zorothemeVersion = "0.0.75";
|
const _zorothemeVersion = "0.0.8";
|
||||||
const _zorothemeSourceCodeUrl =
|
const _zorothemeSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/zorotheme/zorotheme.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/zorotheme/zorotheme.dart";
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class ZoroTheme extends MProvider {
|
class ZoroTheme extends MProvider {
|
||||||
ZoroTheme();
|
ZoroTheme({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client
|
final res = (await client
|
||||||
.get(Uri.parse("${source.baseUrl}/most-popular?page=$page")))
|
.get(Uri.parse("${source.baseUrl}/most-popular?page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -16,7 +18,7 @@ class ZoroTheme extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client
|
final res = (await client
|
||||||
.get(Uri.parse("${source.baseUrl}/recently-updated?page=$page")))
|
.get(Uri.parse("${source.baseUrl}/recently-updated?page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -25,8 +27,7 @@ class ZoroTheme extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "${source.baseUrl}/";
|
String url = "${source.baseUrl}/";
|
||||||
|
|
||||||
@@ -119,7 +120,7 @@ class ZoroTheme extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"Currently Airing": 0, "Finished Airing": 1}
|
{"Currently Airing": 0, "Finished Airing": 1}
|
||||||
];
|
];
|
||||||
@@ -170,7 +171,7 @@ class ZoroTheme extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
final id = substringAfterLast(url, '?ep=');
|
final id = substringAfterLast(url, '?ep=');
|
||||||
|
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
@@ -384,7 +385,7 @@ class ZoroTheme extends MProvider {
|
|||||||
];
|
];
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
SelectFilter("TypeFilter", "Type", 0, [
|
SelectFilter("TypeFilter", "Type", 0, [
|
||||||
SelectFilterOption("All", ""),
|
SelectFilterOption("All", ""),
|
||||||
@@ -518,7 +519,7 @@ class ZoroTheme extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
ListPreference(
|
ListPreference(
|
||||||
key: "preferred_quality",
|
key: "preferred_quality",
|
||||||
@@ -606,6 +607,6 @@ class ZoroTheme extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ZoroTheme main() {
|
ZoroTheme main(MSource source) {
|
||||||
return ZoroTheme();
|
return ZoroTheme(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,31 +2,32 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class AnimeWorldIndia extends MProvider {
|
class AnimeWorldIndia extends MProvider {
|
||||||
AnimeWorldIndia();
|
AnimeWorldIndia({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${source.baseUrl}/advanced-search/page/$page/?s_lang=${source.lang}&s_orderby=viewed")))
|
"${source.baseUrl}/advanced-search/page/$page/?s_lang=${source.lang}&s_orderby=viewed")))
|
||||||
.body;
|
.body;
|
||||||
|
|
||||||
return parseAnimeList(res, source.baseUrl);
|
return parseAnimeList(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${source.baseUrl}/advanced-search/page/$page/?s_lang=${source.lang}&s_orderby=update")))
|
"${source.baseUrl}/advanced-search/page/$page/?s_lang=${source.lang}&s_orderby=update")))
|
||||||
.body;
|
.body;
|
||||||
|
|
||||||
return parseAnimeList(res, source.baseUrl);
|
return parseAnimeList(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url =
|
String url =
|
||||||
"${source.baseUrl}/advanced-search/page/$page/?s_keyword=$query&s_lang=${source.lang}";
|
"${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;
|
final res = (await client.get(Uri.parse(url))).body;
|
||||||
return parseAnimeList(res, source.baseUrl);
|
return parseAnimeList(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final res = (await client.get(Uri.parse(url))).body;
|
final res = (await client.get(Uri.parse(url))).body;
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
final document = parseHtml(res);
|
final document = parseHtml(res);
|
||||||
@@ -143,7 +144,7 @@ class AnimeWorldIndia extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@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;
|
final res = (await client.get(Uri.parse("${source.baseUrl}$url"))).body;
|
||||||
var resJson = substringBefore(
|
var resJson = substringBefore(
|
||||||
substringAfterLast(res, "\"players\":"), ",\"noplayer\":");
|
substringAfterLast(res, "\"players\":"), ",\"noplayer\":");
|
||||||
@@ -168,7 +169,7 @@ class AnimeWorldIndia extends MProvider {
|
|||||||
return sortVideos(videos, source.id);
|
return sortVideos(videos, source.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
MPages parseAnimeList(String res, String baseUrl) {
|
MPages parseAnimeList(String res) {
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
final document = parseHtml(res);
|
final document = parseHtml(res);
|
||||||
|
|
||||||
@@ -178,7 +179,7 @@ class AnimeWorldIndia extends MProvider {
|
|||||||
element.selectFirst("div.font-medium.line-clamp-2.mb-3").text;
|
element.selectFirst("div.font-medium.line-clamp-2.mb-3").text;
|
||||||
anime.link = element.selectFirst("a").getHref;
|
anime.link = element.selectFirst("a").getHref;
|
||||||
anime.imageUrl =
|
anime.imageUrl =
|
||||||
"$baseUrl${getUrlWithoutDomain(element.selectFirst("img").getSrc)}";
|
"${source.baseUrl}${getUrlWithoutDomain(element.selectFirst("img").getSrc)}";
|
||||||
animeList.add(anime);
|
animeList.add(anime);
|
||||||
}
|
}
|
||||||
final hasNextPage = xpath(res,
|
final hasNextPage = xpath(res,
|
||||||
@@ -244,7 +245,7 @@ class AnimeWorldIndia extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
SelectFilter("TypeFilter", "Type", 0, [
|
SelectFilter("TypeFilter", "Type", 0, [
|
||||||
SelectFilterOption("Any", "all"),
|
SelectFilterOption("Any", "all"),
|
||||||
@@ -343,7 +344,7 @@ class AnimeWorldIndia extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
ListPreference(
|
ListPreference(
|
||||||
key: "preferred_quality",
|
key: "preferred_quality",
|
||||||
@@ -389,6 +390,6 @@ class AnimeWorldIndia extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AnimeWorldIndia main() {
|
AnimeWorldIndia main(MSource source) {
|
||||||
return AnimeWorldIndia();
|
return AnimeWorldIndia(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
const _animeworldindiaVersion = "0.0.15";
|
const _animeworldindiaVersion = "0.0.2";
|
||||||
const _animeworldindiaSourceCodeUrl =
|
const _animeworldindiaSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/all/animeworldindia/animeworldindia.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/all/animeworldindia/animeworldindia.dart";
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,30 @@
|
|||||||
import 'package:mangayomi/bridge_lib.dart';
|
import 'package:mangayomi/bridge_lib.dart';
|
||||||
|
|
||||||
class Nyaa extends MProvider {
|
class Nyaa extends MProvider {
|
||||||
Nyaa();
|
Nyaa({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
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")))
|
"${source.baseUrl}/?f=0&c=${getPreferenceValue(source.id, "preferred_categorie_page")}&q=&s=downloads&o=desc&p=$page")))
|
||||||
.body;
|
.body;
|
||||||
return parseAnimeList(res, source.baseUrl);
|
return parseAnimeList(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${source.baseUrl}/?f=0&c=${getPreferenceValue(source.id, "preferred_categorie_page")}&q=$page")))
|
"${source.baseUrl}/?f=0&c=${getPreferenceValue(source.id, "preferred_categorie_page")}&q=$page")))
|
||||||
.body;
|
.body;
|
||||||
return parseAnimeList(res, source.baseUrl);
|
return parseAnimeList(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "";
|
String url = "";
|
||||||
url =
|
url =
|
||||||
@@ -36,11 +37,11 @@ class Nyaa extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
final res = (await client.get(Uri.parse(url))).body;
|
final res = (await client.get(Uri.parse(url))).body;
|
||||||
return parseAnimeList(res, source.baseUrl);
|
return parseAnimeList(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
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);
|
||||||
@@ -59,7 +60,7 @@ class Nyaa extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
SortFilter("SortFilter", "Sort by", SortState(0, true), [
|
SortFilter("SortFilter", "Sort by", SortState(0, true), [
|
||||||
SelectFilterOption("None", ""),
|
SelectFilterOption("None", ""),
|
||||||
@@ -73,7 +74,7 @@ class Nyaa extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
ListPreference(
|
ListPreference(
|
||||||
key: "preferred_categorie_page",
|
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 = [];
|
List<MManga> animeList = [];
|
||||||
final document = parseHtml(res);
|
final document = parseHtml(res);
|
||||||
|
|
||||||
@@ -94,7 +95,7 @@ class Nyaa extends MProvider {
|
|||||||
for (var value in values) {
|
for (var value in values) {
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
anime.imageUrl =
|
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
|
MElement firstElement = value
|
||||||
.select("td > a")
|
.select("td > a")
|
||||||
.where((MElement e) =>
|
.where((MElement e) =>
|
||||||
@@ -102,7 +103,8 @@ class Nyaa extends MProvider {
|
|||||||
!e.outerHtml.contains("#comments"))
|
!e.outerHtml.contains("#comments"))
|
||||||
.toList()
|
.toList()
|
||||||
.first;
|
.first;
|
||||||
anime.link = "$baseUrl${getUrlWithoutDomain(firstElement.getHref)}";
|
anime.link =
|
||||||
|
"${source.baseUrl}${getUrlWithoutDomain(firstElement.getHref)}";
|
||||||
anime.name = firstElement.attr("title");
|
anime.name = firstElement.attr("title");
|
||||||
animeList.add(anime);
|
animeList.add(anime);
|
||||||
}
|
}
|
||||||
@@ -121,6 +123,6 @@ class Nyaa extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Nyaa main() {
|
Nyaa main(MSource source) {
|
||||||
return Nyaa();
|
return Nyaa(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
const _nyaaVersion = "0.0.1";
|
const _nyaaVersion = "0.0.15";
|
||||||
const _nyaaSourceCodeUrl =
|
const _nyaaSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/all/nyaa/nyaa.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/all/nyaa/nyaa.dart";
|
||||||
|
|
||||||
@@ -16,5 +16,4 @@ Source _nyaaSource = Source(
|
|||||||
iconUrl: _iconUrl,
|
iconUrl: _iconUrl,
|
||||||
version: _nyaaVersion,
|
version: _nyaaVersion,
|
||||||
isManga: false,
|
isManga: false,
|
||||||
appMinVerReq: "0.1.65",
|
|
||||||
sourceCodeUrl: _nyaaSourceCodeUrl);
|
sourceCodeUrl: _nyaaSourceCodeUrl);
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class OkAnime extends MProvider {
|
class OkAnime extends MProvider {
|
||||||
OkAnime();
|
OkAnime({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@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;
|
final res = (await client.get(Uri.parse(source.baseUrl))).body;
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
String path =
|
String path =
|
||||||
@@ -27,7 +29,7 @@ class OkAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client
|
final res = (await client
|
||||||
.get(Uri.parse("${source.baseUrl}/espisode-list?page=$page")))
|
.get(Uri.parse("${source.baseUrl}/espisode-list?page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -50,8 +52,7 @@ class OkAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
String url = "${source.baseUrl}/search/?s=$query";
|
String url = "${source.baseUrl}/search/?s=$query";
|
||||||
if (page > 1) {
|
if (page > 1) {
|
||||||
url += "&page=$page";
|
url += "&page=$page";
|
||||||
@@ -78,7 +79,7 @@ class OkAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"يعرض الان": 0, "مكتمل": 1}
|
{"يعرض الان": 0, "مكتمل": 1}
|
||||||
];
|
];
|
||||||
@@ -114,7 +115,7 @@ class OkAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@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 res = (await client.get(Uri.parse(url))).body;
|
||||||
final urls = xpath(res, '//*[@id="streamlinks"]/a/@data-src');
|
final urls = xpath(res, '//*[@id="streamlinks"]/a/@data-src');
|
||||||
final qualities = xpath(res, '//*[@id="streamlinks"]/a/span/text()');
|
final qualities = xpath(res, '//*[@id="streamlinks"]/a/span/text()');
|
||||||
@@ -143,7 +144,7 @@ class OkAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
ListPreference(
|
ListPreference(
|
||||||
key: "preferred_quality",
|
key: "preferred_quality",
|
||||||
@@ -217,6 +218,6 @@ class OkAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OkAnime main() {
|
OkAnime main(MSource source) {
|
||||||
return OkAnime();
|
return OkAnime(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get okanimeSource => _okanimeSource;
|
Source get okanimeSource => _okanimeSource;
|
||||||
const _okanimeVersion = "0.0.45";
|
const _okanimeVersion = "0.0.5";
|
||||||
const _okanimeSourceCodeUrl =
|
const _okanimeSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/ar/okanime/okanime.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/ar/okanime/okanime.dart";
|
||||||
Source _okanimeSource = Source(
|
Source _okanimeSource = Source(
|
||||||
|
|||||||
@@ -2,23 +2,25 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class AniFlix extends MProvider {
|
class AniFlix extends MProvider {
|
||||||
AniFlix();
|
AniFlix({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final headers = getHeader(source.baseUrl);
|
final headers = getHeader(source.baseUrl);
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse("${source.baseUrl}/api/show/new/${page - 1}"),
|
Uri.parse("${source.baseUrl}/api/show/new/${page - 1}"),
|
||||||
headers: headers))
|
headers: headers))
|
||||||
.body;
|
.body;
|
||||||
|
|
||||||
return parseAnimeList(res, source.baseUrl, true);
|
return parseAnimeList(res, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final headers = getHeader(source.baseUrl);
|
final headers = getHeader(source.baseUrl);
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse("${source.baseUrl}/api/show/airing/${page - 1}"),
|
Uri.parse("${source.baseUrl}/api/show/airing/${page - 1}"),
|
||||||
@@ -50,17 +52,16 @@ class AniFlix extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final res = await client.post(
|
final res = await client.post(
|
||||||
Uri.parse("${source.baseUrl}/api/show/search"),
|
Uri.parse("${source.baseUrl}/api/show/search"),
|
||||||
headers: {'Referer': source.baseUrl},
|
headers: {'Referer': source.baseUrl},
|
||||||
body: {"search": query});
|
body: {"search": query});
|
||||||
return parseAnimeList(res.body, source.baseUrl, false);
|
return parseAnimeList(res.body, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@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;
|
final res = (await client.get(Uri.parse("${source.baseUrl}$url"))).body;
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
final jsonRes = json.decode(res);
|
final jsonRes = json.decode(res);
|
||||||
@@ -117,7 +118,7 @@ class AniFlix extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@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"),
|
final res = (await client.get(Uri.parse("${source.baseUrl}$url"),
|
||||||
headers: getHeader(source.baseUrl)))
|
headers: getHeader(source.baseUrl)))
|
||||||
.body;
|
.body;
|
||||||
@@ -147,15 +148,17 @@ class AniFlix extends MProvider {
|
|||||||
return sortVideos(videos, source.id);
|
return sortVideos(videos, source.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
MPages parseAnimeList(String res, String baseUrl, bool hasNextPage) {
|
MPages parseAnimeList(String res, bool hasNextPage) {
|
||||||
final datas = json.decode(res);
|
final datas = json.decode(res);
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
|
|
||||||
for (var data in datas) {
|
for (var data in datas) {
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
anime.name = data["name"];
|
anime.name = data["name"];
|
||||||
anime.imageUrl = "$baseUrl/storage/" + (data["cover_portrait"] ?? "");
|
anime.imageUrl =
|
||||||
anime.link = getUrlWithoutDomain("$baseUrl/api/show/${data['url']}");
|
"${source.baseUrl}/storage/" + (data["cover_portrait"] ?? "");
|
||||||
|
anime.link =
|
||||||
|
getUrlWithoutDomain("${source.baseUrl}/api/show/${data['url']}");
|
||||||
anime.description = data["description"];
|
anime.description = data["description"];
|
||||||
if (data["airing"] == 0) {
|
if (data["airing"] == 0) {
|
||||||
anime.status = MStatus.completed;
|
anime.status = MStatus.completed;
|
||||||
@@ -191,7 +194,7 @@ class AniFlix extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
ListPreference(
|
ListPreference(
|
||||||
key: "preferred_hoster",
|
key: "preferred_hoster",
|
||||||
@@ -232,6 +235,6 @@ Map<String, String> getHeader(String url) {
|
|||||||
return {'Referer': url};
|
return {'Referer': url};
|
||||||
}
|
}
|
||||||
|
|
||||||
AniFlix main() {
|
AniFlix main(MSource source) {
|
||||||
return AniFlix();
|
return AniFlix(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get aniflix => _aniflix;
|
Source get aniflix => _aniflix;
|
||||||
const _aniflixVersion = "0.0.2";
|
const _aniflixVersion = "0.0.25";
|
||||||
const _aniflixCodeUrl =
|
const _aniflixCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/de/aniflix/aniflix.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/de/aniflix/aniflix.dart";
|
||||||
Source _aniflix = Source(
|
Source _aniflix = Source(
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class Aniwave extends MProvider {
|
class Aniwave extends MProvider {
|
||||||
Aniwave();
|
Aniwave({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, 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)}/filter?sort=trending&page=$page")))
|
"${preferenceBaseUrl(source.id)}/filter?sort=trending&page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -15,7 +17,7 @@ class Aniwave extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${preferenceBaseUrl(source.id)}/filter?sort=recently_updated&page=$page")))
|
"${preferenceBaseUrl(source.id)}/filter?sort=recently_updated&page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -23,8 +25,7 @@ class Aniwave extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, 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 = "${preferenceBaseUrl(source.id)}/filter?keyword=$query";
|
||||||
|
|
||||||
@@ -96,7 +97,7 @@ class Aniwave extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"Releasing": 0, "Completed": 1}
|
{"Releasing": 0, "Completed": 1}
|
||||||
];
|
];
|
||||||
@@ -168,7 +169,7 @@ class Aniwave extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
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)}";
|
||||||
@@ -412,7 +413,7 @@ class Aniwave extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
SelectFilter("OrderFilter", "Sort order", 0, [
|
SelectFilter("OrderFilter", "Sort order", 0, [
|
||||||
SelectFilterOption("Most relevance", "most_relevance"),
|
SelectFilterOption("Most relevance", "most_relevance"),
|
||||||
@@ -545,7 +546,7 @@ class Aniwave extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
ListPreference(
|
ListPreference(
|
||||||
key: "preferred_domain1",
|
key: "preferred_domain1",
|
||||||
@@ -685,6 +686,6 @@ class Aniwave extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Aniwave main() {
|
Aniwave main(MSource source) {
|
||||||
return Aniwave();
|
return Aniwave(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get aniwave => _aniwave;
|
Source get aniwave => _aniwave;
|
||||||
const _aniwaveVersion = "0.0.55";
|
const _aniwaveVersion = "0.0.6";
|
||||||
const _aniwaveCodeUrl =
|
const _aniwaveCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/aniwave/aniwave.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/aniwave/aniwave.dart";
|
||||||
Source _aniwave = Source(
|
Source _aniwave = Source(
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class DramaCool extends MProvider {
|
class DramaCool extends MProvider {
|
||||||
DramaCool();
|
DramaCool({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, 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)}/most-popular-drama?page=$page")))
|
"${preferenceBaseUrl(source.id)}/most-popular-drama?page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -17,7 +19,7 @@ class DramaCool extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${preferenceBaseUrl(source.id)}/recently-added?page=$page")))
|
"${preferenceBaseUrl(source.id)}/recently-added?page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -27,8 +29,7 @@ class DramaCool extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${preferenceBaseUrl(source.id)}/search?keyword=$query&page=$page")))
|
"${preferenceBaseUrl(source.id)}/search?keyword=$query&page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -38,7 +39,7 @@ class DramaCool extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"Ongoing": 0, "Completed": 1}
|
{"Ongoing": 0, "Completed": 1}
|
||||||
];
|
];
|
||||||
@@ -100,7 +101,7 @@ class DramaCool extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
url = getUrlWithoutDomain(url);
|
url = getUrlWithoutDomain(url);
|
||||||
|
|
||||||
final res =
|
final res =
|
||||||
@@ -131,7 +132,7 @@ class DramaCool extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
EditTextPreference(
|
EditTextPreference(
|
||||||
key: "overrideBaseUrl",
|
key: "overrideBaseUrl",
|
||||||
@@ -211,6 +212,6 @@ class DramaCool extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DramaCool main() {
|
DramaCool main(MSource source) {
|
||||||
return DramaCool();
|
return DramaCool(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get dramacoolSource => _dramacoolSource;
|
Source get dramacoolSource => _dramacoolSource;
|
||||||
const _dramacoolVersion = "0.0.15";
|
const _dramacoolVersion = "0.0.2";
|
||||||
const _dramacoolSourceCodeUrl =
|
const _dramacoolSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/dramacool/dramacool.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/dramacool/dramacool.dart";
|
||||||
Source _dramacoolSource = Source(
|
Source _dramacoolSource = Source(
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class GogoAnime extends MProvider {
|
class GogoAnime extends MProvider {
|
||||||
GogoAnime();
|
GogoAnime({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, 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)}/popular.html?page=$page")))
|
"${preferenceBaseUrl(source.id)}/popular.html?page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -29,7 +31,7 @@ class GogoAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"https://ajax.gogo-load.com/ajax/page-recent-release-ongoing.html?page=$page&type=1")))
|
"https://ajax.gogo-load.com/ajax/page-recent-release-ongoing.html?page=$page&type=1")))
|
||||||
.body;
|
.body;
|
||||||
@@ -58,8 +60,7 @@ class GogoAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String filterStr = "";
|
String filterStr = "";
|
||||||
String url = "";
|
String url = "";
|
||||||
@@ -161,7 +162,7 @@ class GogoAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"Ongoing": 0, "Completed": 1}
|
{"Ongoing": 0, "Completed": 1}
|
||||||
];
|
];
|
||||||
@@ -212,7 +213,7 @@ class GogoAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
final res =
|
final res =
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
||||||
.body;
|
.body;
|
||||||
@@ -248,7 +249,7 @@ class GogoAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
HeaderFilter("Advanced search"),
|
HeaderFilter("Advanced search"),
|
||||||
GroupFilter("GenreFilter", "Genre", [
|
GroupFilter("GenreFilter", "Genre", [
|
||||||
@@ -1030,7 +1031,7 @@ class GogoAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
EditTextPreference(
|
EditTextPreference(
|
||||||
key: "override_baseurl_v${source.id}",
|
key: "override_baseurl_v${source.id}",
|
||||||
@@ -1137,6 +1138,6 @@ class GogoAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GogoAnime main() {
|
GogoAnime main(MSource source) {
|
||||||
return GogoAnime();
|
return GogoAnime(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get gogoanimeSource => _gogoanimeSource;
|
Source get gogoanimeSource => _gogoanimeSource;
|
||||||
const _gogoanimeVersion = "0.0.7";
|
const _gogoanimeVersion = "0.0.75";
|
||||||
const _gogoanimeSourceCodeUrl =
|
const _gogoanimeSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/gogoanime/gogoanime.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/gogoanime/gogoanime.dart";
|
||||||
Source _gogoanimeSource = Source(
|
Source _gogoanimeSource = Source(
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class KissKh extends MProvider {
|
class KissKh extends MProvider {
|
||||||
KissKh();
|
KissKh({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
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")))
|
"${source.baseUrl}/api/DramaList/List?page=$page&type=0&sub=0&country=0&status=0&order=1&pageSize=40")))
|
||||||
.body;
|
.body;
|
||||||
@@ -30,7 +32,7 @@ class KissKh extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
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")))
|
"${source.baseUrl}/api/DramaList/List?page=$page&type=0&sub=0&country=0&status=0&order=12&pageSize=40")))
|
||||||
.body;
|
.body;
|
||||||
@@ -54,8 +56,7 @@ class KissKh extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${source.baseUrl}/api/DramaList/Search?q=$query&type=0")))
|
"${source.baseUrl}/api/DramaList/Search?q=$query&type=0")))
|
||||||
.body;
|
.body;
|
||||||
@@ -73,7 +74,7 @@ class KissKh extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"Ongoing": 0, "Completed": 1}
|
{"Ongoing": 0, "Completed": 1}
|
||||||
];
|
];
|
||||||
@@ -114,7 +115,7 @@ class KissKh extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@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 res = (await client.get(Uri.parse(url))).body;
|
||||||
final id = substringAfter(substringBefore(url, ".png"), "Episode/");
|
final id = substringAfter(substringBefore(url, ".png"), "Episode/");
|
||||||
final jsonRes = json.decode(res);
|
final jsonRes = json.decode(res);
|
||||||
@@ -151,6 +152,6 @@ class KissKh extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
KissKh main() {
|
KissKh main(MSource source) {
|
||||||
return KissKh();
|
return KissKh(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class NineAnimeTv extends MProvider {
|
class NineAnimeTv extends MProvider {
|
||||||
NineAnimeTv();
|
NineAnimeTv({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client
|
final res = (await client
|
||||||
.get(Uri.parse("${source.baseUrl}/filter?sort=all&page=$page")))
|
.get(Uri.parse("${source.baseUrl}/filter?sort=all&page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -15,7 +17,7 @@ class NineAnimeTv extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${source.baseUrl}/filter?sort=recently_updated&page=$page")))
|
"${source.baseUrl}/filter?sort=recently_updated&page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -23,8 +25,7 @@ class NineAnimeTv extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "${source.baseUrl}/filter?keyword=$query";
|
String url = "${source.baseUrl}/filter?keyword=$query";
|
||||||
|
|
||||||
@@ -113,7 +114,7 @@ class NineAnimeTv extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"Currently Airing": 0, "Finished Airing": 1}
|
{"Currently Airing": 0, "Finished Airing": 1}
|
||||||
];
|
];
|
||||||
@@ -161,7 +162,7 @@ class NineAnimeTv extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse("${source.baseUrl}/ajax/episode/servers?episodeId=$url")))
|
Uri.parse("${source.baseUrl}/ajax/episode/servers?episodeId=$url")))
|
||||||
.body;
|
.body;
|
||||||
@@ -346,7 +347,7 @@ class NineAnimeTv extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
GroupFilter("GenreFilter", "Genre", [
|
GroupFilter("GenreFilter", "Genre", [
|
||||||
CheckBoxFilter("Action", "1"),
|
CheckBoxFilter("Action", "1"),
|
||||||
@@ -452,7 +453,7 @@ class NineAnimeTv extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
ListPreference(
|
ListPreference(
|
||||||
key: "preferred_quality",
|
key: "preferred_quality",
|
||||||
@@ -540,6 +541,6 @@ class NineAnimeTv extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NineAnimeTv main() {
|
NineAnimeTv main(MSource source) {
|
||||||
return NineAnimeTv();
|
return NineAnimeTv(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get nineanimetv => _nineanimetv;
|
Source get nineanimetv => _nineanimetv;
|
||||||
const _nineanimetvVersion = "0.0.2";
|
const _nineanimetvVersion = "0.0.25";
|
||||||
const _nineanimetvCodeUrl =
|
const _nineanimetvCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/nineanimetv/nineanimetv.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/nineanimetv/nineanimetv.dart";
|
||||||
Source _nineanimetv = Source(
|
Source _nineanimetv = Source(
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get uhdmoviesSource => _uhdmoviesSource;
|
Source get uhdmoviesSource => _uhdmoviesSource;
|
||||||
const _uhdmoviesVersion = "0.0.25";
|
const _uhdmoviesVersion = "0.0.3";
|
||||||
const _uhdmoviesSourceCodeUrl =
|
const _uhdmoviesSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/uhdmovies/uhdmovies.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/uhdmovies/uhdmovies.dart";
|
||||||
Source _uhdmoviesSource = Source(
|
Source _uhdmoviesSource = Source(
|
||||||
|
|||||||
@@ -2,15 +2,17 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class UHDMovies extends MProvider {
|
class UHDMovies extends MProvider {
|
||||||
UHDMovies();
|
UHDMovies({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool get supportsLatest => false;
|
bool get supportsLatest => false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client
|
final res = (await client
|
||||||
.get(Uri.parse("${preferenceBaseUrl(source.id)}/page/$page")))
|
.get(Uri.parse("${preferenceBaseUrl(source.id)}/page/$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -18,13 +20,12 @@ class UHDMovies extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
return MPages([], false);
|
return MPages([], false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${preferenceBaseUrl(source.id)}/page/$page/?s=${query.replaceAll(" ", "+")}")))
|
"${preferenceBaseUrl(source.id)}/page/$page/?s=${query.replaceAll(" ", "+")}")))
|
||||||
.body;
|
.body;
|
||||||
@@ -32,7 +33,7 @@ class UHDMovies extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
url = getUrlWithoutDomain(url);
|
url = getUrlWithoutDomain(url);
|
||||||
final res =
|
final res =
|
||||||
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}${url}")))
|
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}${url}")))
|
||||||
@@ -117,13 +118,13 @@ class UHDMovies extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
final res = await getMediaUrl(url);
|
final res = await getMediaUrl(url);
|
||||||
return await extractVideos(res);
|
return await extractVideos(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
EditTextPreference(
|
EditTextPreference(
|
||||||
key: "pref_domain",
|
key: "pref_domain",
|
||||||
@@ -233,6 +234,6 @@ class UHDMovies extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UHDMovies main() {
|
UHDMovies main(MSource source) {
|
||||||
return UHDMovies();
|
return UHDMovies(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class AnimeSama extends MProvider {
|
class AnimeSama extends MProvider {
|
||||||
AnimeSama();
|
AnimeSama({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@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 doc = (await client.get(Uri.parse("${source.baseUrl}/#$page"))).body;
|
||||||
final regex = RegExp(r"""^\s*carteClassique\(\s*.*?\s*,\s*"(.*?)".*\)""",
|
final regex = RegExp(r"""^\s*carteClassique\(\s*.*?\s*,\s*"(.*?)".*\)""",
|
||||||
multiLine: true);
|
multiLine: true);
|
||||||
@@ -24,7 +26,7 @@ class AnimeSama extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@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;
|
final res = (await client.get(Uri.parse(source.baseUrl))).body;
|
||||||
var document = parseHtml(res);
|
var document = parseHtml(res);
|
||||||
final latest = document
|
final latest = document
|
||||||
@@ -44,8 +46,7 @@ class AnimeSama extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
final res = (await client
|
final res = (await client
|
||||||
.get(Uri.parse("${source.baseUrl}/catalogue/listing_all.php")))
|
.get(Uri.parse("${source.baseUrl}/catalogue/listing_all.php")))
|
||||||
@@ -104,7 +105,7 @@ class AnimeSama extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
var animeUrl =
|
var animeUrl =
|
||||||
"${source.baseUrl}${substringBeforeLast(getUrlWithoutDomain(url), "/")}";
|
"${source.baseUrl}${substringBeforeLast(getUrlWithoutDomain(url), "/")}";
|
||||||
var movie =
|
var movie =
|
||||||
@@ -152,7 +153,7 @@ class AnimeSama extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
final players = json.decode(url);
|
final players = json.decode(url);
|
||||||
List<MVideo> videos = [];
|
List<MVideo> videos = [];
|
||||||
for (var player in players) {
|
for (var player in players) {
|
||||||
@@ -178,7 +179,7 @@ class AnimeSama extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
GroupFilter("TypeFilter", "Type", [
|
GroupFilter("TypeFilter", "Type", [
|
||||||
CheckBoxFilter("Anime", "Anime"),
|
CheckBoxFilter("Anime", "Anime"),
|
||||||
@@ -218,7 +219,7 @@ class AnimeSama extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
ListPreference(
|
ListPreference(
|
||||||
key: "preferred_quality",
|
key: "preferred_quality",
|
||||||
@@ -403,6 +404,6 @@ class AnimeSama extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AnimeSama main() {
|
AnimeSama main(MSource source) {
|
||||||
return AnimeSama();
|
return AnimeSama(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get animesamaSource => _animesama;
|
Source get animesamaSource => _animesama;
|
||||||
const animesamaVersion = "0.0.15";
|
const animesamaVersion = "0.0.2";
|
||||||
const animesamaCodeUrl =
|
const animesamaCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/animesama/animesama.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/animesama/animesama.dart";
|
||||||
Source _animesama = Source(
|
Source _animesama = Source(
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class AnimesUltra extends MProvider {
|
class AnimesUltra extends MProvider {
|
||||||
AnimesUltra();
|
AnimesUltra({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@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;
|
final res = (await client.get(Uri.parse(source.baseUrl))).body;
|
||||||
|
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
@@ -30,7 +32,7 @@ class AnimesUltra extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@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;
|
final res = (await client.get(Uri.parse(source.baseUrl))).body;
|
||||||
|
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
@@ -53,8 +55,7 @@ class AnimesUltra extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final res = (await client.get(Uri.parse(source.baseUrl))).body;
|
final res = (await client.get(Uri.parse(source.baseUrl))).body;
|
||||||
|
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
@@ -74,7 +75,7 @@ class AnimesUltra extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"En cours": 0, "Terminé": 1}
|
{"En cours": 0, "Terminé": 1}
|
||||||
];
|
];
|
||||||
@@ -116,7 +117,7 @@ class AnimesUltra extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
final resWebview = await getHtmlViaWebview(
|
final resWebview = await getHtmlViaWebview(
|
||||||
url, '//*[@class="ps__-list"]/div/@data-server-id');
|
url, '//*[@class="ps__-list"]/div/@data-server-id');
|
||||||
|
|
||||||
@@ -152,6 +153,6 @@ class AnimesUltra extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AnimesUltra main() {
|
AnimesUltra main(MSource source) {
|
||||||
return AnimesUltra();
|
return AnimesUltra(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get animesultraSource => _animesultraSource;
|
Source get animesultraSource => _animesultraSource;
|
||||||
const _animesultraVersion = "0.0.55";
|
const _animesultraVersion = "0.0.6";
|
||||||
const _animesultraSourceCodeUrl =
|
const _animesultraSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/animesultra/animesultra.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/animesultra/animesultra.dart";
|
||||||
Source _animesultraSource = Source(
|
Source _animesultraSource = Source(
|
||||||
|
|||||||
@@ -2,19 +2,21 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class FrAnime extends MProvider {
|
class FrAnime extends MProvider {
|
||||||
FrAnime();
|
FrAnime({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = await dataBase();
|
final res = await dataBase();
|
||||||
|
|
||||||
return animeResList(res);
|
return animeResList(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = await dataBase();
|
final res = await dataBase();
|
||||||
|
|
||||||
List list = json.decode(res);
|
List list = json.decode(res);
|
||||||
@@ -22,15 +24,14 @@ class FrAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final res = await dataBase();
|
final res = await dataBase();
|
||||||
|
|
||||||
return animeSeachFetch(res, query);
|
return animeSeachFetch(res, query);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
String language = "vo".toString();
|
String language = "vo".toString();
|
||||||
if (url.contains("lang=")) {
|
if (url.contains("lang=")) {
|
||||||
@@ -84,7 +85,7 @@ class FrAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
String language = "vo";
|
String language = "vo";
|
||||||
String videoBaseUrl = "https://api.franime.fr/api/anime";
|
String videoBaseUrl = "https://api.franime.fr/api/anime";
|
||||||
if (url.contains("lang=")) {
|
if (url.contains("lang=")) {
|
||||||
@@ -336,6 +337,6 @@ class FrAnime extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FrAnime main() {
|
FrAnime main(MSource source) {
|
||||||
return FrAnime();
|
return FrAnime(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get franimeSource => _franimeSource;
|
Source get franimeSource => _franimeSource;
|
||||||
const _franimeVersion = "0.0.6";
|
const _franimeVersion = "0.0.65";
|
||||||
const _franimeSourceCodeUrl =
|
const _franimeSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/franime/franime.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/franime/franime.dart";
|
||||||
Source _franimeSource = Source(
|
Source _franimeSource = Source(
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class OtakuFr extends MProvider {
|
class OtakuFr extends MProvider {
|
||||||
OtakuFr();
|
OtakuFr({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res =
|
final res =
|
||||||
(await client.get(Uri.parse("${source.baseUrl}/en-cours/page/$page")))
|
(await client.get(Uri.parse("${source.baseUrl}/en-cours/page/$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -31,7 +33,7 @@ class OtakuFr extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res =
|
final res =
|
||||||
(await client.get(Uri.parse("${source.baseUrl}/page/$page/"))).body;
|
(await client.get(Uri.parse("${source.baseUrl}/page/$page/"))).body;
|
||||||
|
|
||||||
@@ -71,8 +73,7 @@ class OtakuFr extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "";
|
String url = "";
|
||||||
if (query.isNotEmpty) {
|
if (query.isNotEmpty) {
|
||||||
@@ -117,7 +118,7 @@ class OtakuFr extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"En cours": 0, "Terminé": 1}
|
{"En cours": 0, "Terminé": 1}
|
||||||
];
|
];
|
||||||
@@ -171,7 +172,7 @@ class OtakuFr extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@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 res = (await client.get(Uri.parse(url))).body;
|
||||||
|
|
||||||
final servers = xpath(res, '//*[@id="nav-tabContent"]/div/iframe/@src');
|
final servers = xpath(res, '//*[@id="nav-tabContent"]/div/iframe/@src');
|
||||||
@@ -220,7 +221,7 @@ class OtakuFr extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
HeaderFilter("La recherche de texte ignore les filtres"),
|
HeaderFilter("La recherche de texte ignore les filtres"),
|
||||||
SelectFilter("GenreFilter", "Genre", 0, [
|
SelectFilter("GenreFilter", "Genre", 0, [
|
||||||
@@ -276,7 +277,7 @@ class OtakuFr extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
ListPreference(
|
ListPreference(
|
||||||
key: "preferred_quality",
|
key: "preferred_quality",
|
||||||
@@ -436,6 +437,6 @@ class OtakuFr extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OtakuFr main() {
|
OtakuFr main(MSource source) {
|
||||||
return OtakuFr();
|
return OtakuFr(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get otakufr => _otakufr;
|
Source get otakufr => _otakufr;
|
||||||
const otakufrVersion = "0.0.7";
|
const otakufrVersion = "0.0.75";
|
||||||
const otakufrCodeUrl =
|
const otakufrCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/otakufr/otakufr.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/otakufr/otakufr.dart";
|
||||||
Source _otakufr = Source(
|
Source _otakufr = Source(
|
||||||
|
|||||||
@@ -2,15 +2,17 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class YoMovies extends MProvider {
|
class YoMovies extends MProvider {
|
||||||
YoMovies();
|
YoMovies({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool get supportsLatest => false;
|
bool get supportsLatest => false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, 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 = (await client.get(Uri.parse(
|
||||||
@@ -24,13 +26,12 @@ class YoMovies extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
return MPages([], false);
|
return MPages([], false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "";
|
String url = "";
|
||||||
String pageNu = page == 1 ? "" : "/page/$page";
|
String pageNu = page == 1 ? "" : "/page/$page";
|
||||||
@@ -56,7 +57,7 @@ class YoMovies extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
url = getUrlWithoutDomain(url);
|
url = getUrlWithoutDomain(url);
|
||||||
|
|
||||||
final res =
|
final res =
|
||||||
@@ -96,7 +97,7 @@ class YoMovies extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, 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("${preferenceBaseUrl(source.id)}$url")))
|
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$url")))
|
||||||
@@ -116,7 +117,7 @@ class YoMovies extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
EditTextPreference(
|
EditTextPreference(
|
||||||
key: "overrideBaseUrl",
|
key: "overrideBaseUrl",
|
||||||
@@ -209,7 +210,7 @@ class YoMovies extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
HeaderFilter(
|
HeaderFilter(
|
||||||
"Note: Only one selection at a time works, and it ignores text search"),
|
"Note: Only one selection at a time works, and it ignores text search"),
|
||||||
@@ -340,6 +341,6 @@ class YoMovies extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
YoMovies main() {
|
YoMovies main(MSource source) {
|
||||||
return YoMovies();
|
return YoMovies(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class NimeGami extends MProvider {
|
class NimeGami extends MProvider {
|
||||||
NimeGami();
|
NimeGami({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res =
|
final res =
|
||||||
(await client.get(Uri.parse("${source.baseUrl}/page/$page"))).body;
|
(await client.get(Uri.parse("${source.baseUrl}/page/$page"))).body;
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
@@ -27,7 +29,7 @@ class NimeGami extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res =
|
final res =
|
||||||
(await client.get(Uri.parse("${source.baseUrl}/page/$page"))).body;
|
(await client.get(Uri.parse("${source.baseUrl}/page/$page"))).body;
|
||||||
List<MManga> animeList = [];
|
List<MManga> animeList = [];
|
||||||
@@ -48,8 +50,7 @@ class NimeGami extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse("${source.baseUrl}/page/$page/?s=$query&post_type=post")))
|
Uri.parse("${source.baseUrl}/page/$page/?s=$query&post_type=post")))
|
||||||
.body;
|
.body;
|
||||||
@@ -70,7 +71,7 @@ class NimeGami extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final res = (await client.get(Uri.parse(url))).body;
|
final res = (await client.get(Uri.parse(url))).body;
|
||||||
MManga anime = MManga();
|
MManga anime = MManga();
|
||||||
final description = xpath(res, '//*[@id="Sinopsis"]/p/text()');
|
final description = xpath(res, '//*[@id="Sinopsis"]/p/text()');
|
||||||
@@ -106,7 +107,7 @@ class NimeGami extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
final resJson = json.decode(url);
|
final resJson = json.decode(url);
|
||||||
final urls = resJson["urls"];
|
final urls = resJson["urls"];
|
||||||
List<MVideo> videos = [];
|
List<MVideo> videos = [];
|
||||||
@@ -176,6 +177,6 @@ class NimeGami extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NimeGami main() {
|
NimeGami main(MSource source) {
|
||||||
return NimeGami();
|
return NimeGami(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get nimegami => _nimegami;
|
Source get nimegami => _nimegami;
|
||||||
const _nimegamiVersion = "0.0.45";
|
const _nimegamiVersion = "0.0.5";
|
||||||
const _nimegamiCodeUrl =
|
const _nimegamiCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/nimegami/nimegami.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/nimegami/nimegami.dart";
|
||||||
Source _nimegami = Source(
|
Source _nimegami = Source(
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class OploVerz extends MProvider {
|
class OploVerz extends MProvider {
|
||||||
OploVerz();
|
OploVerz({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${source.baseUrl}/anime-list/page/$page/?order=popular")))
|
"${source.baseUrl}/anime-list/page/$page/?order=popular")))
|
||||||
.body;
|
.body;
|
||||||
@@ -15,7 +17,7 @@ class OploVerz extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse("${source.baseUrl}/anime-list/page/$page/?order=latest")))
|
Uri.parse("${source.baseUrl}/anime-list/page/$page/?order=latest")))
|
||||||
.body;
|
.body;
|
||||||
@@ -23,8 +25,7 @@ class OploVerz extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse("${source.baseUrl}/anime-list/page/$page/?title=$query")))
|
Uri.parse("${source.baseUrl}/anime-list/page/$page/?title=$query")))
|
||||||
.body;
|
.body;
|
||||||
@@ -32,7 +33,7 @@ class OploVerz extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"ongoing": 0, "completed": 1}
|
{"ongoing": 0, "completed": 1}
|
||||||
];
|
];
|
||||||
@@ -67,7 +68,7 @@ class OploVerz extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@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 res = (await client.get(Uri.parse(url))).body;
|
||||||
final dataPost = xpath(res,
|
final dataPost = xpath(res,
|
||||||
'//*[@id="server"]/ul/li/div[contains(@id,"player-option")]/@data-post')
|
'//*[@id="server"]/ul/li/div[contains(@id,"player-option")]/@data-post')
|
||||||
@@ -147,6 +148,6 @@ class OploVerz extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OploVerz main() {
|
OploVerz main(MSource source) {
|
||||||
return OploVerz();
|
return OploVerz(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get oploverz => _oploverz;
|
Source get oploverz => _oploverz;
|
||||||
const _oploverzVersion = "0.0.35";
|
const _oploverzVersion = "0.0.4";
|
||||||
const _oploverzCodeUrl =
|
const _oploverzCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/oploverz/oploverz.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/oploverz/oploverz.dart";
|
||||||
Source _oploverz = Source(
|
Source _oploverz = Source(
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class OtakuDesu extends MProvider {
|
class OtakuDesu extends MProvider {
|
||||||
OtakuDesu();
|
OtakuDesu({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client
|
final res = (await client
|
||||||
.get(Uri.parse("${source.baseUrl}/complete-anime/page/$page")))
|
.get(Uri.parse("${source.baseUrl}/complete-anime/page/$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -15,7 +17,7 @@ class OtakuDesu extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client
|
final res = (await client
|
||||||
.get(Uri.parse("${source.baseUrl}/ongoing-anime/page/$page")))
|
.get(Uri.parse("${source.baseUrl}/ongoing-anime/page/$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -23,8 +25,7 @@ class OtakuDesu extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final res = (await client
|
final res = (await client
|
||||||
.get(Uri.parse("${source.baseUrl}/?s=$query&post_type=anime")))
|
.get(Uri.parse("${source.baseUrl}/?s=$query&post_type=anime")))
|
||||||
.body;
|
.body;
|
||||||
@@ -44,7 +45,7 @@ class OtakuDesu extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"Ongoing": 0, "Completed": 1}
|
{"Ongoing": 0, "Completed": 1}
|
||||||
];
|
];
|
||||||
@@ -85,7 +86,7 @@ class OtakuDesu extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MVideo>> getVideoList(MSource source, String url) async {
|
Future<List<MVideo>> getVideoList(String url) async {
|
||||||
List<MVideo> videos = [];
|
List<MVideo> videos = [];
|
||||||
final res = (await client.get(Uri.parse(url))).body;
|
final res = (await client.get(Uri.parse(url))).body;
|
||||||
final script =
|
final script =
|
||||||
@@ -186,6 +187,6 @@ class OtakuDesu extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OtakuDesu main() {
|
OtakuDesu main(MSource source) {
|
||||||
return OtakuDesu();
|
return OtakuDesu(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get otakudesu => _otakudesu;
|
Source get otakudesu => _otakudesu;
|
||||||
const _otakudesuVersion = "0.0.4";
|
const _otakudesuVersion = "0.0.45";
|
||||||
const _otakudesuCodeUrl =
|
const _otakudesuCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/otakudesu/otakudesu.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/otakudesu/otakudesu.dart";
|
||||||
Source _otakudesu = Source(
|
Source _otakudesu = Source(
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class AnimeSaturn extends MProvider {
|
class AnimeSaturn extends MProvider {
|
||||||
AnimeSaturn();
|
AnimeSaturn({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client
|
final res = (await client
|
||||||
.get(Uri.parse("${source.baseUrl}/animeincorso?page=$page")))
|
.get(Uri.parse("${source.baseUrl}/animeincorso?page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -34,7 +36,7 @@ class AnimeSaturn extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res =
|
final res =
|
||||||
(await client.get(Uri.parse("${source.baseUrl}/newest?page=$page")))
|
(await client.get(Uri.parse("${source.baseUrl}/newest?page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -59,8 +61,7 @@ class AnimeSaturn extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "";
|
String url = "";
|
||||||
|
|
||||||
@@ -141,7 +142,7 @@ class AnimeSaturn extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"In corso": 0, "Finito": 1}
|
{"In corso": 0, "Finito": 1}
|
||||||
];
|
];
|
||||||
@@ -192,7 +193,7 @@ class AnimeSaturn extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@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 res = (await client.get(Uri.parse(url))).body;
|
||||||
|
|
||||||
final urlVid = xpath(res, '//a[contains(@href,"/watch")]/@href').first;
|
final urlVid = xpath(res, '//a[contains(@href,"/watch")]/@href').first;
|
||||||
@@ -245,7 +246,7 @@ class AnimeSaturn extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
HeaderFilter("Ricerca per titolo ignora i filtri e viceversa"),
|
HeaderFilter("Ricerca per titolo ignora i filtri e viceversa"),
|
||||||
GroupFilter("GenreFilter", "Generi", [
|
GroupFilter("GenreFilter", "Generi", [
|
||||||
@@ -313,7 +314,7 @@ class AnimeSaturn extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
ListPreference(
|
ListPreference(
|
||||||
key: "preferred_quality",
|
key: "preferred_quality",
|
||||||
@@ -353,6 +354,6 @@ class AnimeSaturn extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AnimeSaturn main() {
|
AnimeSaturn main(MSource source) {
|
||||||
return AnimeSaturn();
|
return AnimeSaturn(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get animesaturn => _animesaturn;
|
Source get animesaturn => _animesaturn;
|
||||||
const _animesaturnVersion = "0.0.25";
|
const _animesaturnVersion = "0.0.3";
|
||||||
const _animesaturnCodeUrl =
|
const _animesaturnCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/it/animesaturn/animesaturn.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/it/animesaturn/animesaturn.dart";
|
||||||
Source _animesaturn = Source(
|
Source _animesaturn = Source(
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class Filma24 extends MProvider {
|
class Filma24 extends MProvider {
|
||||||
Filma24();
|
Filma24({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, 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("${preferenceBaseUrl(source.id)}$pageNu")))
|
(await client.get(Uri.parse("${preferenceBaseUrl(source.id)}$pageNu")))
|
||||||
@@ -16,7 +18,7 @@ class Filma24 extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, 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 = (await client.get(
|
||||||
Uri.parse("${preferenceBaseUrl(source.id)}/$pageNu?sort=trendy")))
|
Uri.parse("${preferenceBaseUrl(source.id)}/$pageNu?sort=trendy")))
|
||||||
@@ -25,8 +27,7 @@ class Filma24 extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "";
|
String url = "";
|
||||||
String pageNu = page == 1 ? "" : "page/$page/";
|
String pageNu = page == 1 ? "" : "page/$page/";
|
||||||
@@ -56,7 +57,7 @@ class Filma24 extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
List<MChapter>? episodesList = [];
|
List<MChapter>? episodesList = [];
|
||||||
if (!url.contains("seriale")) {
|
if (!url.contains("seriale")) {
|
||||||
MChapter episode = MChapter();
|
MChapter episode = MChapter();
|
||||||
@@ -86,7 +87,7 @@ class Filma24 extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@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 res = (await client.get(Uri.parse(url))).body;
|
||||||
List<MVideo> videos = [];
|
List<MVideo> videos = [];
|
||||||
final serverUrls = xpath(res, '//*[@class="player"]/div[1]/a/@href');
|
final serverUrls = xpath(res, '//*[@class="player"]/div[1]/a/@href');
|
||||||
@@ -117,7 +118,7 @@ class Filma24 extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
EditTextPreference(
|
EditTextPreference(
|
||||||
key: "pref_domain",
|
key: "pref_domain",
|
||||||
@@ -135,7 +136,7 @@ class Filma24 extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
SelectFilter("ReleaseFilter", "Viti", 0, [
|
SelectFilter("ReleaseFilter", "Viti", 0, [
|
||||||
SelectFilterOption("<Select>", ""),
|
SelectFilterOption("<Select>", ""),
|
||||||
@@ -289,6 +290,6 @@ class Filma24 extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Filma24 main() {
|
Filma24 main(MSource source) {
|
||||||
return Filma24();
|
return Filma24(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get filma24 => _filma24;
|
Source get filma24 => _filma24;
|
||||||
const _filma24Version = "0.0.15";
|
const _filma24Version = "0.0.2";
|
||||||
const _filma24CodeUrl =
|
const _filma24CodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/sq/filma24/filma24.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/sq/filma24/filma24.dart";
|
||||||
Source _filma24 = Source(
|
Source _filma24 = Source(
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class HeanCms extends MProvider {
|
class HeanCms extends MProvider {
|
||||||
HeanCms();
|
HeanCms({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final headers = getHeader(source.baseUrl);
|
final headers = getHeader(source.baseUrl);
|
||||||
String res = "";
|
String res = "";
|
||||||
if (!useNewQueryEndpoint(source.name)) {
|
if (!useNewQueryEndpoint(source.name)) {
|
||||||
@@ -28,11 +30,11 @@ class HeanCms extends MProvider {
|
|||||||
res =
|
res =
|
||||||
(await client.get(Uri.parse(newEndpointUrl), headers: headers)).body;
|
(await client.get(Uri.parse(newEndpointUrl), headers: headers)).body;
|
||||||
}
|
}
|
||||||
return mMangaRes(res, source);
|
return mMangaRes(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final headers = getHeader(source.baseUrl);
|
final headers = getHeader(source.baseUrl);
|
||||||
String res = "";
|
String res = "";
|
||||||
if (!useNewQueryEndpoint(source.name)) {
|
if (!useNewQueryEndpoint(source.name)) {
|
||||||
@@ -52,12 +54,11 @@ class HeanCms extends MProvider {
|
|||||||
res =
|
res =
|
||||||
(await client.get(Uri.parse(newEndpointUrl), headers: headers)).body;
|
(await client.get(Uri.parse(newEndpointUrl), headers: headers)).body;
|
||||||
}
|
}
|
||||||
return mMangaRes(res, source);
|
return mMangaRes(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final headers = getHeader(source.baseUrl);
|
final headers = getHeader(source.baseUrl);
|
||||||
String res = "";
|
String res = "";
|
||||||
if (!useNewQueryEndpoint(source.source)) {
|
if (!useNewQueryEndpoint(source.source)) {
|
||||||
@@ -71,11 +72,11 @@ class HeanCms extends MProvider {
|
|||||||
res =
|
res =
|
||||||
(await client.get(Uri.parse(newEndpointUrl), headers: headers)).body;
|
(await client.get(Uri.parse(newEndpointUrl), headers: headers)).body;
|
||||||
}
|
}
|
||||||
return mMangaRes(res, source);
|
return mMangaRes(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
MManga manga = MManga();
|
MManga manga = MManga();
|
||||||
String currentSlug = substringAfterLast(url, "/");
|
String currentSlug = substringAfterLast(url, "/");
|
||||||
final headers = getHeader(source.baseUrl);
|
final headers = getHeader(source.baseUrl);
|
||||||
@@ -131,7 +132,7 @@ class HeanCms extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<String>> getPageList(MSource source, String url) async {
|
Future<List<String>> getPageList(String url) async {
|
||||||
final headers = getHeader(source.baseUrl);
|
final headers = getHeader(source.baseUrl);
|
||||||
|
|
||||||
String res = "".toString();
|
String res = "".toString();
|
||||||
@@ -171,7 +172,7 @@ class HeanCms extends MProvider {
|
|||||||
return pageUrls;
|
return pageUrls;
|
||||||
}
|
}
|
||||||
|
|
||||||
MPages mMangaRes(String res, MSource source) {
|
MPages mMangaRes(String res) {
|
||||||
bool hasNextPage = true;
|
bool hasNextPage = true;
|
||||||
List<MManga> mangaList = [];
|
List<MManga> mangaList = [];
|
||||||
List<String> names = [];
|
List<String> names = [];
|
||||||
@@ -240,6 +241,6 @@ Map<String, String> getHeader(String url) {
|
|||||||
return headers;
|
return headers;
|
||||||
}
|
}
|
||||||
|
|
||||||
HeanCms main() {
|
HeanCms main(MSource source) {
|
||||||
return HeanCms();
|
return HeanCms(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'src/yugenmangas/yugenmangas.dart';
|
|||||||
import 'src/omegascans/omegascans.dart';
|
import 'src/omegascans/omegascans.dart';
|
||||||
import 'src/perfscan/perfscan.dart';
|
import 'src/perfscan/perfscan.dart';
|
||||||
|
|
||||||
const heancmsVersion = "0.0.65";
|
const heancmsVersion = "0.0.7";
|
||||||
const heancmsSourceCodeUrl =
|
const heancmsSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/heancms/heancms.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/heancms/heancms.dart";
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class Madara extends MProvider {
|
class Madara extends MProvider {
|
||||||
Madara();
|
Madara({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse("${source.baseUrl}/manga/page/$page/?m_orderby=views")))
|
Uri.parse("${source.baseUrl}/manga/page/$page/?m_orderby=views")))
|
||||||
.body;
|
.body;
|
||||||
@@ -16,7 +18,7 @@ class Madara extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse("${source.baseUrl}/manga/page/$page/?m_orderby=latest")))
|
Uri.parse("${source.baseUrl}/manga/page/$page/?m_orderby=latest")))
|
||||||
.body;
|
.body;
|
||||||
@@ -25,8 +27,7 @@ class Madara extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
|
|
||||||
String url = "${source.baseUrl}/?s=$query&post_type=wp-manga";
|
String url = "${source.baseUrl}/?s=$query&post_type=wp-manga";
|
||||||
@@ -77,7 +78,7 @@ class Madara extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{
|
{
|
||||||
"OnGoing": 0,
|
"OnGoing": 0,
|
||||||
@@ -248,7 +249,7 @@ class Madara extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<String>> getPageList(MSource source, String url) async {
|
Future<List<String>> getPageList(String url) async {
|
||||||
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);
|
||||||
final pageElement = document.selectFirst(
|
final pageElement = document.selectFirst(
|
||||||
@@ -298,7 +299,7 @@ class Madara extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
TextFilter("AuthorFilter", "Author"),
|
TextFilter("AuthorFilter", "Author"),
|
||||||
TextFilter("ArtistFilter", "Artist"),
|
TextFilter("ArtistFilter", "Artist"),
|
||||||
@@ -334,6 +335,6 @@ class Madara extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Madara main() {
|
Madara main(MSource source) {
|
||||||
return Madara();
|
return Madara(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ import 'src/comicarab/comicarab.dart';
|
|||||||
import 'src/manga3asq/manga3asq.dart';
|
import 'src/manga3asq/manga3asq.dart';
|
||||||
import 'src/bakamh/bakamh.dart';
|
import 'src/bakamh/bakamh.dart';
|
||||||
|
|
||||||
const madaraVersion = "0.0.8";
|
const madaraVersion = "0.0.85";
|
||||||
const madaraSourceCodeUrl =
|
const madaraSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/madara.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/madara.dart";
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
import 'package:mangayomi/bridge_lib.dart';
|
import 'package:mangayomi/bridge_lib.dart';
|
||||||
class MangaBox extends MProvider {
|
|
||||||
MangaBox();
|
|
||||||
|
|
||||||
final Client client = Client();
|
class MangaBox extends MProvider {
|
||||||
|
MangaBox({required this.source});
|
||||||
|
|
||||||
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${source.baseUrl}/${popularUrlPath(source.name, page)}")))
|
"${source.baseUrl}/${popularUrlPath(source.name, page)}")))
|
||||||
.body;
|
.body;
|
||||||
@@ -13,7 +16,7 @@ class MangaBox extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse("${source.baseUrl}/${latestUrlPath(source.name, page)}")))
|
Uri.parse("${source.baseUrl}/${latestUrlPath(source.name, page)}")))
|
||||||
.body;
|
.body;
|
||||||
@@ -21,8 +24,7 @@ class MangaBox extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
|
|
||||||
String url = "";
|
String url = "";
|
||||||
@@ -118,7 +120,7 @@ class MangaBox extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"Ongoing": 0, "Completed": 1}
|
{"Ongoing": 0, "Completed": 1}
|
||||||
];
|
];
|
||||||
@@ -199,7 +201,7 @@ class MangaBox extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<String>> getPageList(MSource source, String url) async {
|
Future<List<String>> getPageList(String url) async {
|
||||||
final res = (await client.get(Uri.parse(url))).body;
|
final res = (await client.get(Uri.parse(url))).body;
|
||||||
List<String> pageUrls = [];
|
List<String> pageUrls = [];
|
||||||
final urls = xpath(res,
|
final urls = xpath(res,
|
||||||
@@ -297,7 +299,7 @@ class MangaBox extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
if (source.name == "Mangairo") {
|
if (source.name == "Mangairo") {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
@@ -422,6 +424,6 @@ Map<String, String> getHeader(String url) {
|
|||||||
return headers;
|
return headers;
|
||||||
}
|
}
|
||||||
|
|
||||||
MangaBox main() {
|
MangaBox main(MSource source) {
|
||||||
return MangaBox();
|
return MangaBox(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'src/mangairo/mangaeiro.dart';
|
|||||||
import 'src/mangakakalot/mangakakalot.dart';
|
import 'src/mangakakalot/mangakakalot.dart';
|
||||||
import 'src/manganato/manganato.dart';
|
import 'src/manganato/manganato.dart';
|
||||||
|
|
||||||
const mangaboxVersion = "0.0.25";
|
const mangaboxVersion = "0.0.3";
|
||||||
const mangaboxSourceCodeUrl =
|
const mangaboxSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/mangabox/mangabox.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/mangabox/mangabox.dart";
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class MangaReader extends MProvider {
|
class MangaReader extends MProvider {
|
||||||
MangaReader();
|
MangaReader({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${source.baseUrl}${getMangaUrlDirectory(source.name)}/?page=$page&order=popular")))
|
"${source.baseUrl}${getMangaUrlDirectory(source.name)}/?page=$page&order=popular")))
|
||||||
.body;
|
.body;
|
||||||
@@ -15,7 +17,7 @@ class MangaReader extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${source.baseUrl}${getMangaUrlDirectory(source.name)}/?page=$page&order=update")))
|
"${source.baseUrl}${getMangaUrlDirectory(source.name)}/?page=$page&order=update")))
|
||||||
.body;
|
.body;
|
||||||
@@ -23,8 +25,7 @@ class MangaReader extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
|
|
||||||
String url =
|
String url =
|
||||||
@@ -71,7 +72,7 @@ class MangaReader extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{
|
{
|
||||||
"مستمرة": 0,
|
"مستمرة": 0,
|
||||||
@@ -188,7 +189,7 @@ class MangaReader extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<String>> getPageList(MSource source, String url) async {
|
Future<List<String>> getPageList(String url) async {
|
||||||
url = getUrlWithoutDomain(url);
|
url = getUrlWithoutDomain(url);
|
||||||
final res = (await client.get(Uri.parse('${source.baseUrl}$url'))).body;
|
final res = (await client.get(Uri.parse('${source.baseUrl}$url'))).body;
|
||||||
|
|
||||||
@@ -251,7 +252,7 @@ class MangaReader extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
SeparatorFilter(),
|
SeparatorFilter(),
|
||||||
TextFilter("AuthorFilter", "Author"),
|
TextFilter("AuthorFilter", "Author"),
|
||||||
@@ -316,6 +317,6 @@ class MangaReader extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MangaReader main() {
|
MangaReader main(MSource source) {
|
||||||
return MangaReader();
|
return MangaReader(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ import 'src/turktoon/turktoon.dart';
|
|||||||
import 'src/uzaymanga/uzaymanga.dart';
|
import 'src/uzaymanga/uzaymanga.dart';
|
||||||
import 'src/xcalibrscans/xcalibrscans.dart';
|
import 'src/xcalibrscans/xcalibrscans.dart';
|
||||||
|
|
||||||
const mangareaderVersion = "0.0.8";
|
const mangareaderVersion = "0.0.85";
|
||||||
const mangareaderSourceCodeUrl =
|
const mangareaderSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/mangareader/mangareader.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/mangareader/mangareader.dart";
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class MMRCMS extends MProvider {
|
class MMRCMS extends MProvider {
|
||||||
MMRCMS();
|
MMRCMS({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(Uri.parse(
|
final res = (await client.get(Uri.parse(
|
||||||
"${source.baseUrl}/filterList?page=$page&sortBy=views&asc=false")))
|
"${source.baseUrl}/filterList?page=$page&sortBy=views&asc=false")))
|
||||||
.body;
|
.body;
|
||||||
@@ -38,7 +40,7 @@ class MMRCMS extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client
|
final res = (await client
|
||||||
.get(Uri.parse("${source.baseUrl}/latest-release?page=$page")))
|
.get(Uri.parse("${source.baseUrl}/latest-release?page=$page")))
|
||||||
.body;
|
.body;
|
||||||
@@ -69,8 +71,7 @@ class MMRCMS extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "";
|
String url = "";
|
||||||
if (query.isNotEmpty) {
|
if (query.isNotEmpty) {
|
||||||
@@ -152,7 +153,7 @@ class MMRCMS extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{
|
{
|
||||||
"complete": 1,
|
"complete": 1,
|
||||||
@@ -214,7 +215,7 @@ class MMRCMS extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<String>> getPageList(MSource source, String url) async {
|
Future<List<String>> getPageList(String url) async {
|
||||||
final res = (await client.get(Uri.parse(url))).body;
|
final res = (await client.get(Uri.parse(url))).body;
|
||||||
|
|
||||||
List<String> pagesUrl = [];
|
List<String> pagesUrl = [];
|
||||||
@@ -231,7 +232,7 @@ class MMRCMS extends MProvider {
|
|||||||
return pagesUrl;
|
return pagesUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
HeaderFilter("NOTE: Ignored if using text search!"),
|
HeaderFilter("NOTE: Ignored if using text search!"),
|
||||||
SeparatorFilter(),
|
SeparatorFilter(),
|
||||||
@@ -317,6 +318,6 @@ class MMRCMS extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MMRCMS main() {
|
MMRCMS main(MSource source) {
|
||||||
return MMRCMS();
|
return MMRCMS(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import 'src/readcomicsonline/readcomicsonline.dart';
|
|||||||
import 'src/lelscanvf/lelscanvf.dart';
|
import 'src/lelscanvf/lelscanvf.dart';
|
||||||
import 'src/mangafr/mangafr.dart';
|
import 'src/mangafr/mangafr.dart';
|
||||||
|
|
||||||
const mmrcmsVersion = "0.0.55";
|
const mmrcmsVersion = "0.0.6";
|
||||||
const mmrcmsSourceCodeUrl =
|
const mmrcmsSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/mmrcms/mmrcms.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/mmrcms/mmrcms.dart";
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class NepNep extends MProvider {
|
class NepNep extends MProvider {
|
||||||
NepNep();
|
NepNep({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(Uri.parse("${source.baseUrl}/search/"))).body;
|
final res = (await client.get(Uri.parse("${source.baseUrl}/search/"))).body;
|
||||||
final directory = directoryFromDocument(res);
|
final directory = directoryFromDocument(res);
|
||||||
final resSort = sortMapList(json.decode(directory), "vm", 1);
|
final resSort = sortMapList(json.decode(directory), "vm", 1);
|
||||||
@@ -16,7 +18,7 @@ class NepNep extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(Uri.parse("${source.baseUrl}/search/"))).body;
|
final res = (await client.get(Uri.parse("${source.baseUrl}/search/"))).body;
|
||||||
final directory = directoryFromDocument(res);
|
final directory = directoryFromDocument(res);
|
||||||
final resSort = sortMapList(json.decode(directory), "lt", 1);
|
final resSort = sortMapList(json.decode(directory), "lt", 1);
|
||||||
@@ -25,8 +27,7 @@ class NepNep extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
List<dynamic> queryRes = [];
|
List<dynamic> queryRes = [];
|
||||||
final res = (await client.get(Uri.parse("${source.baseUrl}/search/"))).body;
|
final res = (await client.get(Uri.parse("${source.baseUrl}/search/"))).body;
|
||||||
@@ -137,7 +138,7 @@ class NepNep extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"Ongoing": 0, "Completed": 1, "Cancelled": 3, "Hiatus": 2}
|
{"Ongoing": 0, "Completed": 1, "Cancelled": 3, "Hiatus": 2}
|
||||||
];
|
];
|
||||||
@@ -189,7 +190,7 @@ class NepNep extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<String>> getPageList(MSource source, String url) async {
|
Future<List<String>> getPageList(String url) async {
|
||||||
final headers = getHeader(source.baseUrl);
|
final headers = getHeader(source.baseUrl);
|
||||||
List<String> pages = [];
|
List<String> pages = [];
|
||||||
final res =
|
final res =
|
||||||
@@ -306,7 +307,7 @@ class NepNep extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
TextFilter("YearFilter", "Years"),
|
TextFilter("YearFilter", "Years"),
|
||||||
TextFilter("AuthorFilter", "Author"),
|
TextFilter("AuthorFilter", "Author"),
|
||||||
@@ -405,6 +406,6 @@ Map<String, String> getHeader(String url) {
|
|||||||
return headers;
|
return headers;
|
||||||
}
|
}
|
||||||
|
|
||||||
NepNep main() {
|
NepNep main(MSource source) {
|
||||||
return NepNep();
|
return NepNep(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import '../../../model/source.dart';
|
|||||||
import 'src/mangasee/mangasee.dart';
|
import 'src/mangasee/mangasee.dart';
|
||||||
import 'src/mangalife/mangalife.dart';
|
import 'src/mangalife/mangalife.dart';
|
||||||
|
|
||||||
const nepnepVersion = "0.0.55";
|
const nepnepVersion = "0.0.6";
|
||||||
const nepnepSourceCodeUrl =
|
const nepnepSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/nepnep/nepnep.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/nepnep/nepnep.dart";
|
||||||
|
|
||||||
|
|||||||
@@ -2,27 +2,28 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class Batoto extends MProvider {
|
class Batoto extends MProvider {
|
||||||
Batoto();
|
Batoto({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = await client.get(Uri.parse(
|
final res = await client.get(Uri.parse(
|
||||||
"${preferenceMirror(source.id)}/browse?${lang(source.lang)}&sort=views_a&page=$page"));
|
"${preferenceMirror(source.id)}/browse?${lang(source.lang)}&sort=views_a&page=$page"));
|
||||||
return mangaElementM(res.body, source);
|
return mangaElementM(res.body);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = await client.get(Uri.parse(
|
final res = await client.get(Uri.parse(
|
||||||
"${preferenceMirror(source.id)}/browse?${lang(source.lang)}&sort=update&page=$page"));
|
"${preferenceMirror(source.id)}/browse?${lang(source.lang)}&sort=update&page=$page"));
|
||||||
return mangaElementM(res.body, source);
|
return mangaElementM(res.body);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "";
|
String url = "";
|
||||||
String min = "";
|
String min = "";
|
||||||
@@ -99,11 +100,11 @@ class Batoto extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final res = await client.get(Uri.parse(url));
|
final res = await client.get(Uri.parse(url));
|
||||||
return mangaElementM(res.body, source);
|
return mangaElementM(res.body);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"Ongoing": 0, "Completed": 1, "Cancelled": 3, "Hiatus": 2}
|
{"Ongoing": 0, "Completed": 1, "Cancelled": 3, "Hiatus": 2}
|
||||||
];
|
];
|
||||||
@@ -161,7 +162,7 @@ class Batoto extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<String>> getPageList(MSource source, String url) async {
|
Future<List<String>> getPageList(String url) async {
|
||||||
final res =
|
final res =
|
||||||
(await client.get(Uri.parse("${preferenceMirror(source.id)}$url")))
|
(await client.get(Uri.parse("${preferenceMirror(source.id)}$url")))
|
||||||
.body;
|
.body;
|
||||||
@@ -190,7 +191,7 @@ class Batoto extends MProvider {
|
|||||||
return pagesUrl;
|
return pagesUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
MPages mangaElementM(String res, MSource source) async {
|
MPages mangaElementM(String res) async {
|
||||||
final lang = source.lang.replaceAll("-", "_");
|
final lang = source.lang.replaceAll("-", "_");
|
||||||
|
|
||||||
final mangaElements = parseHtml(res).select("div#series-list div.col");
|
final mangaElements = parseHtml(res).select("div#series-list div.col");
|
||||||
@@ -230,7 +231,7 @@ class Batoto extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
SelectFilter("LetterFilter", "Letter matching mode (Slow)", 0, [
|
SelectFilter("LetterFilter", "Letter matching mode (Slow)", 0, [
|
||||||
SelectFilterOption("Disabled", "disabled"),
|
SelectFilterOption("Disabled", "disabled"),
|
||||||
@@ -1622,7 +1623,7 @@ class Batoto extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
ListPreference(
|
ListPreference(
|
||||||
key: "mirror",
|
key: "mirror",
|
||||||
@@ -1667,6 +1668,6 @@ class Batoto extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Batoto main() {
|
Batoto main(MSource source) {
|
||||||
return Batoto();
|
return Batoto(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
const _batotoVersion = "0.0.6";
|
const _batotoVersion = "0.0.65";
|
||||||
const _batotoSourceCodeUrl =
|
const _batotoSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/src/all/batoto/batoto.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/src/all/batoto/batoto.dart";
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class ComickFun extends MProvider {
|
class ComickFun extends MProvider {
|
||||||
ComickFun();
|
ComickFun({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse(
|
Uri.parse(
|
||||||
"${source.apiUrl}/v1.0/search?sort=follow&page=$page&tachiyomi=true"),
|
"${source.apiUrl}/v1.0/search?sort=follow&page=$page&tachiyomi=true"),
|
||||||
@@ -17,7 +19,7 @@ class ComickFun extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse(
|
Uri.parse(
|
||||||
"${source.apiUrl}/v1.0/search?sort=uploaded&page=$page&tachiyomi=true"),
|
"${source.apiUrl}/v1.0/search?sort=uploaded&page=$page&tachiyomi=true"),
|
||||||
@@ -27,8 +29,7 @@ class ComickFun extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "";
|
String url = "";
|
||||||
if (query.isNotEmpty) {
|
if (query.isNotEmpty) {
|
||||||
@@ -112,7 +113,7 @@ class ComickFun extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"1": 0, "2": 1, "3": 3, "4": 2}
|
{"1": 0, "2": 1, "3": 3, "4": 2}
|
||||||
];
|
];
|
||||||
@@ -187,7 +188,7 @@ class ComickFun extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<String>> getPageList(MSource source, String url) async {
|
Future<List<String>> getPageList(String url) async {
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse("${source.apiUrl}/chapter/$url?tachiyomi=true"),
|
Uri.parse("${source.apiUrl}/chapter/$url?tachiyomi=true"),
|
||||||
headers: getHeader(url)))
|
headers: getHeader(url)))
|
||||||
@@ -224,7 +225,7 @@ class ComickFun extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
HeaderFilter("The filter is ignored when using text search."),
|
HeaderFilter("The filter is ignored when using text search."),
|
||||||
GroupFilter("GenreFilter", "Genre", [
|
GroupFilter("GenreFilter", "Genre", [
|
||||||
@@ -652,6 +653,6 @@ Map<String, String> getHeader(String url) {
|
|||||||
return headers;
|
return headers;
|
||||||
}
|
}
|
||||||
|
|
||||||
ComickFun main() {
|
ComickFun main(MSource source) {
|
||||||
return ComickFun();
|
return ComickFun(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
const _comickVersion = "0.0.6";
|
const _comickVersion = "0.0.65";
|
||||||
const _comickSourceCodeUrl =
|
const _comickSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/src/all/comick/comick.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/src/all/comick/comick.dart";
|
||||||
|
|
||||||
|
|||||||
@@ -2,21 +2,23 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class MangaDex extends MProvider {
|
class MangaDex extends MProvider {
|
||||||
MangaDex();
|
MangaDex({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
page = (20 * (page - 1));
|
page = (20 * (page - 1));
|
||||||
final url =
|
final url =
|
||||||
"https://api.mangadex.org/manga?limit=20&offset=$page&availableTranslatedLanguage[]=${source.lang}&includes[]=cover_art${preferenceContentRating(source.id)}${preferenceOriginalLanguages(source.id)}&order[followedCount]=desc";
|
"https://api.mangadex.org/manga?limit=20&offset=$page&availableTranslatedLanguage[]=${source.lang}&includes[]=cover_art${preferenceContentRating(source.id)}${preferenceOriginalLanguages(source.id)}&order[followedCount]=desc";
|
||||||
final res = (await client.get(Uri.parse(url))).body;
|
final res = (await client.get(Uri.parse(url))).body;
|
||||||
return mangaRes(res, source);
|
return mangaRes(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
page = (20 * (page - 1));
|
page = (20 * (page - 1));
|
||||||
final url =
|
final url =
|
||||||
"https://api.mangadex.org/chapter?limit=20&offset=$page&translatedLanguage[]=${source.lang}&includeFutureUpdates=0&order[publishAt]=desc&includeFuturePublishAt=0&includeEmptyPages=0";
|
"https://api.mangadex.org/chapter?limit=20&offset=$page&translatedLanguage[]=${source.lang}&includeFutureUpdates=0&order[publishAt]=desc&includeFuturePublishAt=0&includeEmptyPages=0";
|
||||||
@@ -31,12 +33,11 @@ class MangaDex extends MProvider {
|
|||||||
final newUrl =
|
final newUrl =
|
||||||
"https://api.mangadex.org/manga?includes[]=cover_art&limit=${mangaIds.length}${preferenceContentRating(source.id)}${preferenceOriginalLanguages(source.id)}$mangaIdss";
|
"https://api.mangadex.org/manga?includes[]=cover_art&limit=${mangaIds.length}${preferenceContentRating(source.id)}${preferenceOriginalLanguages(source.id)}$mangaIdss";
|
||||||
final res = (await client.get(Uri.parse(newUrl))).body;
|
final res = (await client.get(Uri.parse(newUrl))).body;
|
||||||
return mangaRes(res, source);
|
return mangaRes(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
page = (20 * (page - 1));
|
page = (20 * (page - 1));
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "";
|
String url = "";
|
||||||
@@ -140,11 +141,11 @@ class MangaDex extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final res = (await client.get(Uri.parse(url))).body;
|
final res = (await client.get(Uri.parse(url))).body;
|
||||||
return mangaRes(res, source);
|
return mangaRes(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"ongoing": 0, "completed": 1, "hiatus": 2, "cancelled": 3}
|
{"ongoing": 0, "completed": 1, "hiatus": 2, "cancelled": 3}
|
||||||
];
|
];
|
||||||
@@ -222,7 +223,7 @@ class MangaDex extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<String>> getPageList(MSource source, String url) async {
|
Future<List<String>> getPageList(String url) async {
|
||||||
final res = (await client
|
final res = (await client
|
||||||
.get(Uri.parse("https://api.mangadex.org/at-home/server/$url")))
|
.get(Uri.parse("https://api.mangadex.org/at-home/server/$url")))
|
||||||
.body;
|
.body;
|
||||||
@@ -235,7 +236,7 @@ class MangaDex extends MProvider {
|
|||||||
return chapterDatas.map((e) => "$host/data/$hash/$e").toList();
|
return chapterDatas.map((e) => "$host/data/$hash/$e").toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
MPages mangaRes(String res, MSource source) {
|
MPages mangaRes(String res) {
|
||||||
final datasRes = getMapValue(res, "data", encode: true);
|
final datasRes = getMapValue(res, "data", encode: true);
|
||||||
|
|
||||||
final resJson = json.decode(datasRes) as List;
|
final resJson = json.decode(datasRes) as List;
|
||||||
@@ -362,7 +363,7 @@ class MangaDex extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
CheckBoxFilter(
|
CheckBoxFilter(
|
||||||
"Has available chapters", "", "HasAvailableChaptersFilter"),
|
"Has available chapters", "", "HasAvailableChaptersFilter"),
|
||||||
@@ -505,7 +506,7 @@ class MangaDex extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getSourcePreferences(MSource source) {
|
List<dynamic> getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
ListPreference(
|
ListPreference(
|
||||||
key: "cover_quality",
|
key: "cover_quality",
|
||||||
@@ -589,6 +590,6 @@ class MangaDex extends MProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MangaDex main() {
|
MangaDex main(MSource source) {
|
||||||
return MangaDex();
|
return MangaDex(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import '../../../../model/source.dart';
|
|||||||
const _apiUrl = 'https://api.mangadex.org';
|
const _apiUrl = 'https://api.mangadex.org';
|
||||||
const _baseUrl = 'https://mangadex.org';
|
const _baseUrl = 'https://mangadex.org';
|
||||||
const _isNsfw = true;
|
const _isNsfw = true;
|
||||||
const _mangadexVersion = "0.0.65";
|
const _mangadexVersion = "0.0.7";
|
||||||
const _mangadexSourceCodeUrl =
|
const _mangadexSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/src/all/mangadex/mangadex.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/src/all/mangadex/mangadex.dart";
|
||||||
String _iconUrl =
|
String _iconUrl =
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ import 'package:mangayomi/bridge_lib.dart';
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
class MangaHere extends MProvider {
|
class MangaHere extends MProvider {
|
||||||
MangaHere();
|
MangaHere({required this.source});
|
||||||
|
|
||||||
final Client client = Client();
|
MSource source;
|
||||||
|
|
||||||
|
final Client client = Client(source);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(MSource source, int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse("${source.baseUrl}/directory/$page.htm"),
|
Uri.parse("${source.baseUrl}/directory/$page.htm"),
|
||||||
headers: getHeader(source.baseUrl)))
|
headers: getHeader(source.baseUrl)))
|
||||||
@@ -33,7 +35,7 @@ class MangaHere extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse("${source.baseUrl}/directory/$page.htm?latest"),
|
Uri.parse("${source.baseUrl}/directory/$page.htm?latest"),
|
||||||
headers: getHeader(source.baseUrl)))
|
headers: getHeader(source.baseUrl)))
|
||||||
@@ -59,8 +61,7 @@ class MangaHere extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
MSource source, String query, int page, FilterList filterList) async {
|
|
||||||
final filters = filterList.filters;
|
final filters = filterList.filters;
|
||||||
String url = "${source.baseUrl}/search";
|
String url = "${source.baseUrl}/search";
|
||||||
|
|
||||||
@@ -130,7 +131,7 @@ class MangaHere extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MManga> getDetail(MSource source, String url) async {
|
Future<MManga> getDetail(String url) async {
|
||||||
final statusList = [
|
final statusList = [
|
||||||
{"Ongoing": 0, "Completed": 1}
|
{"Ongoing": 0, "Completed": 1}
|
||||||
];
|
];
|
||||||
@@ -168,7 +169,7 @@ class MangaHere extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<String>> getPageList(MSource source, String url) async {
|
Future<List<String>> getPageList(String url) async {
|
||||||
final headers = getHeader(source.baseUrl);
|
final headers = getHeader(source.baseUrl);
|
||||||
final urll = "${source.baseUrl}$url";
|
final urll = "${source.baseUrl}$url";
|
||||||
final res = (await client.get(Uri.parse(urll), headers: headers)).body;
|
final res = (await client.get(Uri.parse(urll), headers: headers)).body;
|
||||||
@@ -259,7 +260,7 @@ class MangaHere extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<dynamic> getFilterList(MSource source) {
|
List<dynamic> getFilterList() {
|
||||||
return [
|
return [
|
||||||
SelectFilter("TypeList", "Type", 1, [
|
SelectFilter("TypeList", "Type", 1, [
|
||||||
SelectFilterOption("American Manga", "5"),
|
SelectFilterOption("American Manga", "5"),
|
||||||
@@ -335,6 +336,6 @@ Map<String, String> getHeader(String url) {
|
|||||||
return headers;
|
return headers;
|
||||||
}
|
}
|
||||||
|
|
||||||
MangaHere main() {
|
MangaHere main(MSource source) {
|
||||||
return MangaHere();
|
return MangaHere(source: source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get mangahereSource => _mangahereSource;
|
Source get mangahereSource => _mangahereSource;
|
||||||
const _mangahereVersion = "0.0.6";
|
const _mangahereVersion = "0.0.65";
|
||||||
const _mangahereSourceCodeUrl =
|
const _mangahereSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/src/en/mangahere/mangahere.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/src/en/mangahere/mangahere.dart";
|
||||||
Source _mangahereSource = Source(
|
Source _mangahereSource = Source(
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class Source {
|
|||||||
this.version = "",
|
this.version = "",
|
||||||
this.isManga = true,
|
this.isManga = true,
|
||||||
this.isFullData = false,
|
this.isFullData = false,
|
||||||
this.appMinVerReq = "0.1.6",
|
this.appMinVerReq = "0.1.7",
|
||||||
this.additionalParams = ""});
|
this.additionalParams = ""});
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
|
|||||||
Reference in New Issue
Block a user