This commit is contained in:
Moustapha Kodjo Amadou
2025-06-05 15:34:21 +01:00
parent 89fe762543
commit 51033c2e62
2 changed files with 46 additions and 51 deletions

View File

@@ -10,11 +10,10 @@ class MangaHere extends MProvider {
@override @override
Future<MPages> getPopular(int page) async { Future<MPages> getPopular(int page) async {
final res = final res = (await client.get(
(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), )).body;
)).body;
List<MManga> mangaList = []; List<MManga> mangaList = [];
final names = xpath( final names = xpath(
@@ -43,11 +42,10 @@ class MangaHere extends MProvider {
@override @override
Future<MPages> getLatestUpdates(int page) async { Future<MPages> getLatestUpdates(int page) async {
final res = final res = (await client.get(
(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), )).body;
)).body;
List<MManga> mangaList = []; List<MManga> mangaList = [];
final names = xpath( final names = xpath(
@@ -91,14 +89,12 @@ class MangaHere extends MProvider {
final rt = filter.values[filter.state].value; final rt = filter.values[filter.state].value;
url += "${ll(url)}rating=$rt"; url += "${ll(url)}rating=$rt";
} else if (filter.type == "GenreList") { } else if (filter.type == "GenreList") {
final included = final included = (filter.state as List)
(filter.state as List) .where((e) => e.state == 1 ? true : false)
.where((e) => e.state == 1 ? true : false) .toList();
.toList(); final excluded = (filter.state as List)
final excluded = .where((e) => e.state == 2 ? true : false)
(filter.state as List) .toList();
.where((e) => e.state == 2 ? true : false)
.toList();
if (included.isNotEmpty) { if (included.isNotEmpty) {
url += "${ll(url)}genres="; url += "${ll(url)}genres=";
for (var val in included) { for (var val in included) {
@@ -123,11 +119,10 @@ class MangaHere extends MProvider {
} }
} }
url += "${ll(url)}title=$query&page=$page"; url += "${ll(url)}title=$query&page=$page";
final res = final res = (await client.get(
(await client.get( Uri.parse(url),
Uri.parse(url), headers: getHeader(source.baseUrl),
headers: getHeader(source.baseUrl), )).body;
)).body;
List<MManga> mangaList = []; List<MManga> mangaList = [];
final names = xpath( final names = xpath(
@@ -159,17 +154,20 @@ class MangaHere extends MProvider {
final statusList = [ final statusList = [
{"Ongoing": 0, "Completed": 1}, {"Ongoing": 0, "Completed": 1},
]; ];
final res = final res = (await client.get(
(await client.get( Uri.parse("${source.baseUrl}/$url"),
Uri.parse("${source.baseUrl}/$url"), headers: getHeader(source.baseUrl),
headers: getHeader(source.baseUrl), )).body;
)).body;
MManga manga = MManga(); MManga manga = MManga();
manga.author = manga.author = xpath(
xpath(res, '//*[@class="detail-info-right-say"]/a/text()').first; res,
'//*[@class="detail-info-right-say"]/a/text()',
).first;
manga.description = xpath(res, '//*[@class="fullcontent"]/text()').first; manga.description = xpath(res, '//*[@class="fullcontent"]/text()').first;
final status = final status = xpath(
xpath(res, '//*[@class="detail-info-right-title-tip"]/text()').first; res,
'//*[@class="detail-info-right-title-tip"]/text()',
).first;
manga.status = parseStatus(status, statusList); manga.status = parseStatus(status, statusList);
manga.genre = xpath( manga.genre = xpath(
res, res,
@@ -251,26 +249,23 @@ class MangaHere extends MProvider {
String pageLink = String pageLink =
"$pageBase/chapterfun.ashx?cid=$chapterId&page=$i&key=$secretKey"; "$pageBase/chapterfun.ashx?cid=$chapterId&page=$i&key=$secretKey";
String responseText = "".toString(); String responseText = "".toString();
for (int tr = 1; tr <= 3; tr++) { final headers = {
if (responseText.isEmpty) { "Referer": urll,
final headers = { "Accept": "*/*",
"Referer": urll, "Accept-Language": "en-US,en;q=0.9",
"Accept": "*/*", "Connection": "keep-alive",
"Accept-Language": "en-US,en;q=0.9", "Host": "www.mangahere.cc",
"Connection": "keep-alive", "X-Requested-With": "XMLHttpRequest",
"Host": "www.mangahere.cc", };
"X-Requested-With": "XMLHttpRequest",
};
final ress = final ress = (await client.get(
(await client.get(Uri.parse(pageLink), headers: headers)).body; Uri.parse(pageLink),
headers: headers,
)).body;
responseText = ress.isNotEmpty ? ress : "";
responseText = ress; if (responseText.isEmpty) {
secretKey = "";
if (responseText.isEmpty) {
secretKey = "";
}
}
} }
String deobfuscatedScript = unpackJs( String deobfuscatedScript = unpackJs(
responseText.replaceAll("eval", ""), responseText.replaceAll("eval", ""),

View File

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