Reorganize folders

This commit is contained in:
kodjomoustapha
2024-03-28 11:13:42 +01:00
parent abdc9cab62
commit 67109cdbbc
565 changed files with 988 additions and 1863 deletions

View File

@@ -0,0 +1,322 @@
import 'package:mangayomi/bridge_lib.dart';
import 'dart:convert';
class MangaReader extends MProvider {
MangaReader({required this.source});
MSource source;
final Client client = Client(source);
@override
Future<MPages> getPopular(int page) async {
final res = (await client.get(Uri.parse(
"${source.baseUrl}${getMangaUrlDirectory(source.name)}/?page=$page&order=popular")))
.body;
return mangaRes(res);
}
@override
Future<MPages> getLatestUpdates(int page) async {
final res = (await client.get(Uri.parse(
"${source.baseUrl}${getMangaUrlDirectory(source.name)}/?page=$page&order=update")))
.body;
return mangaRes(res);
}
@override
Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters;
String url =
"${source.baseUrl}${getMangaUrlDirectory(source.name)}/?&title=$query&page=$page";
for (var filter in filters) {
if (filter.type == "AuthorFilter") {
url += "${ll(url)}author=${Uri.encodeComponent(filter.state)}";
} else if (filter.type == "YearFilter") {
url += "${ll(url)}yearx=${Uri.encodeComponent(filter.state)}";
} else if (filter.type == "StatusFilter") {
final status = filter.values[filter.state].value;
url += "${ll(url)}status=$status";
} else if (filter.type == "TypeFilter") {
final type = filter.values[filter.state].value;
url += "${ll(url)}type=$type";
} else if (filter.type == "OrderByFilter") {
final order = filter.values[filter.state].value;
url += "${ll(url)}order=$order";
} else if (filter.type == "GenreListFilter") {
final included = (filter.state as List)
.where((e) => e.state == 1 ? true : false)
.toList();
final excluded = (filter.state as List)
.where((e) => e.state == 2 ? true : false)
.toList();
if (included.isNotEmpty) {
url += "${ll(url)}genres[]=";
for (var val in included) {
url += "${val.value},";
}
}
if (excluded.isNotEmpty) {
url += "${ll(url)}genres[]=";
for (var val in excluded) {
url += "-${val.value},";
}
}
}
}
final res = (await client.get(Uri.parse(url))).body;
return mangaRes(res);
}
@override
Future<MManga> getDetail(String url) async {
final statusList = [
{
"مستمرة": 0,
"En curso": 0,
"Ongoing": 0,
"On going": 0,
"Ativo": 0,
"En Cours": 0,
"Berjalan": 0,
"Продолжается": 0,
"Updating": 0,
"Lançando": 0,
"In Arrivo": 0,
"OnGoing": 0,
"Đang tiến hành": 0,
"em lançamento": 0,
"Онгоінг": 0,
"Publishing": 0,
"Curso": 0,
"En marcha": 0,
"Publicandose": 0,
"连载中": 0,
"Devam Ediyor": 0,
"Em Andamento": 0,
"In Corso": 0,
"Güncel": 0,
"Emision": 0,
"En emision": 0,
"مستمر": 0,
"Đã hoàn thành": 1,
"مكتملة": 1,
"Завершено": 1,
"Complété": 1,
"Fini": 1,
"Terminé": 1,
"Tamamlandı": 1,
"Tamat": 1,
"Completado": 1,
"Concluído": 1,
"Finished": 1,
"Completed": 1,
"Completo": 1,
"Concluido": 1,
"已完结": 1,
"Finalizado": 1,
"Completata": 1,
"One-Shot": 1,
"Bitti": 1,
"hiatus": 2,
}
];
url = getUrlWithoutDomain(url);
MManga manga = MManga();
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()",
'');
if (author.isEmpty) {
author = xpath(
res,
"//table[contains(@class, 'infotable')]//tr[contains(text(), '${authorLocalStr(source.lang)}')]/td[last()]/text() | //div[contains(@class, 'tsinfo')]//div[contains(@class, 'imptdt') and contains(text(), '${authorLocalStr(source.lang)}')]//i/text() | //div[contains(@class, 'fmed')]//b[contains(text(), '${authorLocalStr(source.lang)}')]/following-sibling::span[1]/text() | //span[contains(text(), '${authorLocalStr(source.lang)}')]/text()",
'');
}
if (author.isNotEmpty) {
manga.author = author.first;
}
final description = parseHtml(res)
.selectFirst(".desc, .entry-content[itemprop=description]")
?.text;
if (description != null) {
manga.description = description;
}
List<String> status = xpath(
res,
"//table[contains(@class, 'infotable')]//tr[contains(text(), 'Status')]/td[last()]/text() | //div[contains(@class, 'tsinfo')]//div[contains(@class, 'imptdt') and contains(text(), 'Status')]//i/text() | //div[contains(@class, 'fmed')]//b[contains(text(), 'Status')]/following-sibling::span[1]/text() | //span[contains(text(), 'Status')]/text()",
'');
if (status.isEmpty) {
status = xpath(
res,
"//table[contains(@class, 'infotable')]//tr[contains(text(), '${statusLocalStr(source.lang)}')]/td[last()]/text() | //div[contains(@class, 'tsinfo')]//div[contains(@class, 'imptdt') and contains(text(), '${statusLocalStr(source.lang)}')]//i/text() | //div[contains(@class, 'fmed')]//b[contains(text(), '${statusLocalStr(source.lang)}')]/following-sibling::span[1]/text() | //span[contains(text(), '${statusLocalStr(source.lang)}')]/text()",
'');
}
if (status.isNotEmpty) {
manga.status = parseStatus(status.first, statusList);
}
manga.genre = xpath(res,
'//*[@class="gnr" or @class="mgen" or @class="seriestugenre" ]/a/text()');
var chapUrls = xpath(res,
'//*[@class="bxcl" or @class="cl" or @class="chbox" or @class="eph-num" or @id="chapterlist"]/div/a[not(contains(@href,"{{number}}"))]/@href');
var chaptersNames = xpath(res,
'//*[@class="bxcl" or @class="cl" or @class="chbox" or @class="eph-num" or @id="chapterlist"]/div/a/span[@class="chapternum" and not(contains(text(),"{{number}}")) or @class="lch" and not(text()="Chapter {{number}}")]/text()');
var chapterDates = xpath(res,
'//*[@class="bxcl" or @class="cl" or @class="chbox" or @class="eph-num" or @id="chapterlist"]/div/a/span[@class="chapterdate" and not(contains(text(),"{{date}}"))]/text()');
var dateUploads =
parseDates(chapterDates, source.dateFormat, source.dateFormatLocale);
List<MChapter>? chaptersList = [];
for (var i = 0; i < chaptersNames.length; i++) {
MChapter chapter = MChapter();
chapter.name = chaptersNames[i];
chapter.url = chapUrls[i];
chapter.dateUpload = dateUploads[i];
chaptersList.add(chapter);
}
manga.chapters = chaptersList;
return manga;
}
@override
Future<List<String>> getPageList(String url) async {
url = getUrlWithoutDomain(url);
final res = (await client.get(Uri.parse('${source.baseUrl}$url'))).body;
List<String> pages = [];
List<String> pagesUrl = [];
bool invalidImgs = false;
pages = xpath(res, '//*[@id="readerarea"]/p/img/@src');
if (pages.isEmpty || pages.length == 1) {
pages = xpath(res, '//*[@id="readerarea"]/img/@src');
}
if (pages.length > 1) {
for (var page in pages) {
if (page.contains("data:image")) {
invalidImgs = true;
}
}
if (invalidImgs) {
pages = xpath(res, '//*[@id="readerarea"]/img/@data-src');
}
}
if (pages.isEmpty || pages.length == 1) {
final images = regExp(res, "\"images\"\\s*:\\s*(\\[.*?])", "", 1, 1);
final pages = json.decode(images) as List;
for (var page in pages) {
pagesUrl.add(page);
}
} else {
return pages;
}
return pagesUrl;
}
MPages mangaRes(String res) {
List<MManga> mangaList = [];
final urls = xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@href');
final names = xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@title');
List<String> images = [];
images =
xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/div[1]/img/@src');
bool invalidImgs = false;
for (var img in images) {
if (img.contains("data:image")) {
invalidImgs = true;
}
}
if (invalidImgs) {
images = xpath(
res, '//*[ @class="imgu" or @class="bsx"]/a/div[1]/img/@data-src');
}
for (var i = 0; i < names.length; i++) {
MManga manga = MManga();
manga.name = names[i];
manga.imageUrl = images[i];
manga.link = urls[i];
mangaList.add(manga);
}
return MPages(mangaList, true);
}
@override
List<dynamic> getFilterList() {
return [
SeparatorFilter(),
TextFilter("AuthorFilter", "Author"),
TextFilter("YearFilter", "Year"),
SelectFilter("StatusFilter", "Status", 0, [
SelectFilterOption("All", ""),
SelectFilterOption("Ongoing", "ongoing"),
SelectFilterOption("Completed", "completed"),
SelectFilterOption("Hiatus", "hiatus"),
SelectFilterOption("Dropped", "dropped"),
]),
SelectFilter("TypeFilter", "Type", 0, [
SelectFilterOption("All", ""),
SelectFilterOption("Manga", "Manga"),
SelectFilterOption("Manhwa", "Manhwa"),
SelectFilterOption("Manhua", "Manhua"),
SelectFilterOption("Comic", "Comic"),
]),
SelectFilter("OrderByFilter", "Sort By", 0, [
SelectFilterOption("Default", ""),
SelectFilterOption("A-Z", "title"),
SelectFilterOption("Z-A", "titlereverse"),
SelectFilterOption("Latest Update", "update"),
SelectFilterOption("Latest Added", "latest"),
SelectFilterOption("Popular", "popular"),
]),
HeaderFilter("Genre exclusion is not available for all sources"),
GroupFilter("GenreListFilter", "Genre", [
TriStateFilter("Press reset to attempt to fetch genres", ""),
]),
];
}
String authorLocalStr(String lang) {
if (lang == "fr") {
return "Auteur";
}
return "Author";
}
String statusLocalStr(String lang) {
if (lang == "fr") {
return "Statut";
} else if (lang == "es") {
return "Estado";
}
return "Status";
}
String ll(String url) {
if (url.contains("?")) {
return "&";
}
return "?";
}
String getMangaUrlDirectory(String sourceName) {
if (sourceName == "Sushi-Scan") {
return "/catalogue";
}
return "/manga";
}
}
MangaReader main(MSource source) {
return MangaReader(source: source);
}

