This commit is contained in:
kodjomoustapha
2024-01-07 18:38:00 +01:00
parent 1c26ac649c
commit a0986cf9d4
65 changed files with 670 additions and 726 deletions

View File

@@ -4,6 +4,8 @@ import 'dart:convert';
class HeanCms extends MProvider {
HeanCms();
final Client client = Client();
@override
Future<MPages> getPopular(MSource source, int page) async {
final headers = getHeader(source.baseUrl);
@@ -18,14 +20,13 @@ class HeanCms extends MProvider {
"series_status": "Ongoing",
"series_type": "Comic"
};
final data = {"url": url, "headers": headers, "body": body};
res = await http('POST', json.encode(data));
res = (await client.post(Uri.parse(url), headers: headers, body: body))
.body;
} else {
final newEndpointUrl =
"${source.apiUrl}/query/?page=$page&query_string=&series_status=All&order=desc&orderBy=total_views&perPage=12&tags_ids=[]&series_type=Comic";
final newEndpointData = {"url": newEndpointUrl, "headers": headers};
res = await http('GET', json.encode(newEndpointData));
res =
(await client.get(Uri.parse(newEndpointUrl), headers: headers)).body;
}
return mMangaRes(res, source);
}
@@ -43,14 +44,13 @@ class HeanCms extends MProvider {
"series_status": "Ongoing",
"series_type": "Comic"
};
final data = {"url": url, "headers": headers, "body": body};
res = await http('POST', json.encode(data));
res = (await client.post(Uri.parse(url), headers: headers, body: body))
.body;
} else {
final newEndpointUrl =
"${source.apiUrl}/query/?page=$page&query_string=&series_status=All&order=desc&orderBy=latest&perPage=12&tags_ids=[]&series_type=Comic";
final newEndpointData = {"url": newEndpointUrl, "headers": headers};
res = await http('GET', json.encode(newEndpointData));
res =
(await client.get(Uri.parse(newEndpointUrl), headers: headers)).body;
}
return mMangaRes(res, source);
}
@@ -63,14 +63,13 @@ class HeanCms extends MProvider {
if (!useNewQueryEndpoint(source.source)) {
final url = "${source.apiUrl}/series/search";
final body = {"term": query};
final data = {"url": url, "headers": headers, "body": body};
res = await http('POST', json.encode(data));
res = (await client.post(Uri.parse(url), headers: headers, body: body))
.body;
} else {
final newEndpointUrl =
"${source.apiUrl}/query/?page=$page&query_string=$query&series_status=All&order=desc&orderBy=total_views&perPage=12&tags_ids=[]&series_type=Comic";
final newEndpointData = {"url": newEndpointUrl, "headers": headers};
res = await http('GET', json.encode(newEndpointData));
res =
(await client.get(Uri.parse(newEndpointUrl), headers: headers)).body;
}
return mMangaRes(res, source);
}
@@ -80,11 +79,10 @@ class HeanCms extends MProvider {
MManga manga = MManga();
String currentSlug = substringAfterLast(url, "/");
final headers = getHeader(source.baseUrl);
final data = {
"url": "${source.apiUrl}/series/$currentSlug",
"headers": headers
};
final res = await http('GET', json.encode(data));
final res = (await client.get(
Uri.parse("${source.apiUrl}/series/$currentSlug"),
headers: headers))
.body;
manga.author = getMapValue(res, "author");
manga.description = getMapValue(res, "description");
manga.genre = jsonPathToString(res, r"$.tags[*].name", "._").split("._");
@@ -138,14 +136,14 @@ class HeanCms extends MProvider {
String res = "".toString();
if (!useslugStrategy(source.name)) {
String chapterId = substringAfter(url, '#');
final data = {
"url": "${source.apiUrl}/series/chapter/$chapterId",
"headers": headers
};
res = await http('GET', json.encode(data));
res = (await client.get(
Uri.parse("${source.apiUrl}/series/chapter/$chapterId"),
headers: headers))
.body;
} else {
final data = {"url": "${source.baseUrl}$url", "headers": headers};
res = await http('GET', json.encode(data));
res = (await client.get(Uri.parse("${source.baseUrl}$url"),
headers: headers))
.body;
List<String> pageUrls = [];
var imagesRes = parseHtml(res)

View File

@@ -3,7 +3,7 @@ import 'src/yugenmangas/yugenmangas.dart';
import 'src/omegascans/omegascans.dart';
import 'src/perfscan/perfscan.dart';
const heancmsVersion = "0.0.5";
const heancmsVersion = "0.0.55";
const heancmsSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/heancms/heancms.dart";

View File

@@ -4,20 +4,22 @@ import 'dart:convert';
class Madara extends MProvider {
Madara();
final Client client = Client();
@override
Future<MPages> getPopular(MSource source, int page) async {
final url = "${source.baseUrl}/manga/page/$page/?m_orderby=views";
final data = {"url": url, "sourceId": source.id};
final res = await http('GET', json.encode(data));
final res = (await client.get(
Uri.parse("${source.baseUrl}/manga/page/$page/?m_orderby=views")))
.body;
final document = parseHtml(res);
return mangaFromElements(document.select("div.page-item-detail"));
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
final url = "${source.baseUrl}/manga/page/$page/?m_orderby=latest";
final data = {"url": url, "sourceId": source.id};
final res = await http('GET', json.encode(data));
final res = (await client.get(
Uri.parse("${source.baseUrl}/manga/page/$page/?m_orderby=latest")))
.body;
final document = parseHtml(res);
return mangaFromElements(document.select("div.page-item-detail"));
}
@@ -68,8 +70,8 @@ class Madara extends MProvider {
}
}
}
final data = {"url": url, "sourceId": source.id};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse(url))).body;
final document = parseHtml(res);
return mangaFromElements(document.select("div.c-tabs-item__content"));
}
@@ -122,8 +124,7 @@ class Madara extends MProvider {
];
MManga manga = MManga();
String res = "";
final datas = {"url": url, "sourceId": source.id};
res = await http('GET', json.encode(datas));
res = (await client.get(Uri.parse(url))).body;
final document = parseHtml(res);
manga.author = document.selectFirst("div.author-content > a")?.text ?? "";
@@ -162,14 +163,17 @@ class Madara extends MProvider {
"Content-Type": "application/x-www-form-urlencoded",
"X-Requested-With": "XMLHttpRequest"
};
final urll =
"${baseUrl}wp-admin/admin-ajax.php?action=manga_get_chapters&manga=$mangaId";
final datasP = {"url": urll, "headers": headers, "sourceId": source.id};
res = await http('POST', json.encode(datasP));
if (res == "error" || mangaId.isEmpty) {
final urlP = "${url}ajax/chapters";
final datasP = {"url": urlP, "headers": headers, "sourceId": source.id};
res = await http('POST', json.encode(datasP));
final resP = await client.post(
Uri.parse(
"${baseUrl}wp-admin/admin-ajax.php?action=manga_get_chapters&manga=$mangaId"),
headers: headers);
if (resP != 200 || mangaId.isEmpty) {
res = (await client.post(Uri.parse("${url}ajax/chapters"),
headers: headers))
.body;
} else {
res = resP.body;
}
var chapUrls = xpath(res, '//li[@class^="wp-manga-chapter"]/a/@href');
@@ -222,8 +226,7 @@ class Madara extends MProvider {
@override
Future<List<String>> getPageList(MSource source, String url) async {
final datas = {"url": url, "sourceId": source.id};
final res = await http('GET', json.encode(datas));
final res = (await client.get(Uri.parse(url))).body;
final document = parseHtml(res);
final pageElement = document.selectFirst(
"div.page-break, li.blocks-gallery-item, .reading-content, .text-left img");

View File

@@ -164,7 +164,7 @@ import 'src/comicarab/comicarab.dart';
import 'src/manga3asq/manga3asq.dart';
import 'src/bakamh/bakamh.dart';
const madaraVersion = "0.0.6";
const madaraVersion = "0.0.65";
const madaraSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/madara.dart";

View File

@@ -4,21 +4,21 @@ import 'dart:convert';
class MangaBox extends MProvider {
MangaBox();
final Client client = Client();
@override
Future<MPages> getPopular(MSource source, int page) async {
final url = "${source.baseUrl}/${popularUrlPath(source.name, page)}";
final data = {"url": url};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse(
"${source.baseUrl}/${popularUrlPath(source.name, page)}")))
.body;
return mangaRes(res);
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
final url = "${source.baseUrl}/${latestUrlPath(source.name, page)}";
final data = {"url": url, "sourceId": source.id};
final res = await http('GET', json.encode(data));
final res = (await client.get(
Uri.parse("${source.baseUrl}/${latestUrlPath(source.name, page)}")))
.body;
return mangaRes(res);
}
@@ -84,8 +84,8 @@ class MangaBox extends MProvider {
}
}
}
final data = {"url": url};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse(url))).body;
List<MManga> mangaList = [];
List<String> urls = [];
@@ -125,8 +125,7 @@ class MangaBox extends MProvider {
{"Ongoing": 0, "Completed": 1}
];
MManga manga = MManga();
final datas = {"url": url};
final res = await http('GET', json.encode(datas));
final res = (await client.get(Uri.parse(url))).body;
List<String> author = xpath(res,
'//*[@class="table-label" and contains(text(), "Author")]/parent::tr/td[2]/text()');
@@ -204,8 +203,7 @@ class MangaBox extends MProvider {
@override
Future<List<String>> getPageList(MSource source, String url) async {
final datas = {"url": url};
final res = await http('GET', json.encode(datas));
final res = (await client.get(Uri.parse(url))).body;
List<String> pageUrls = [];
final urls = xpath(res,
'//div[@class="container-chapter-reader" or @class="panel-read-story"]/img/@src');

View File

@@ -4,7 +4,7 @@ import 'src/mangairo/mangaeiro.dart';
import 'src/mangakakalot/mangakakalot.dart';
import 'src/manganato/manganato.dart';
const mangaboxVersion = "0.0.15";
const mangaboxVersion = "0.0.2";
const mangaboxSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/mangabox/mangabox.dart";

View File

@@ -4,23 +4,21 @@ import 'dart:convert';
class MangaReader extends MProvider {
MangaReader();
final Client client = Client();
@override
Future<MPages> getPopular(MSource source, int page) async {
final url =
"${source.baseUrl}${getMangaUrlDirectory(source.name)}/?page=$page&order=popular";
final data = {"url": url, "sourceId": source.id};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse(
"${source.baseUrl}${getMangaUrlDirectory(source.name)}/?page=$page&order=popular")))
.body;
return mangaRes(res);
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
final url =
"${source.baseUrl}${getMangaUrlDirectory(source.name)}/?page=$page&order=update";
final data = {"url": url, "sourceId": source.id};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse(
"${source.baseUrl}${getMangaUrlDirectory(source.name)}/?page=$page&order=update")))
.body;
return mangaRes(res);
}
@@ -68,9 +66,7 @@ class MangaReader extends MProvider {
}
}
final data = {"url": url, "sourceId": source.id};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse(url))).body;
return mangaRes(res);
}
@@ -129,9 +125,8 @@ class MangaReader extends MProvider {
];
url = getUrlWithoutDomain(url);
MManga manga = MManga();
final datas = {"url": "${source.baseUrl}$url", "sourceId": source.id};
final res = await http('GET', json.encode(datas));
final res = (await client.get(Uri.parse("${source.baseUrl}$url"))).body;
List<String> author = xpath(
res,
"//table[contains(@class, 'infotable')]//tr[contains(text(), 'Author')]/td[last()]/text() | //div[contains(@class, 'tsinfo')]//div[contains(@class, 'imptdt') and contains(text(), 'Author')]//i/text() | //div[contains(@class, 'fmed')]//b[contains(text(), 'Author')]/following-sibling::span[1]/text() | //span[contains(text(), 'Author')]/text()",
@@ -195,8 +190,7 @@ class MangaReader extends MProvider {
@override
Future<List<String>> getPageList(MSource source, String url) async {
url = getUrlWithoutDomain(url);
final datas = {"url": '${source.baseUrl}$url', "sourceId": source.id};
final res = await http('GET', json.encode(datas));
final res = (await client.get(Uri.parse('${source.baseUrl}$url'))).body;
List<String> pages = [];
List<String> pagesUrl = [];

View File

@@ -39,7 +39,7 @@ import 'src/turktoon/turktoon.dart';
import 'src/uzaymanga/uzaymanga.dart';
import 'src/xcalibrscans/xcalibrscans.dart';
const mangareaderVersion = "0.0.75";
const mangareaderVersion = "0.0.8";
const mangareaderSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/mangareader/mangareader.dart";

View File

@@ -4,12 +4,13 @@ import 'dart:convert';
class MMRCMS extends MProvider {
MMRCMS();
final Client client = Client();
@override
Future<MPages> getPopular(MSource source, int page) async {
final url =
"${source.baseUrl}/filterList?page=$page&sortBy=views&asc=false";
final data = {"url": url, "sourceId": source.id};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse(
"${source.baseUrl}/filterList?page=$page&sortBy=views&asc=false")))
.body;
List<MManga> mangaList = [];
final urls = xpath(res, '//*[ @class="chart-title"]/@href');
@@ -38,9 +39,9 @@ class MMRCMS extends MProvider {
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
final url = "${source.baseUrl}/latest-release?page=$page";
final data = {"url": url, "sourceId": source.id};
final res = await http('GET', json.encode(data));
final res = (await client
.get(Uri.parse("${source.baseUrl}/latest-release?page=$page")))
.body;
List<MManga> mangaList = [];
final urls = xpath(res, '//*[@class="manga-item"]/h3/a/@href');
@@ -96,8 +97,8 @@ class MMRCMS extends MProvider {
}
}
}
final data = {"url": url, "sourceId": source.id};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse(url))).body;
List<MManga> mangaList = [];
@@ -170,8 +171,7 @@ class MMRCMS extends MProvider {
}
];
MManga manga = MManga();
final datas = {"url": url, "sourceId": source.id};
final res = await http('GET', json.encode(datas));
final res = (await client.get(Uri.parse(url))).body;
final author = xpath(res,
'//*[@class="dl-horizontal"]/dt[contains(text(), "Auteur(s)") or contains(text(), "Author(s)") or contains(text(), "Autor(es)") or contains(text(), "Yazar(lar) or contains(text(), "Mangaka(lar)")]//following-sibling::dd[1]/text()');
@@ -215,8 +215,7 @@ class MMRCMS extends MProvider {
@override
Future<List<String>> getPageList(MSource source, String url) async {
final datas = {"url": url, "sourceId": source.id};
final res = await http('GET', json.encode(datas));
final res = (await client.get(Uri.parse(url))).body;
List<String> pagesUrl = [];
final pages =

View File

@@ -8,7 +8,7 @@ import 'src/readcomicsonline/readcomicsonline.dart';
import 'src/lelscanvf/lelscanvf.dart';
import 'src/mangafr/mangafr.dart';
const mmrcmsVersion = "0.0.5";
const mmrcmsVersion = "0.0.55";
const mmrcmsSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/mmrcms/mmrcms.dart";

View File

@@ -4,11 +4,11 @@ import 'dart:convert';
class NepNep extends MProvider {
NepNep();
final Client client = Client();
@override
Future<MPages> getPopular(MSource source, int page) async {
final data = {"url": "${source.baseUrl}/search/"};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse("${source.baseUrl}/search/"))).body;
final directory = directoryFromDocument(res);
final resSort = sortMapList(json.decode(directory), "vm", 1);
@@ -17,9 +17,7 @@ class NepNep extends MProvider {
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
final data = {"url": "${source.baseUrl}/search/"};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse("${source.baseUrl}/search/"))).body;
final directory = directoryFromDocument(res);
final resSort = sortMapList(json.decode(directory), "lt", 1);
@@ -31,8 +29,7 @@ class NepNep extends MProvider {
MSource source, String query, int page, FilterList filterList) async {
final filters = filterList.filters;
List<dynamic> queryRes = [];
final data = {"url": "${source.baseUrl}/search/"};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse("${source.baseUrl}/search/"))).body;
final directory = directoryFromDocument(res);
final resSort = sortMapList(json.decode(directory), "lt", 1);
@@ -145,8 +142,9 @@ class NepNep extends MProvider {
{"Ongoing": 0, "Completed": 1, "Cancelled": 3, "Hiatus": 2}
];
final headers = getHeader(source.baseUrl);
final data = {"url": '${source.baseUrl}/manga/$url', "headers": headers};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse('${source.baseUrl}/manga/$url'),
headers: headers))
.body;
MManga manga = MManga();
manga.author = xpath(res,
'//li[contains(@class,"list-group-item") and contains(text(),"Author")]/a/text()')
@@ -194,9 +192,9 @@ class NepNep extends MProvider {
Future<List<String>> getPageList(MSource source, String url) async {
final headers = getHeader(source.baseUrl);
List<String> pages = [];
final data = {"url": '${source.baseUrl}$url', "headers": headers};
print(data);
final res = await http('GET', json.encode(data));
final res =
(await client.get(Uri.parse('${source.baseUrl}$url'), headers: headers))
.body;
final script =
xpath(res, '//script[contains(text(), "MainFunction")]/text()').first;
final chapScript =

View File

@@ -3,7 +3,7 @@ import '../../../model/source.dart';
import 'src/mangasee/mangasee.dart';
import 'src/mangalife/mangalife.dart';
const nepnepVersion = "0.0.5";
const nepnepVersion = "0.0.55";
const nepnepSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/nepnep/nepnep.dart";

View File

@@ -4,21 +4,21 @@ import 'dart:convert';
class Batoto extends MProvider {
Batoto();
final Client client = Client();
@override
Future<MPages> getPopular(MSource source, int page) async {
final url =
"${preferenceMirror(source.id)}/browse?${lang(source.lang)}&sort=views_a&page=$page";
final data = {"url": url};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse(
"${preferenceMirror(source.id)}/browse?${lang(source.lang)}&sort=views_a&page=$page")))
.body;
return mangaElementM(res, source);
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
final url =
"${preferenceMirror(source.id)}/browse?${lang(source.lang)}&sort=update&page=$page";
final data = {"url": url};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse(
"${preferenceMirror(source.id)}/browse?${lang(source.lang)}&sort=update&page=$page")))
.body;
return mangaElementM(res, source);
}
@@ -52,9 +52,7 @@ class Batoto extends MProvider {
}
url += "${source.lang}";
}
}
//
else if (filter.type == "GenreGroupFilter") {
} else if (filter.type == "GenreGroupFilter") {
final included = (filter.state as List)
.where((e) => e.state == 1 ? true : false)
.toList();
@@ -100,8 +98,7 @@ class Batoto extends MProvider {
url += "${ll(url)}chapters=$min-$max";
}
final data = {"url": url};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse(url))).body;
return mangaElementM(res, source);
}
@@ -111,8 +108,9 @@ class Batoto extends MProvider {
{"Ongoing": 0, "Completed": 1, "Cancelled": 3, "Hiatus": 2}
];
final data = {"url": "${preferenceMirror(source.id)}$url"};
final res = await http('GET', json.encode(data));
final res =
(await client.get(Uri.parse("${preferenceMirror(source.id)}$url")))
.body;
MManga manga = MManga();
final workStatus = xpath(res,
'//*[@class="attr-item"]/b[contains(text(),"Original work")]/following-sibling::span[1]/text()')
@@ -164,9 +162,9 @@ class Batoto extends MProvider {
@override
Future<List<String>> getPageList(MSource source, String url) async {
final datas = {"url": "${preferenceMirror(source.id)}$url"};
final res = await http('GET', json.encode(datas));
final res =
(await client.get(Uri.parse("${preferenceMirror(source.id)}$url")))
.body;
final script = xpath(res,
'//script[contains(text(), "imgHttpLis") and contains(text(), "batoWord") and contains(text(), "batoPass")]/text()')
.first;

View File

@@ -1,6 +1,6 @@
import '../../../../model/source.dart';
const _batotoVersion = "0.0.55";
const _batotoVersion = "0.0.6";
const _batotoSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/src/all/batoto/batoto.dart";

View File

@@ -4,21 +4,25 @@ import 'dart:convert';
class ComickFun extends MProvider {
ComickFun();
final Client client = Client();
@override
Future<MPages> getPopular(MSource source, int page) async {
final url =
"${source.apiUrl}/v1.0/search?sort=follow&page=$page&tachiyomi=true";
final data = {"url": url, "headers": getHeader(source.baseUrl)};
final res = await http('GET', json.encode(data));
final res = (await client.get(
Uri.parse(
"${source.apiUrl}/v1.0/search?sort=follow&page=$page&tachiyomi=true"),
headers: getHeader(source.baseUrl)))
.body;
return mangaRes(res);
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
final url =
"${source.apiUrl}/v1.0/search?sort=uploaded&page=$page&tachiyomi=true";
final data = {"url": url, "headers": getHeader(source.baseUrl)};
final res = await http('GET', json.encode(data));
final res = (await client.get(
Uri.parse(
"${source.apiUrl}/v1.0/search?sort=uploaded&page=$page&tachiyomi=true"),
headers: getHeader(source.baseUrl)))
.body;
return mangaRes(res);
}
@@ -100,8 +104,10 @@ class ComickFun extends MProvider {
}
url += "${ll(url)}page=$page&tachiyomi=true";
}
final data = {"url": url, "headers": getHeader(source.baseUrl)};
final res = await http('GET', json.encode(data));
final res =
(await client.get(Uri.parse(url), headers: getHeader(source.baseUrl)))
.body;
return mangaRes(res);
}
@@ -110,12 +116,12 @@ class ComickFun extends MProvider {
final statusList = [
{"1": 0, "2": 1, "3": 3, "4": 2}
];
final headers = getHeader(source.baseUrl);
final urll = "${source.apiUrl}${url.replaceAll("#", '')}?tachiyomi=true";
final data = {"url": urll, "headers": headers};
final res = await http('GET', json.encode(data));
final res = (await client.get(
Uri.parse(
"${source.apiUrl}${url.replaceAll("#", '')}?tachiyomi=true"),
headers: headers))
.body;
MManga manga = MManga();
manga.author = jsonPathToString(res, r'$.authors[*].name', '');
manga.genre = jsonPathToString(res, r'$.genres[*].name', "_.").split("_.");
@@ -124,15 +130,15 @@ class ComickFun extends MProvider {
parseStatus(jsonPathToString(res, r'$..comic.status', ''), statusList);
final chapUrlReq =
"${source.apiUrl}${url.replaceAll("#", '')}chapters?lang=${source.lang}&tachiyomi=true&page=1";
final dataReq = {"url": chapUrlReq, "headers": headers};
final request = await http('GET', json.encode(dataReq));
final request =
(await client.get(Uri.parse(chapUrlReq), headers: headers)).body;
var total = jsonPathToString(request, r'$.total', '');
final chapterLimit = int.parse(total);
final newChapUrlReq =
"${source.apiUrl}${url.replaceAll("#", '')}chapters?limit=$chapterLimit&lang=${source.lang}&tachiyomi=true&page=1";
final newDataReq = {"url": newChapUrlReq, "headers": headers};
final newRequest = await http('GET', json.encode(newDataReq));
final newRequest =
(await client.get(Uri.parse(newChapUrlReq), headers: headers)).body;
final chapsUrls =
jsonPathToString(newRequest, r'$.chapters[*].hid', "_.").split("_.");
@@ -180,9 +186,10 @@ class ComickFun extends MProvider {
@override
Future<List<String>> getPageList(MSource source, String url) async {
final urll = "${source.apiUrl}/chapter/$url?tachiyomi=true";
final data = {"url": urll, "headers": getHeader(url)};
final res = await http('GET', json.encode(data));
final res = (await client.get(
Uri.parse("${source.apiUrl}/chapter/$url?tachiyomi=true"),
headers: getHeader(url)))
.body;
return jsonPathToString(res, r'$.chapter.images[*].url', '_.').split('_.');
}

View File

@@ -1,6 +1,6 @@
import '../../../../model/source.dart';
const _comickVersion = "0.0.5";
const _comickVersion = "0.0.55";
const _comickSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/src/all/comick/comick.dart";

View File

@@ -4,23 +4,23 @@ import 'dart:convert';
class MangaDex extends MProvider {
MangaDex();
final Client client = Client();
@override
Future<MPages> getPopular(MSource source, int page) async {
page = (20 * (page - 1));
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";
final datas = {"url": url};
final res = await http('GET', json.encode(datas));
final res = (await client.get(Uri.parse(url))).body;
return mangaRes(res, source);
}
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
page = (20 * (page - 1));
final urll =
final url =
"https://api.mangadex.org/chapter?limit=20&offset=$page&translatedLanguage[]=${source.lang}&includeFutureUpdates=0&order[publishAt]=desc&includeFuturePublishAt=0&includeEmptyPages=0";
final datas = {"url": urll};
final ress = await http('GET', json.encode(datas));
final ress = (await client.get(Uri.parse(url))).body;
final mangaIds =
jsonPathToString(ress, r'$.data[*].relationships[*].id', '.--')
.split('.--');
@@ -30,7 +30,7 @@ class MangaDex extends MProvider {
}
final newUrl =
"https://api.mangadex.org/manga?includes[]=cover_art&limit=${mangaIds.length}${preferenceContentRating(source.id)}${preferenceOriginalLanguages(source.id)}$mangaIdss";
final res = await http('GET', json.encode({"url": newUrl}));
final res = (await client.get(Uri.parse(newUrl))).body;
return mangaRes(res, source);
}
@@ -139,7 +139,7 @@ class MangaDex extends MProvider {
}
}
final res = await http('GET', json.encode({"url": url}));
final res = (await client.get(Uri.parse(url))).body;
return mangaRes(res, source);
}
@@ -149,9 +149,9 @@ class MangaDex extends MProvider {
{"ongoing": 0, "completed": 1, "hiatus": 2, "cancelled": 3}
];
final urll =
"https://api.mangadex.org$url?includes[]=cover_art&includes[]=author&includes[]=artist";
final res = await http('GET', json.encode({"url": urll}));
final res = (await client.get(Uri.parse(
"https://api.mangadex.org$url?includes[]=cover_art&includes[]=author&includes[]=artist")))
.body;
MManga manga = MManga();
manga.author = jsonPathToString(
res, r'$..data.relationships[*].attributes.name', ', ');
@@ -223,11 +223,10 @@ class MangaDex extends MProvider {
@override
Future<List<String>> getPageList(MSource source, String url) async {
final urll = "https://api.mangadex.org/at-home/server/$url";
final res = (await client
.get(Uri.parse("https://api.mangadex.org/at-home/server/$url")))
.body;
final res = await http('GET', json.encode({"url": urll}));
// final dataRes = json.decode(res);
final host = getMapValue(res, "baseUrl");
final chapter = getMapValue(res, "chapter", encode: true);
final hash = getMapValue(chapter, "hash");
@@ -322,7 +321,7 @@ class MangaDex extends MProvider {
String mangaId, int offset, String lang, int sourceId) async {
final url =
'https://api.mangadex.org/manga/$mangaId/feed?limit=500&offset=$offset&includes[]=user&includes[]=scanlation_group&order[volume]=desc&order[chapter]=desc&translatedLanguage[]=$lang&includeFuturePublishAt=0&includeEmptyPages=0${preferenceContentRating(sourceId)}';
final res = await http('GET', json.encode({"url": url}));
final res = (await client.get(Uri.parse(url))).body;
return res;
}

View File

@@ -3,7 +3,7 @@ import '../../../../model/source.dart';
const _apiUrl = 'https://api.mangadex.org';
const _baseUrl = 'https://mangadex.org';
const _isNsfw = true;
const _mangadexVersion = "0.0.6";
const _mangadexVersion = "0.0.65";
const _mangadexSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/src/all/mangadex/mangadex.dart";
String _iconUrl =

View File

@@ -4,13 +4,14 @@ import 'dart:convert';
class MangaHere extends MProvider {
MangaHere();
final Client client = Client();
@override
Future<MPages> getPopular(MSource source, int page) async {
final headers = getHeader(source.baseUrl);
final url = "${source.baseUrl}/directory/$page.htm";
final data = {"url": url, "headers": headers};
final res = await http('POST', json.encode(data));
final res = (await client.get(
Uri.parse("${source.baseUrl}/directory/$page.htm"),
headers: getHeader(source.baseUrl)))
.body;
List<MManga> mangaList = [];
final names =
@@ -33,11 +34,10 @@ class MangaHere extends MProvider {
@override
Future<MPages> getLatestUpdates(MSource source, int page) async {
final headers = getHeader(source.baseUrl);
final url = "${source.baseUrl}/directory/$page.htm?latest";
final data = {"url": url, "headers": headers};
final res = await http('POST', json.encode(data));
final res = (await client.get(
Uri.parse("${source.baseUrl}/directory/$page.htm?latest"),
headers: getHeader(source.baseUrl)))
.body;
List<MManga> mangaList = [];
final names =
@@ -61,8 +61,6 @@ class MangaHere extends MProvider {
@override
Future<MPages> search(
MSource source, String query, int page, FilterList filterList) async {
final headers = getHeader(source.baseUrl);
final filters = filterList.filters;
String url = "${source.baseUrl}/search";
@@ -108,8 +106,9 @@ class MangaHere extends MProvider {
}
}
url += "${ll(url)}title=$query&page=$page";
final data = {"url": url, "headers": headers};
final res = await http('POST', json.encode(data));
final res =
(await client.get(Uri.parse(url), headers: getHeader(source.baseUrl)))
.body;
List<MManga> mangaList = [];
final names =
@@ -135,9 +134,9 @@ class MangaHere extends MProvider {
final statusList = [
{"Ongoing": 0, "Completed": 1}
];
final headers = getHeader(source.baseUrl);
final data = {"url": "${source.baseUrl}/$url", "headers": headers};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse("${source.baseUrl}/$url"),
headers: headers))
.body;
MManga manga = MManga();
manga.author =
xpath(res, '//*[@class="detail-info-right-say"]/a/text()').first;
@@ -172,8 +171,7 @@ class MangaHere extends MProvider {
Future<List<String>> getPageList(MSource source, String url) async {
final headers = getHeader(source.baseUrl);
final urll = "${source.baseUrl}$url";
final data = {"url": urll, "headers": headers};
final res = await http('GET', json.encode(data));
final res = (await client.get(Uri.parse(urll), headers: headers)).body;
final pages = xpath(res, "//body/div/div/span/a/text()");
List<String> pageUrls = [];
if (pages.isEmpty) {
@@ -221,8 +219,9 @@ class MangaHere extends MProvider {
"Host": "www.mangahere.cc",
"X-Requested-With": "XMLHttpRequest"
};
final data = {"url": pageLink, "headers": headers};
final ress = await http('GET', json.encode(data));
final ress =
(await client.get(Uri.parse(pageLink), headers: headers)).body;
responseText = ress;
@@ -231,7 +230,8 @@ class MangaHere extends MProvider {
}
}
}
String deobfuscatedScript = unpackJs(responseText.replaceAll("eval", ""));
String deobfuscatedScript =
unpackJs(responseText.replaceAll("eval", ""));
int baseLinkStartPos = deobfuscatedScript.indexOf("pix=") + 5;
int baseLinkEndPos =

View File

@@ -1,7 +1,7 @@
import '../../../../model/source.dart';
Source get mangahereSource => _mangahereSource;
const _mangahereVersion = "0.0.55";
const _mangahereVersion = "0.0.6";
const _mangahereSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/src/en/mangahere/mangahere.dart";
Source _mangahereSource = Source(