Merge pull request #284 from xMohnad/manga/madara-sources

Manga/madara sources
This commit is contained in:
Moustapha Kodjo Amadou
2025-06-14 08:16:37 +01:00
committed by GitHub
6 changed files with 68 additions and 29 deletions

View File

@@ -10,9 +10,10 @@ class Madara 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(
Uri.parse("${source.baseUrl}/manga/page/$page/?m_orderby=views"), "${source.baseUrl}/${getMangaSubString()}/page/$page/?m_orderby=views",
),
)).body; )).body;
final document = parseHtml(res); final document = parseHtml(res);
return mangaFromElements(document.select("div.page-item-detail")); return mangaFromElements(document.select("div.page-item-detail"));
@@ -20,9 +21,10 @@ class Madara 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(
Uri.parse("${source.baseUrl}/manga/page/$page/?m_orderby=latest"), "${source.baseUrl}/${getMangaSubString()}/page/$page/?m_orderby=latest",
),
)).body; )).body;
final document = parseHtml(res); final document = parseHtml(res);
return mangaFromElements(document.select("div.page-item-detail")); return mangaFromElements(document.select("div.page-item-detail"));
@@ -48,7 +50,10 @@ class Madara extends MProvider {
url += "${ll(url)}release=${Uri.encodeComponent(filter.state)}"; url += "${ll(url)}release=${Uri.encodeComponent(filter.state)}";
} }
} else if (filter.type == "StatusFilter") { } else if (filter.type == "StatusFilter") {
List<String> status = filter.state.where((item) => item.state).map((item) => item.value.toString()).toList(); List<String> status = filter.state
.where((item) => item.state)
.map((item) => item.value.toString())
.toList();
if (status.isNotEmpty) { if (status.isNotEmpty) {
url += "${ll(url)}status[]=${status.join('&status[]=')}"; url += "${ll(url)}status[]=${status.join('&status[]=')}";
} }
@@ -101,8 +106,8 @@ class Madara extends MProvider {
); );
chapter.dateUpload = dates[0]; chapter.dateUpload = dates[0];
} else { } else {
chapter.dateUpload = chapter.dateUpload = DateTime.now().millisecondsSinceEpoch
DateTime.now().millisecondsSinceEpoch.toString(); .toString();
} }
} }
chapters.add(chapter); chapters.add(chapter);
@@ -203,8 +208,7 @@ class Madara extends MProvider {
body: {"action": "manga_get_chapters", "manga": mangaId}, body: {"action": "manga_get_chapters", "manga": mangaId},
); );
if (oldXhrChaptersRequest.statusCode == 400) { if (oldXhrChaptersRequest.statusCode == 400) {
res = res = (await client.post(
(await client.post(
Uri.parse("${url}ajax/chapters"), Uri.parse("${url}ajax/chapters"),
headers: headers, headers: headers,
)).body; )).body;
@@ -215,8 +219,7 @@ class Madara extends MProvider {
MDocument chapDoc = parseHtml(res); MDocument chapDoc = parseHtml(res);
manga.chapters = getChapters(chapDoc); manga.chapters = getChapters(chapDoc);
if (manga.chapters.isEmpty) { if (manga.chapters.isEmpty) {
res = res = (await client.post(
(await client.post(
Uri.parse("${url}ajax/chapters"), Uri.parse("${url}ajax/chapters"),
headers: headers, headers: headers,
)).body; )).body;
@@ -252,8 +255,10 @@ class Madara extends MProvider {
List<String> pageUrls = []; List<String> pageUrls = [];
if (imgs.length == 1) { if (imgs.length == 1) {
final pagesNumber = final pagesNumber = document
document.selectFirst("#single-pager").select("option").length; .selectFirst("#single-pager")
.select("option")
.length;
final imgUrl = imgs.first; final imgUrl = imgs.first;
for (var i = 0; i < pagesNumber; i++) { for (var i = 0; i < pagesNumber; i++) {
final val = i + 1; final val = i + 1;
@@ -326,6 +331,11 @@ class Madara extends MProvider {
} }
return "?"; return "?";
} }
String getMangaSubString() {
const worksSources = {"Olaoe", "Mangax Core"};
return worksSources.contains(source.name) ? "works" : "manga";
}
} }
Madara main(MSource source) { Madara main(MSource source) {

View File

@@ -94,6 +94,8 @@ import 'src/winterscan/winterscan.dart';
import 'src/wonderlandscan/wonderlandscan.dart'; import 'src/wonderlandscan/wonderlandscan.dart';
import 'src/yuriverso/yuriverso.dart'; import 'src/yuriverso/yuriverso.dart';
import 'src/manga3asq/manga3asq.dart'; import 'src/manga3asq/manga3asq.dart';
import 'src/detectiveconanar/detectiveconanar.dart';
import 'src/mangaxcore/mangaxcore.dart';
import 'src/grabberzone/grabberzone.dart'; import 'src/grabberzone/grabberzone.dart';
import 'src/mangalink/mangalink.dart'; import 'src/mangalink/mangalink.dart';
import 'src/mangalek/mangalek.dart'; import 'src/mangalek/mangalek.dart';
@@ -379,6 +381,8 @@ List<Source> _madaraSourcesList =
yuriversoSource, yuriversoSource,
//مانجا العاشق (AR) //مانجا العاشق (AR)
manga3asqSource, manga3asqSource,
//Mangax Core (AR)
mangaxcoreSource,
//Grabber Zone (ALL) //Grabber Zone (ALL)
grabberzoneSource, grabberzoneSource,
//مانجا لينك (AR) //مانجا لينك (AR)
@@ -397,6 +401,8 @@ List<Source> _madaraSourcesList =
olaoeSource, olaoeSource,
//Rocks Manga (AR) //Rocks Manga (AR)
rocksmangaSource, rocksmangaSource,
//شبكة كونان العربية (AR)
detectiveconanarSource,
//DragonTea (EN) //DragonTea (EN)
dragonteaSource, dragonteaSource,
//Global Bloging (EN) //Global Bloging (EN)
@@ -563,8 +569,7 @@ List<Source> _madaraSourcesList =
webtoonhattiSource, webtoonhattiSource,
] ]
.map( .map(
(e) => (e) => e
e
..itemType = ItemType.manga ..itemType = ItemType.manga
..sourceCodeUrl = madaraSourceCodeUrl ..sourceCodeUrl = madaraSourceCodeUrl
..version = madaraVersion, ..version = madaraVersion,

View File

@@ -0,0 +1,12 @@
import '../../../../../../model/source.dart';
Source get detectiveconanarSource => _detectiveconanarSource;
Source _detectiveconanarSource = Source(
name: "شبكة كونان العربية",
baseUrl: "https://manga.detectiveconanar.com",
lang: "ar",
typeSource: "madara",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/madara/src/detectiveconanar/icon.png",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,12 @@
import '../../../../../../model/source.dart';
Source get mangaxcoreSource => _mangaxcoreSource;
Source _mangaxcoreSource = Source(
name: "Mangax Core",
baseUrl: "https://mangaxcore.xyz",
lang: "ar",
typeSource: "madara",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/madara/src/mangaxcore/icon.png",
);