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

View File

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