View File

@@ -0,0 +1,130 @@
import '../../../../model/source.dart';
import 'src/beastscans/beastscans.dart';
import 'src/lelmanga/lelmanga.dart';
import 'src/asurascans/asurascans.dart';
import 'src/komiklab/komiklab.dart';
import 'src/azurescans/azurescans.dart';
import 'src/cosmicscans/cosmicscans.dart';
import 'src/cosmicscansid/cosmicscansid.dart';
import 'src/dojingnet/dojingnet.dart';
import 'src/duniakomikid/duniakomikid.dart';
import 'src/geceninlordu/geceninlordu.dart';
import 'src/infernalvoidscans/infernalvoidscans.dart';
import 'src/katakomik/katakomik.dart';
import 'src/kanzenin/kanzenin.dart';
import 'src/komikstation/komikstation.dart';
import 'src/komikmama/komikmama.dart';
import 'src/kumapoi/kumapoi.dart';
import 'src/komikucom/komikucom.dart';
import 'src/magusmanga/magusmanga.dart';
import 'src/mangaindome/mangaindome.dart';
import 'src/mangacim/mangacim.dart';
import 'src/mangatale/mangatale.dart';
import 'src/mangawt/mangawt.dart';
import 'src/manhwax/manhwax.dart';
import 'src/melokomik/melokomik.dart';
import 'src/mihentai/mihentai.dart';
import 'src/origamiorpheans/origamiorpheans.dart';
import 'src/phenixscans/phenixscans.dart';
import 'src/piscans/piscans.dart';
import 'src/raikiscan/raikiscan.dart';
import 'src/ravenscans/ravenscans.dart';
import 'src/shadowmangas/shadowmangas.dart';
import 'src/suryascans/suryascans.dart';
import 'src/sushiscans/sushiscans.dart';
import 'src/sushiscan/sushiscan.dart';
import 'src/tarotscans/tarotscans.dart';
import 'src/tukangkomik/tukangkomik.dart';
import 'src/turktoon/turktoon.dart';
import 'src/uzaymanga/uzaymanga.dart';
import 'src/xcalibrscans/xcalibrscans.dart';
const mangareaderVersion = "0.0.9";
const mangareaderSourceCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/mangareader.dart";
List<Source> get mangareaderSourcesList => _mangareaderSourcesList;
List<Source> _mangareaderSourcesList = [
//Beast Scans (AR)
beastscansSource,
//Lelmanga (FR)
lelmangaSource,
//Asura Scans (EN)
asurascansSource,
//KomikLab Scans (EN)
komiklabSource,
//Azure Scans (EN)
azurescansSource,
//Cosmic Scans (EN)
cosmicscansSource,
//CosmicScans.id (ID)
cosmicscansidSource,
//Dojing.net (ID)
dojingnetSource,
//DuniaKomik.id (ID)
duniakomikidSource,
//Gecenin Lordu (TR)
geceninlorduSource,
//Infernal Void Scans (EN)
infernalvoidscansSource,
//KataKomik (ID)
katakomikSource,
//Kanzenin (ID)
kanzeninSource,
//Komik Station (ID)
komikstationSource,
//KomikMama (ID)
komikmamaSource,
//KumaPoi (ID)
kumapoiSource,
//Komiku.com (ID)
komikucomSource,
//Magus Manga (AR)
magusmangaSource,
//Manga Indo.me (ID)
mangaindomeSource,
//Mangacim (TR)
mangacimSource,
//MangaTale (ID)
mangataleSource,
//MangaWT (TR)
mangawtSource,
//Manhwax (EN)
manhwaxSource,
//MELOKOMIK (ID)
melokomikSource,
//Mihentai (ALL)
mihentaiSource,
//Origami Orpheans (PT-BR)
origamiorpheansSource,
//PhenixScans (FR)
phenixscansSource,
//Pi Scans (ID)
piscansSource,
//Raiki Scan (ES)
raikiscanSource,
//Raven Scans (EN)
ravenscansSource,
//Shadow Mangas (ES)
shadowmangasSource,
//Surya Scans (EN)
suryascansSource,
//Sushi-Scans (FR)
sushiscansSource,
//Sushi-Scan (FR)
sushiscanSource,
//Tarot Scans (TR)
tarotscansSource,
//TukangKomik (ID)
tukangkomikSource,
//TurkToon (TR)
turktoonSource,
//Uzay Manga (TR)
uzaymangaSource,
//xCaliBR Scans (EN)
xcalibrscansSource,
]
.map((e) => e
..sourceCodeUrl = mangareaderSourceCodeUrl
..version = mangareaderVersion)
.toList();

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get asurascansSource => _asurascansSource;
Source _asurascansSource = Source(
name: "Asura Scans",
baseUrl: "https://asuratoon.com/",
lang: "en",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/asurascans/icon.png",
dateFormat: "MMM d, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get azurescansSource => _azurescansSource;
Source _azurescansSource = Source(
name: "Azure Scans",
baseUrl: "https://azuremanga.com",
lang: "en",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/azurescans/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get beastscansSource => _beastscansSource;
Source _beastscansSource = Source(
name: "Beast Scans",
baseUrl: "https://beast-scans.com",
lang: "ar",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/beastscans/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "ar",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get cosmicscansSource => _cosmicscansSource;
Source _cosmicscansSource = Source(
name: "Cosmic Scans",
baseUrl: "https://cosmicscans.com",
lang: "en",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/cosmicscans/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get cosmicscansidSource => _cosmicscansidSource;
Source _cosmicscansidSource = Source(
name: "CosmicScans.id",
baseUrl: "https://cosmicscans.id",
lang: "id",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/cosmicscansid/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -0,0 +1,15 @@
import '../../../../../../model/source.dart';
Source get dojingnetSource => _dojingnetSource;
Source _dojingnetSource = Source(
name: "Dojing.net",
baseUrl: "https://dojing.net",
lang: "id",
isNsfw: true,
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/dojingnet/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get duniakomikidSource => _duniakomikidSource;
Source _duniakomikidSource = Source(
name: "DuniaKomik.id",
baseUrl: "https://duniakomik.id",
lang: "id",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/duniakomikid/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "id",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get geceninlorduSource => _geceninlorduSource;
Source _geceninlorduSource = Source(
name: "Gecenin Lordu",
baseUrl: "https://geceninlordu.com",
lang: "tr",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/geceninlordu/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get infernalvoidscansSource => _infernalvoidscansSource;
Source _infernalvoidscansSource = Source(
name: "Infernal Void Scans",
baseUrl: "https://void-scans.com",
lang: "en",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/infernalvoidscans/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -0,0 +1,15 @@
import '../../../../../../model/source.dart';
Source get kanzeninSource => _kanzeninSource;
Source _kanzeninSource = Source(
name: "Kanzenin",
baseUrl: "https://kanzenin.xyz",
lang: "id",
isNsfw: true,
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/kanzenin/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get katakomikSource => _katakomikSource;
Source _katakomikSource = Source(
name: "KataKomik",
baseUrl: "https://katakomik.online",
lang: "id",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/katakomik/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get komiklabSource => _komiklabSource;
Source _komiklabSource = Source(
id: 932554594,
name: "KomikLab Scans",
baseUrl: "https://komiklab.com",
lang: "en",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/komiklab/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us");

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get komikmamaSource => _komikmamaSource;
Source _komikmamaSource = Source(
name: "KomikMama",
baseUrl: "https://komikmama.co",
lang: "id",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/komikmama/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "id",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get komikstationSource => _komikstationSource;
Source _komikstationSource = Source(
name: "Komik Station",
baseUrl: "https://komikstation.co",
lang: "id",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/komikstation/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "id",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get komikucomSource => _komikucomSource;
Source _komikucomSource = Source(
name: "Komiku.com",
baseUrl: "https://komiku.com",
lang: "id",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/komikucom/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "id",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,15 @@
import '../../../../../../model/source.dart';
Source get kumapoiSource => _kumapoiSource;
Source _kumapoiSource = Source(
name: "KumaPoi",
baseUrl: "https://kumapoi.club",
lang: "id",
isNsfw: true,
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/kumapoi/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "id",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get lelmangaSource => _lelmangaSource;
Source _lelmangaSource = Source(
name: "Lelmanga",
baseUrl: "https://www.lelmanga.com",
lang: "fr",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/lelmanga/icon.png",
dateFormat: "MMMM d, yyyy",
dateFormatLocale: "en",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get magusmangaSource => _magusmangaSource;
Source _magusmangaSource = Source(
name: "Magus Manga",
baseUrl: "https://magusmanga.com",
lang: "ar",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/magusmanga/icon.png",
dateFormat: "MMMMM d, yyyy",
dateFormatLocale: "ar",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get mangacimSource => _mangacimSource;
Source _mangacimSource = Source(
name: "Mangacim",
baseUrl: "https://www.mangacim.com",
lang: "tr",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/mangacim/icon.png",
dateFormat: "MMM d, yyy",
dateFormatLocale: "tr",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get mangaindomeSource => _mangaindomeSource;
Source _mangaindomeSource = Source(
name: "Manga Indo.me",
baseUrl: "https://mangaindo.me",
lang: "id",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/mangaindome/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get mangataleSource => _mangataleSource;
Source _mangataleSource = Source(
name: "MangaTale",
baseUrl: "https://mangatale.co",
lang: "id",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/mangatale/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "id",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get mangawtSource => _mangawtSource;
Source _mangawtSource = Source(
name: "MangaWT",
baseUrl: "https://mangawt.com",
lang: "tr",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/mangawt/icon.png",
dateFormat: "MMM d, yyyy",
dateFormatLocale: "tr",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -0,0 +1,15 @@
import '../../../../../../model/source.dart';
Source get manhwaxSource => _manhwaxSource;
Source _manhwaxSource = Source(
name: "Manhwax",
baseUrl: "https://manhwax.com",
lang: "en",
isNsfw: true,
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/manhwax/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get melokomikSource => _melokomikSource;
Source _melokomikSource = Source(
name: "MELOKOMIK",
baseUrl: "https://melokomik.xyz",
lang: "id",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/melokomik/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "id",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,15 @@
import '../../../../../../model/source.dart';
Source get mihentaiSource => _mihentaiSource;
Source _mihentaiSource = Source(
name: "Mihentai",
baseUrl: "https://mihentai.com",
lang: "all",
isNsfw: true,
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/mihentai/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get origamiorpheansSource => _origamiorpheansSource;
Source _origamiorpheansSource = Source(
name: "Origami Orpheans",
baseUrl: "https://origami-orpheans.com.br",
lang: "pt-br",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/origamiorpheans/icon.png",
dateFormat: "MMMMM dd, yyyy",
dateFormatLocale: "pt-br",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get phenixscansSource => _phenixscansSource;
Source _phenixscansSource = Source(
name: "PhenixScans",
baseUrl: "https://phenixscans.fr",
lang: "fr",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/phenixscans/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "fr",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get piscansSource => _piscansSource;
Source _piscansSource = Source(
name: "Pi Scans",
baseUrl: "https://piscans.in",
lang: "id",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/piscans/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -0,0 +1,13 @@
import '../../../../../../model/source.dart';
Source get raikiscanSource => _raikiscanSource;
Source _raikiscanSource = Source(
name: "Raiki Scan",
baseUrl: "https://raikiscan.com",
lang: "es",
typeSource: "mangareader",
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/raikiscan/icon.png",
dateFormat:"MMMM dd, yyyy",
dateFormatLocale:"en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get ravenscansSource => _ravenscansSource;
Source _ravenscansSource = Source(
name: "Raven Scans",
baseUrl: "https://ravenscans.com",
lang: "en",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/ravenscans/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get shadowmangasSource => _shadowmangasSource;
Source _shadowmangasSource = Source(
name: "Shadow Mangas",
baseUrl: "https://shadowmangas.com",
lang: "es",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/shadowmangas/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "es",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get suryascansSource => _suryascansSource;
Source _suryascansSource = Source(
name: "Surya Scans",
baseUrl: "https://suryascans.com",
lang: "en",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/suryascans/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get sushiscanSource => _sushiscanSource;
Source _sushiscanSource = Source(
name: "Sushi-Scan",
baseUrl: "https://sushiscan.net",
lang: "fr",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/sushiscan/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "fr",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get sushiscansSource => _sushiscansSource;
Source _sushiscansSource = Source(
name: "Sushi-Scans",
baseUrl: "https://sushiscan.fr",
lang: "fr",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/sushiscans/icon.png",
dateFormat: "MMMM d, yyyy",
dateFormatLocale: "fr",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@@ -0,0 +1,13 @@
import '../../../../../../model/source.dart';
Source get tarotscansSource => _tarotscansSource;
Source _tarotscansSource = Source(
name: "Tarot Scans",
baseUrl: "https://www.tarotscans.com",
lang: "tr",
typeSource: "mangareader",
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/tarotscans/icon.png",
dateFormat:"MMMM dd, yyyy",
dateFormatLocale:"tr",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -0,0 +1,13 @@
import '../../../../../../model/source.dart';
Source get tukangkomikSource => _tukangkomikSource;
Source _tukangkomikSource = Source(
name: "TukangKomik",
baseUrl: "https://tukangkomik.id",
lang: "id",
typeSource: "mangareader",
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/tukangkomik/icon.png",
dateFormat:"MMM d, yyyy",
dateFormatLocale:"tr",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@@ -0,0 +1,13 @@
import '../../../../../../model/source.dart';
Source get turktoonSource => _turktoonSource;
Source _turktoonSource = Source(
name: "TurkToon",
baseUrl: "https://turktoon.com",
lang: "tr",
typeSource: "mangareader",
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/turktoon/icon.png",
dateFormat:"MMMM dd, yyyy",
dateFormatLocale:"en_us",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1,13 @@
import '../../../../../../model/source.dart';
Source get uzaymangaSource => _uzaymangaSource;
Source _uzaymangaSource = Source(
name: "Uzay Manga",
baseUrl: "https://uzaymanga.com",
lang: "tr",
typeSource: "mangareader",
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/uzaymanga/icon.png",
dateFormat:"MMM d, yyyy",
dateFormatLocale:"tr",
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@@ -0,0 +1,14 @@
import '../../../../../../model/source.dart';
Source get xcalibrscansSource => _xcalibrscansSource;
Source _xcalibrscansSource = Source(
name: "xCaliBR Scans",
baseUrl: "https://xcalibrscans.com",
lang: "en",
typeSource: "mangareader",
iconUrl:
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/manga/multisrc/mangareader/src/xcalibrscans/icon.png",
dateFormat: "MMMM dd, yyyy",
dateFormatLocale: "en_us",
);