diff --git a/anime/source_generator.dart b/anime/source_generator.dart index 4db79fd4..6bcf87ac 100644 --- a/anime/source_generator.dart +++ b/anime/source_generator.dart @@ -4,7 +4,7 @@ import 'dart:io'; import '../model/source.dart'; import 'src/en/aniwatch/sources.dart'; import 'src/en/gogoanime/source.dart'; -import 'src/en/wcostream/source.dart'; +// import 'src/en/wcostream/source.dart'; import 'src/fr/animesultra/source.dart'; import 'src/fr/franime/source.dart'; import 'src/fr/otakufr/source.dart'; @@ -16,7 +16,7 @@ void main() { franimeSource, universanimeSource, otakufr, - wcostreamSource, + // wcostreamSource, animesultraSource, ...aniwatchSourcesList ]; diff --git a/anime/src/en/aniwatch/aniwatch-v0.0.15.dart b/anime/src/en/aniwatch/aniwatch-v0.0.15.dart deleted file mode 100644 index 0dab85af..00000000 --- a/anime/src/en/aniwatch/aniwatch-v0.0.15.dart +++ /dev/null @@ -1,228 +0,0 @@ -import 'dart:convert'; -import 'package:bridge_lib/bridge_lib.dart'; - -getPopularAnime(MangaModel anime) async { - final data = { - "url": "${anime.baseUrl}/most-popular?page=${anime.page}", - "headers": null, - "sourceId": anime.sourceId - }; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - - return animeElementM(res, anime); -} - -getLatestUpdatesAnime(MangaModel anime) async { - final data = { - "url": "${anime.baseUrl}/top-airing?page=${anime.page}", - "headers": null, - "sourceId": anime.sourceId - }; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - return animeElementM(res, anime); -} - -getAnimeDetail(MangaModel anime) async { - final statusList = [ - { - "Currently Airing": 0, - "Finished Airing": 1, - } - ]; - final url = "${anime.baseUrl}${anime.link}"; - final data = {"url": url, "headers": null}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - - final status = MBridge.xpath( - res, - '//*[@class="anisc-info"]/div[contains(text(),"Status:")]/span[2]/text()', - ''); - anime.status = MBridge.parseStatus(status, statusList); - anime.author = MBridge.xpath( - res, - '//*[@class="anisc-info"]/div[contains(text(),"Studios:")]/span/text()', - '') - .replaceAll("Studios:", ""); - final aired = MBridge.xpath( - res, - '//*[@class="anisc-info"]/div[contains(text(),"Aired:")]/span/text()', - ' '); - final japanese = MBridge.xpath( - res, - '//*[@class="anisc-info"]/div[contains(text(),"Japanese:")]/span/text()', - ' '); - final synonyms = MBridge.xpath( - res, - '//*[@class="anisc-info"]/div[contains(text(),"Synonyms:")]/span/text()', - ' '); - final premiered = MBridge.xpath( - res, - '//*[@class="anisc-info"]/div[contains(text(),"Premiered:")]/span/text()', - ' '); - final overview = MBridge.xpath( - res, - '//*[@class="anisc-info"]/div[contains(text(),"Overview:")]/text()', - ' ') - .replaceAll("Overview:", ""); - String description = "$overview\n\n$japanese\n$synonyms\n$aired\n$premiered"; - anime.description = description; - final genre = MBridge.xpath( - res, - '//*[@class="anisc-info"]/div[contains(text(),"Genres:")]/a/text()', - '_..') - .split("_.."); - - anime.genre = genre; - - final id = MBridge.subString(anime.link, '-', 1); - final urlEp = - "${anime.baseUrl}/ajax${ajaxRoute('${anime.baseUrl}')}/episode/list/$id"; - - final dataEp = { - "url": urlEp, - "headers": {"referer": url} - }; - final resEp = await MBridge.http(json.encode(dataEp), 0); - final html = MBridge.getMapValue(resEp, "html", 0); - final epUrls = - MBridge.querySelectorAll(html, "a.ep-item", 3, "href", 0, 0, '._') - .split("._"); - anime.urls = MBridge.listParse(epUrls, 5); - - List numbers = - MBridge.querySelectorAll(html, "a.ep-item", 3, "data-number", 0, 0, '._') - .split("._"); - List titles = - MBridge.querySelectorAll(html, "a.ep-item", 3, "title", 0, 0, '._') - .split("._"); - - List episodes = []; - - for (var i = 0; i < titles.length; i++) { - final number = MBridge.listParse(numbers, 0)[i]; - final title = MBridge.listParse(titles, 0)[i]; - episodes.add("Episode ${number}: $title"); - } - - anime.names = MBridge.listParse(episodes, 5); - anime.chaptersDateUploads = []; - return anime; -} - -searchAnime(MangaModel anime) async { - final data = { - "url": - "${anime.baseUrl}/search?keyword=${anime.query}&page=${anime.page}", - "headers": null, - "sourceId": anime.sourceId - }; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - return animeElementM(res, anime); -} - -getVideoList(MangaModel anime) async { - final id = MBridge.subString(anime.link, '?ep=', 1); - final datas = { - "url": - "${anime.baseUrl}/ajax${ajaxRoute('${anime.baseUrl}')}/episode/servers?episodeId=$id", - "headers": {"referer": "${anime.baseUrl}/${anime.link}"}, - "sourceId": anime.sourceId - }; - - final res = await MBridge.http(json.encode(datas), 0); - - if (res.isEmpty) { - return []; - } - final html = MBridge.getMapValue(res, "html", 0); - final names = - MBridge.querySelectorAll(html, "div.server-item", 0, "", 0, 0, '._') - .split("._"); - - final ids = MBridge.querySelectorAll( - html, "div.server-item", 3, "data-id", 0, 0, '._') - .split("._"); - final subDubs = MBridge.querySelectorAll( - html, "div.server-item", 3, "data-type", 0, 0, '._') - .split("._"); - - List videos = []; - - for (var i = 0; i < names.length; i++) { - final name = MBridge.listParse(names, 0)[i].toString(); - final id = MBridge.listParse(ids, 0)[i].toString(); - final subDub = MBridge.listParse(subDubs, 0)[i].toString(); - final datasE = { - "url": - "${anime.baseUrl}/ajax${ajaxRoute('${anime.baseUrl}')}/episode/sources?id=$id", - "headers": {"referer": "${anime.baseUrl}/${anime.link}"}, - "sourceId": anime.sourceId - }; - - final resE = await MBridge.http(json.encode(datasE), 0); - String url = - MBridge.subString(MBridge.subString(resE, "\"link\":\"", 2), "\"", 0); - print(url); - List a = []; - if (name.contains("Vidstreaming")) { - a = await MBridge.rapidCloudExtractor(url, "Vidstreaming - $subDub"); - } else if (name.contains("Vidcloud")) { - a = await MBridge.rapidCloudExtractor(url, "Vidcloud - $subDub"); - } else if (name.contains("StreamTape")) { - a = await MBridge.streamTapeExtractor(url,"StreamTape - $subDub"); - } - for (var vi in a) { - videos.add(vi); - } - } - - return videos; -} - -MangaModel animeElementM(String res, MangaModel anime) async { - if (res.isEmpty) { - return anime; - } - anime.urls = MBridge.xpath(res, - '//*[@class^="flw-item"]/div[@class="film-detail"]/h3/a/@href', '._') - .split('._'); - - anime.names = MBridge.xpath( - res, - '//*[@class^="flw-item"]/div[@class="film-detail"]/h3/a/@data-jname', - '._') - .split('._'); - - anime.images = MBridge.xpath( - res, - '//*[@class^="flw-item"]/div[@class="film-poster"]/img/@data-src', - '._') - .split('._'); - final nextPage = - MBridge.xpath(res, '//li[@class="page-item"]/a[@title="Next"]/@href', ""); - if (nextPage.isEmpty) { - anime.hasNextPage = false; - } else { - anime.hasNextPage = true; - } - return anime; -} - -String ajaxRoute(String baseUrl) { - if (baseUrl == "https://kaido.to") { - return ""; - } - return "/v2"; -} diff --git a/anime/src/en/aniwatch/aniwatch-v0.0.2.dart b/anime/src/en/aniwatch/aniwatch-v0.0.2.dart new file mode 100644 index 00000000..bae0d651 --- /dev/null +++ b/anime/src/en/aniwatch/aniwatch-v0.0.2.dart @@ -0,0 +1,214 @@ +import 'dart:convert'; +import 'package:bridge_lib/bridge_lib.dart'; + +getPopularAnime(MangaModel anime) async { + final data = {"url": "${anime.baseUrl}/most-popular?page=${anime.page}"}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + + return animeElementM(res, anime); +} + +getLatestUpdatesAnime(MangaModel anime) async { + final data = {"url": "${anime.baseUrl}/top-airing?page=${anime.page}"}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + return animeElementM(res, anime); +} + +getAnimeDetail(MangaModel anime) async { + final statusList = [ + { + "Currently Airing": 0, + "Finished Airing": 1, + } + ]; + final url = "${anime.baseUrl}${anime.link}"; + final data = {"url": url, "headers": null}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + + final status = MBridge.xpath(res, + '//*[@class="anisc-info"]/div[contains(text(),"Status:")]/span[2]/text()') + .first; + anime.status = MBridge.parseStatus(status, statusList); + anime.author = MBridge.xpath(res, + '//*[@class="anisc-info"]/div[contains(text(),"Studios:")]/span/text()') + .first + .replaceAll("Studios:", ""); + final aired = MBridge.xpath(res, + '//*[@class="anisc-info"]/div[contains(text(),"Aired:")]/span/text()') + .first; + final japanese = MBridge.xpath(res, + '//*[@class="anisc-info"]/div[contains(text(),"Japanese:")]/span/text()') + .first; + final synonyms = MBridge.xpath(res, + '//*[@class="anisc-info"]/div[contains(text(),"Synonyms:")]/span/text()') + .first; + final premiered = MBridge.xpath(res, + '//*[@class="anisc-info"]/div[contains(text(),"Premiered:")]/span/text()') + .first; + final overview = MBridge.xpath(res, + '//*[@class="anisc-info"]/div[contains(text(),"Overview:")]/text()') + .first + .replaceAll("Overview:", ""); + String description = "$overview\n\n$japanese\n$synonyms\n$aired\n$premiered"; + anime.description = description; + final genre = MBridge.xpath( + res, '//*[@class="anisc-info"]/div[contains(text(),"Genres:")]/a/text()'); + + anime.genre = genre; + + final id = MBridge.substringAfterLast(anime.link, '-'); + final urlEp = + "${anime.baseUrl}/ajax${ajaxRoute('${anime.baseUrl}')}/episode/list/$id"; + + final dataEp = { + "url": urlEp, + "headers": {"referer": url} + }; + final resEp = await MBridge.http('GET', json.encode(dataEp)); + + final html = json.decode(resEp)["html"]; + + final epUrls = MBridge.querySelectorAll(html, + selector: "a.ep-item", typeElement: 3, attributes: "href", typeRegExp: 0); + + anime.urls = epUrls.reversed.toList(); + + final numbers = MBridge.querySelectorAll(html, + selector: "a.ep-item", + typeElement: 3, + attributes: "data-number", + typeRegExp: 0); + + final titles = MBridge.querySelectorAll(html, + selector: "a.ep-item", + typeElement: 3, + attributes: "title", + typeRegExp: 0); + + List episodes = []; + + for (var i = 0; i < titles.length; i++) { + final number = numbers[i]; + final title = titles[i]; + episodes.add("Episode $number: $title"); + } + + anime.names = episodes.reversed.toList(); + anime.chaptersDateUploads = []; + return anime; +} + +searchAnime(MangaModel anime) async { + final data = { + "url": "${anime.baseUrl}/search?keyword=${anime.query}&page=${anime.page}" + }; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + return animeElementM(res, anime); +} + +getVideoList(MangaModel anime) async { + final id = MBridge.substringAfterLast(anime.link, '?ep='); + final datas = { + "url": + "${anime.baseUrl}/ajax${ajaxRoute('${anime.baseUrl}')}/episode/servers?episodeId=$id", + "headers": {"referer": "${anime.baseUrl}/${anime.link}"}, + "sourceId": anime.sourceId + }; + + final res = await MBridge.http('GET', json.encode(datas)); + + if (res.isEmpty) { + return []; + } + final html = json.decode(res)["html"]; + + final names = MBridge.querySelectorAll(html, + selector: "div.server-item", + typeElement: 0, + attributes: "", + typeRegExp: 0); + + final ids = MBridge.querySelectorAll(html, + selector: "div.server-item", + typeElement: 3, + attributes: "data-id", + typeRegExp: 0); + + final subDubs = MBridge.querySelectorAll(html, + selector: "div.server-item", + typeElement: 3, + attributes: "data-type", + typeRegExp: 0); + + List videos = []; + + for (var i = 0; i < names.length; i++) { + final name = names[i]; + final id = ids[i]; + final subDub = subDubs[i]; + final datasE = { + "url": + "${anime.baseUrl}/ajax${ajaxRoute('${anime.baseUrl}')}/episode/sources?id=$id", + "headers": {"referer": "${anime.baseUrl}/${anime.link}"} + }; + + final resE = await MBridge.http('GET', json.encode(datasE)); + String url = MBridge.substringBefore( + MBridge.substringAfter(resE, "\"link\":\""), "\""); + print(url); + List a = []; + if (name.contains("Vidstreaming")) { + a = await MBridge.rapidCloudExtractor(url, "Vidstreaming - $subDub"); + } else if (name.contains("Vidcloud")) { + a = await MBridge.rapidCloudExtractor(url, "Vidcloud - $subDub"); + } else if (name.contains("StreamTape")) { + a = await MBridge.streamTapeExtractor(url, "StreamTape - $subDub"); + } + for (var vi in a) { + videos.add(vi); + } + } + + return videos; +} + +MangaModel animeElementM(String res, MangaModel anime) async { + if (res.isEmpty) { + return anime; + } + anime.urls = MBridge.xpath( + res, '//*[@class^="flw-item"]/div[@class="film-detail"]/h3/a/@href'); + + anime.names = MBridge.xpath(res, + '//*[@class^="flw-item"]/div[@class="film-detail"]/h3/a/@data-jname'); + + anime.images = MBridge.xpath( + res, '//*[@class^="flw-item"]/div[@class="film-poster"]/img/@data-src'); + final nextPage = + MBridge.xpath(res, '//li[@class="page-item"]/a[@title="Next"]/@href', ""); + if (nextPage.isEmpty) { + anime.hasNextPage = false; + } else { + anime.hasNextPage = true; + } + return anime; +} + +String ajaxRoute(String baseUrl) { + if (baseUrl == "https://kaido.to") { + return ""; + } + return "/v2"; +} diff --git a/anime/src/en/gogoanime/gogoanime-v0.0.12.dart b/anime/src/en/gogoanime/gogoanime-v0.0.12.dart deleted file mode 100644 index 949c47ce..00000000 --- a/anime/src/en/gogoanime/gogoanime-v0.0.12.dart +++ /dev/null @@ -1,171 +0,0 @@ -import 'dart:convert'; -import 'package:bridge_lib/bridge_lib.dart'; - -getPopularAnime(MangaModel anime) async { - final data = { - "url": "${anime.baseUrl}/popular.html?page=${anime.page}", - "headers": null, - "sourceId": anime.sourceId - }; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - anime.urls = - MBridge.xpath(res, '//*[@class="img"]/a/@href', '._').split('._'); - - anime.names = - MBridge.xpath(res, '//*[@class="img"]/a/@title', '._').split('._'); - - anime.images = - MBridge.xpath(res, '//*[@class="img"]/a/img/@src', '._').split('._'); - - return anime; -} - -getLatestUpdatesAnime(MangaModel anime) async { - final url = - "https://ajax.gogo-load.com/ajax/page-recent-release-ongoing.html?page=${anime.page}&type=1"; - final data = {"url": url, "headers": null, "sourceId": anime.sourceId}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - anime.urls = MBridge.xpath( - res, '//*[@class="added_series_body popular"]/ul/li/a[1]/@href', '._') - .split('._'); - - anime.names = MBridge.xpath(res, - '//*[//*[@class="added_series_body popular"]/ul/li/a[1]/@title', '._') - .split('._'); - List images = []; - List imagess = MBridge.xpath( - res, - '//*[//*[@class="added_series_body popular"]/ul/li/a/div[@class="thumbnail-popular"]/@style', - '._') - .split('._'); - for (var url in MBridge.listParse(imagess, 0)) { - images.add(url.replaceAll("background: url('", "").replaceAll("');", "")); - } - - anime.images = images; - - return anime; -} - -getAnimeDetail(MangaModel anime) async { - final statusList = [ - { - "Ongoing": 0, - "Completed": 1, - } - ]; - final url = "${anime.baseUrl}${anime.link}"; - final data = {"url": url, "headers": null}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - - final status = MBridge.xpath(res, - '//*[@class="anime_info_body_bg"]/p[@class="type"][5]/text()', '') - .replaceAll("Status: ", ""); - - anime.description = MBridge.xpath(res, - '//*[@class="anime_info_body_bg"]/p[@class="type"][2]/text()', '') - .replaceAll("Plot Summary: ", ""); - - anime.status = MBridge.parseStatus(status, statusList); - anime.genre = MBridge.listParse( - MBridge.xpath(res, - '//*[@class="anime_info_body_bg"]/p[@class="type"][3]/text()', '') - .replaceAll("Genre: ", "") - .split(","), - 4); - - final id = MBridge.xpath(res, '//*[@id="movie_id"]/@value', ''); - final urlEp = - "https://ajax.gogo-load.com/ajax/load-list-episode?ep_start=0&ep_end=4000&id=$id"; - final dataEp = {"url": urlEp, "headers": null}; - final resEp = await MBridge.http(json.encode(dataEp), 0); - anime.urls = - MBridge.xpath(resEp, '//*[@id="episode_related"]/li/a/@href', '._') - .split("._"); - List names = MBridge.xpath(resEp, - '//*[@id="episode_related"]/li/a/div[@class="name"]/text()', '._') - .split("._"); - - List episodes = []; - for (var a in MBridge.listParse(names, 0)) { - episodes.add("Episode ${MBridge.subString(a, ' ', 1)}"); - } - - anime.names = episodes; - anime.chaptersDateUploads = []; - return anime; -} - -getVideoList(MangaModel anime) async { - final datas = { - "url": "${anime.baseUrl}${anime.link}", - "headers": null, - "sourceId": anime.sourceId - }; - - final res = await MBridge.http(json.encode(datas), 0); - - if (res.isEmpty) { - return []; - } - - final serverUrls = MBridge.xpath( - res, '//*[@class="anime_muti_link"]/ul/li/a/@data-video', ".-") - .split(".-"); - List classNames = - MBridge.xpath(res, '//*[@class="anime_muti_link"]/ul/li/@class', ".-") - .split(".-"); - print(serverUrls); - List videos = []; - for (var i = 0; i < classNames.length; i++) { - final name = MBridge.listParse(classNames, 0)[i].toString(); - final url = MBridge.listParse(serverUrls, 0)[i].toString(); - print(url); - List a = []; - if (name.contains("anime")) { - a = await MBridge.gogoCdnExtractor(url); - } else if (name.contains("vidcdn")) { - a = await MBridge.gogoCdnExtractor(url); - } else if (name.contains("doodstream")) { - a = await MBridge.doodExtractor(url); - } else if (name.contains("mp4upload")) { - a = await MBridge.mp4UploadExtractor(url, null, "", ""); - } else if (name.contains("streamsb")) { - // print("streamsb"); - // print(url); - } - for (var vi in a) { - videos.add(vi); - } - } - - return videos; -} - -searchAnime(MangaModel anime) async { - final url = - "${anime.baseUrl}/search.html?keyword=${anime.query}&page=${anime.page}"; - final data = {"url": url, "headers": null, "sourceId": anime.sourceId}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - anime.urls = - MBridge.xpath(res, '//*[@class="img"]/a/@href', '._').split('._'); - - anime.names = - MBridge.xpath(res, '//*[@class="img"]/a/@title', '._').split('._'); - - anime.images = - MBridge.xpath(res, '//*[@class="img"]/a/img/@src', '._').split('._'); - return anime; -} diff --git a/anime/src/en/gogoanime/gogoanime-v0.0.2.dart b/anime/src/en/gogoanime/gogoanime-v0.0.2.dart new file mode 100644 index 00000000..3774c106 --- /dev/null +++ b/anime/src/en/gogoanime/gogoanime-v0.0.2.dart @@ -0,0 +1,148 @@ +import 'dart:convert'; +import 'package:bridge_lib/bridge_lib.dart'; + +getPopularAnime(MangaModel anime) async { + final data = {"url": "${anime.baseUrl}/popular.html?page=${anime.page}"}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + anime.urls = MBridge.xpath(res, '//*[@class="img"]/a/@href'); + + anime.names = MBridge.xpath(res, '//*[@class="img"]/a/@title'); + + anime.images = MBridge.xpath(res, '//*[@class="img"]/a/img/@src'); + + return anime; +} + +getLatestUpdatesAnime(MangaModel anime) async { + final url = + "https://ajax.gogo-load.com/ajax/page-recent-release-ongoing.html?page=${anime.page}&type=1"; + final data = {"url": url}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + anime.urls = MBridge.xpath( + res, '//*[@class="added_series_body popular"]/ul/li/a[1]/@href'); + + anime.names = MBridge.xpath( + res, '//*[//*[@class="added_series_body popular"]/ul/li/a[1]/@title'); + List images = []; + List imagess = MBridge.xpath(res, + '//*[//*[@class="added_series_body popular"]/ul/li/a/div[@class="thumbnail-popular"]/@style'); + for (var url in imagess) { + images.add(url.replaceAll("background: url('", "").replaceAll("');", "")); + } + + anime.images = images; + + return anime; +} + +getAnimeDetail(MangaModel anime) async { + final statusList = [ + { + "Ongoing": 0, + "Completed": 1, + } + ]; + + final data = {"url": "${anime.baseUrl}${anime.link}"}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + + final status = MBridge.xpath( + res, '//*[@class="anime_info_body_bg"]/p[@class="type"][5]/text()') + .first + .replaceAll("Status: ", ""); + + anime.description = MBridge.xpath( + res, '//*[@class="anime_info_body_bg"]/p[@class="type"][2]/text()') + .first + .replaceAll("Plot Summary: ", ""); + + anime.status = MBridge.parseStatus(status, statusList); + anime.genre = MBridge.xpath( + res, '//*[@class="anime_info_body_bg"]/p[@class="type"][3]/text()') + .first + .replaceAll("Genre: ", "") + .split(","); + + final id = MBridge.xpath(res, '//*[@id="movie_id"]/@value').first; + final urlEp = + "https://ajax.gogo-load.com/ajax/load-list-episode?ep_start=0&ep_end=4000&id=$id"; + final dataEp = {"url": urlEp}; + final resEp = await MBridge.http('GET', json.encode(dataEp)); + anime.urls = MBridge.xpath(resEp, '//*[@id="episode_related"]/li/a/@href'); + final names = MBridge.xpath( + resEp, '//*[@id="episode_related"]/li/a/div[@class="name"]/text()'); + + List episodes = []; + for (var a in names) { + episodes.add("Episode ${MBridge.substringAfterLast(a, ' ')}"); + } + + anime.names = episodes; + anime.chaptersDateUploads = []; + return anime; +} + +getVideoList(MangaModel anime) async { + final datas = {"url": "${anime.baseUrl}${anime.link}"}; + + final res = await MBridge.http('GET', json.encode(datas)); + + if (res.isEmpty) { + return []; + } + + final serverUrls = + MBridge.xpath(res, '//*[@class="anime_muti_link"]/ul/li/a/@data-video'); + final classNames = + MBridge.xpath(res, '//*[@class="anime_muti_link"]/ul/li/@class'); + print(serverUrls); + List videos = []; + for (var i = 0; i < classNames.length; i++) { + final name = classNames[i]; + final url = serverUrls[i]; + print(url); + List a = []; + if (name.contains("anime")) { + a = await MBridge.gogoCdnExtractor(url); + } else if (name.contains("vidcdn")) { + a = await MBridge.gogoCdnExtractor(url); + } else if (name.contains("doodstream")) { + a = await MBridge.doodExtractor(url); + } else if (name.contains("mp4upload")) { + a = await MBridge.mp4UploadExtractor(url, null, "", ""); + } else if (name.contains("streamsb")) { + // print("streamsb"); + // print(url); + } + for (var vi in a) { + videos.add(vi); + } + } + + return videos; +} + +searchAnime(MangaModel anime) async { + final url = + "${anime.baseUrl}/search.html?keyword=${anime.query}&page=${anime.page}"; + final data = {"url": url}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + anime.urls = MBridge.xpath(res, '//*[@class="img"]/a/@href'); + + anime.names = MBridge.xpath(res, '//*[@class="img"]/a/@title'); + + anime.images = MBridge.xpath(res, '//*[@class="img"]/a/img/@src'); + return anime; +} diff --git a/anime/src/fr/animesultra/animesultra-v0.0.1.dart b/anime/src/fr/animesultra/animesultra-v0.0.1.dart deleted file mode 100644 index 9964f93f..00000000 --- a/anime/src/fr/animesultra/animesultra-v0.0.1.dart +++ /dev/null @@ -1,175 +0,0 @@ -import 'dart:convert'; -import 'package:bridge_lib/bridge_lib.dart'; - -getPopularAnime(MangaModel anime) async { - final data = {"url": "${anime.baseUrl}/", "headers": null}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - anime.urls = MBridge.xpath( - res, - '//*[contains(@class,"swiper-slide item-qtip")]/div[@class="item"]/a/@href', - '._') - .split('._'); - - anime.names = MBridge.xpath( - res, - '//*[contains(@class,"swiper-slide item-qtip")]/div[@class="item"]/a/img/@title', - '._') - .split('._'); - - anime.images = MBridge.xpath( - res, - '//*[contains(@class,"swiper-slide item-qtip")]/div[@class="item"]/a/img/@data-src', - '._') - .split('._'); - anime.hasNextPage = false; - return anime; -} - -getLatestUpdatesAnime(MangaModel anime) async { - final data = { - "url": "${anime.baseUrl}/", - "headers": null, - "sourceId": anime.sourceId - }; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - - anime.urls = MBridge.xpath( - res, - '//*[@class="block_area block_area_home"]/div[@class="tab-content"]/div[contains(@class,"block_area-content block_area-list")]/div[@class="film_list-wrap"]/div[@class="flw-item"]/div[@class="film-poster"]/a/@href', - '._') - .split('._'); - - anime.names = MBridge.xpath( - res, - '//*[@class="block_area block_area_home"]/div[@class="tab-content"]/div[contains(@class,"block_area-content block_area-list")]/div[@class="film_list-wrap"]/div[@class="flw-item"]/div[@class="film-poster"]/a/@title', - '._') - .split('._'); - - anime.images = MBridge.xpath( - res, - '//*[@class="block_area block_area_home"]/div[@class="tab-content"]/div[contains(@class,"block_area-content block_area-list")]/div[@class="film_list-wrap"]/div[@class="flw-item"]/div[@class="film-poster"]/img/@data-src', - '._') - .split('._'); - anime.hasNextPage = false; - return anime; -} - -searchAnime(MangaModel anime) async { - final url = - "${anime.baseUrl}/?story=${anime.query}&do=search&subaction=search"; - final data = {"url": url, "headers": null}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - anime.urls = - MBridge.xpath(res, '//*[@class="film-poster"]/a/@href', '._').split('._'); - - anime.names = MBridge.xpath(res, '//*[@class="film-poster"]/a/@title', '._') - .split('._'); - anime.images = - MBridge.xpath(res, '//*[@class="film-poster"]/img/@data-src', '._') - .split('._'); - anime.hasNextPage = false; - return anime; -} - -getAnimeDetail(MangaModel anime) async { - final statusList = [ - { - "En cours": 0, - "Terminé": 1, - } - ]; - final url = anime.link; - final data = {"url": url, "headers": null}; - String res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - - anime.description = - MBridge.xpath(res, '//*[@class="film-description m-hide"]/text()', ''); - - final status = MBridge.xpath( - res, - '//*[@class="item item-title" and contains(text(),"Status:")]/span[2]/text()', - ''); - - anime.status = MBridge.parseStatus(status, statusList); - - anime.genre = MBridge.xpath( - res, - '//*[@class="item item-list" and contains(text(),"Genres:")]/a/text()', - '._') - .split('._'); - anime.author = MBridge.xpath( - res, - '//*[@class="item item-title" and contains(text(),"Studio:")]/span[2]/text()', - ''); - final urlEp = anime.link.replaceAll('.html', '/episode-1.html'); - final resEpWebview = - await MBridge.getHtmlViaWebview(urlEp, '//*[@class="ss-list"]/a/@href'); - anime.urls = MBridge.listParse( - MBridge.xpath(resEpWebview, '//*[@class="ss-list"]/a/@href', '._') - .split("._"), - 5); - - anime.names = MBridge.listParse( - MBridge.xpath( - resEpWebview, - '//*[@class="ss-list"]/a/div[@class="ssli-detail"]/div/text()', - '._') - .split("._"), - 5); - anime.chaptersDateUploads = []; - return anime; -} - -getVideoList(MangaModel anime) async { - final resWebview = await MBridge.getHtmlViaWebview( - anime.link, '//*[@class="ps__-list"]/div/@data-server-id'); - - final serverIds = MBridge.xpath( - resWebview, '//*[@class="ps__-list"]/div/@data-server-id', ".-") - .split(".-"); - final serverNames = - MBridge.xpath(resWebview, '//*[@class="ps__-list"]/div/a/text()', ".-") - .split(".-"); - List serverUrls = []; - for (var id in MBridge.listParse(serverIds, 0)) { - final serversUrls = - MBridge.xpath(resWebview, '//*[@id="content_player_${id}"]/text()', ""); - serverUrls.add(serversUrls); - } - - List videos = []; - for (var i = 0; i < serverNames.length; i++) { - final name = MBridge.listParse(serverNames, 0)[i].toString(); - final url = MBridge.listParse(serverUrls, 0)[i].toString(); - - List a = []; - if (name.contains("Sendvid")) { - a = await MBridge.sendVidExtractor( - url.replaceAll("https:////", "https://"), - json.encode({"Referer": "${anime.baseUrl}/"}), - ""); - } else if (name.contains("Sibnet")) { - a = await MBridge.sibnetExtractor( - "https://video.sibnet.ru/shell.php?videoid=$url"); - } else if (name.contains("Mytv")) { - a = await MBridge.myTvExtractor("https://www.myvi.tv/embed/$url"); - } - for (var vi in a) { - videos.add(vi); - } - } - - return videos; -} diff --git a/anime/src/fr/animesultra/animesultra-v0.0.2.dart b/anime/src/fr/animesultra/animesultra-v0.0.2.dart new file mode 100644 index 00000000..43698b44 --- /dev/null +++ b/anime/src/fr/animesultra/animesultra-v0.0.2.dart @@ -0,0 +1,139 @@ +import 'dart:convert'; +import 'package:bridge_lib/bridge_lib.dart'; + +getPopularAnime(MangaModel anime) async { + final data = {"url": "${anime.baseUrl}/"}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + anime.urls = MBridge.xpath(res, + '//*[contains(@class,"swiper-slide item-qtip")]/div[@class="item"]/a/@href'); + + anime.names = MBridge.xpath(res, + '//*[contains(@class,"swiper-slide item-qtip")]/div[@class="item"]/a/img/@title'); + + anime.images = MBridge.xpath(res, + '//*[contains(@class,"swiper-slide item-qtip")]/div[@class="item"]/a/img/@data-src'); + anime.hasNextPage = false; + return anime; +} + +getLatestUpdatesAnime(MangaModel anime) async { + final data = {"url": "${anime.baseUrl}/"}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + + anime.urls = MBridge.xpath(res, + '//*[@class="block_area block_area_home"]/div[@class="tab-content"]/div[contains(@class,"block_area-content block_area-list")]/div[@class="film_list-wrap"]/div[@class="flw-item"]/div[@class="film-poster"]/a/@href'); + + anime.names = MBridge.xpath(res, + '//*[@class="block_area block_area_home"]/div[@class="tab-content"]/div[contains(@class,"block_area-content block_area-list")]/div[@class="film_list-wrap"]/div[@class="flw-item"]/div[@class="film-poster"]/a/@title'); + + anime.images = MBridge.xpath(res, + '//*[@class="block_area block_area_home"]/div[@class="tab-content"]/div[contains(@class,"block_area-content block_area-list")]/div[@class="film_list-wrap"]/div[@class="flw-item"]/div[@class="film-poster"]/img/@data-src'); + anime.hasNextPage = false; + return anime; +} + +searchAnime(MangaModel anime) async { + final url = + "${anime.baseUrl}/?story=${anime.query}&do=search&subaction=search"; + final data = {"url": url}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + anime.urls = MBridge.xpath(res, '//*[@class="film-poster"]/a/@href'); + + anime.names = MBridge.xpath(res, '//*[@class="film-poster"]/a/@title'); + anime.images = MBridge.xpath(res, '//*[@class="film-poster"]/img/@data-src'); + anime.hasNextPage = false; + return anime; +} + +getAnimeDetail(MangaModel anime) async { + final statusList = [ + { + "En cours": 0, + "Terminé": 1, + } + ]; + final url = anime.link; + final data = {"url": url}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + + anime.description = + MBridge.xpath(res, '//*[@class="film-description m-hide"]/text()').first; + + final status = MBridge.xpath(res, + '//*[@class="item item-title" and contains(text(),"Status:")]/span[2]/text()') + .first; + + anime.status = MBridge.parseStatus(status, statusList); + + anime.genre = MBridge.xpath(res, + '//*[@class="item item-list" and contains(text(),"Genres:")]/a/text()'); + anime.author = MBridge.xpath(res, + '//*[@class="item item-title" and contains(text(),"Studio:")]/span[2]/text()') + .first; + final urlEp = anime.link.replaceAll('.html', '/episode-1.html'); + final resEpWebview = + await MBridge.getHtmlViaWebview(urlEp, '//*[@class="ss-list"]/a/@href'); + anime.urls = MBridge.xpath(resEpWebview, '//*[@class="ss-list"]/a/@href') + .reversed + .toList(); + + anime.names = MBridge.xpath(resEpWebview, + '//*[@class="ss-list"]/a/div[@class="ssli-detail"]/div/text()') + .reversed + .toList(); + anime.chaptersDateUploads = []; + return anime; +} + +getVideoList(MangaModel anime) async { + final resWebview = await MBridge.getHtmlViaWebview( + anime.link, '//*[@class="ps__-list"]/div/@data-server-id'); + + final serverIds = + MBridge.xpath(resWebview, '//*[@class="ps__-list"]/div/@data-server-id'); + final serverNames = + MBridge.xpath(resWebview, '//*[@class="ps__-list"]/div/a/text()'); + List serverUrls = []; + for (var id in serverIds) { + final serversUrls = + MBridge.xpath(resWebview, '//*[@id="content_player_${id}"]/text()') + .first; + serverUrls.add(serversUrls); + } + + List videos = []; + for (var i = 0; i < serverNames.length; i++) { + final name = serverNames[i]; + final url = serverUrls[i]; + + List a = []; + if (name.contains("Sendvid")) { + a = await MBridge.sendVidExtractor( + url.replaceAll("https:////", "https://"), + json.encode({"Referer": "${anime.baseUrl}/"}), + ""); + } else if (name.contains("Sibnet")) { + a = await MBridge.sibnetExtractor( + "https://video.sibnet.ru/shell.php?videoid=$url"); + } else if (name.contains("Mytv")) { + a = await MBridge.myTvExtractor("https://www.myvi.tv/embed/$url"); + } + for (var vi in a) { + videos.add(vi); + } + } + + return videos; +} diff --git a/anime/src/fr/franime/franime-v0.0.15.dart b/anime/src/fr/franime/franime-v0.0.15.dart deleted file mode 100644 index dd568e42..00000000 --- a/anime/src/fr/franime/franime-v0.0.15.dart +++ /dev/null @@ -1,407 +0,0 @@ -import 'dart:convert'; -import 'package:bridge_lib/bridge_lib.dart'; - -Future dataBase(int sourceId) async { - final data = { - "url": "https://api.franime.fr/api/animes/", - "headers": {"Referer": "https://franime.fr/"}, - "sourceId": sourceId - }; - final res = await MBridge.http(json.encode(data), 0); - return res; -} - -getPopularAnime(MangaModel anime) async { - final data = { - "url": "https://api.franime.fr/api/animes/", - "headers": {"Referer": "https://franime.fr/"}, - "sourceId": anime.sourceId - }; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return []; - } - List animeList = animeResList(res); - - return animeList; -} - -List animeResList(String res) { - final statusList = [ - {"EN COURS": 0, "TERMINÉ": 1} - ]; - List animeList = []; - final langs = - MBridge.jsonPathToList(res, r'$..saisons[*].episodes[*].lang', 1); - int index = 0; - List jsonResList = MBridge.jsonDecodeToList(res, 1); - for (var animeJson in jsonResList) { - MangaModel anime = MangaModel(); - List seasons = MBridge.jsonDecodeToList( - MBridge.getMapValue(animeJson, "saisons", 1), 1); - final titleO = MBridge.getMapValue(animeJson, "titleO", 0); - final vo = MBridge.getMapValue(MBridge.listParse(langs, 0)[index], "vo", 1); - final vf = MBridge.getMapValue(MBridge.listParse(langs, 0)[index], "vf", 1); - final hasVostfr = MBridge.isEmptyOrIsNotEmpty( - MBridge.jsonDecodeToList(MBridge.getMapValue(vo, "lecteurs", 1), 0), 1); - final hasVf = MBridge.isEmptyOrIsNotEmpty( - MBridge.jsonDecodeToList(MBridge.getMapValue(vf, "lecteurs", 1), 0), 1); - String title = MBridge.getMapValue(animeJson, "title", 0); - final genre = MBridge.jsonDecodeToList( - MBridge.getMapValue(animeJson, "themes", 1), 0); - final description = MBridge.getMapValue(animeJson, "description", 0); - final status = MBridge.parseStatus( - MBridge.getMapValue(animeJson, "status", 0), statusList); - final imageUrl = MBridge.getMapValue(animeJson, "affiche", 0); - if (hasVostfr) { - for (int i = 0; i < seasons.length; i++) { - int ind = i + 1; - - anime.genre = genre; - - anime.description = description; - String seasonTitle = title; - if (seasons.length > 1) { - seasonTitle += " S$ind"; - } - if (hasVostfr) { - seasonTitle += " VOSTFR"; - } - anime.status = status; - anime.name = seasonTitle; - anime.imageUrl = imageUrl; - anime.link = - "/anime/${MBridge.regExp(titleO, "[^A-Za-z0-9 ]", "", 0, 0).replaceAll(" ", "-").toLowerCase()}?lang=vo&s=$ind"; - ind++; - } - } else if (hasVf) { - for (int i = 0; i < seasons.length; i++) { - int ind = i + 1; - anime.genre = genre; - anime.description = description; - String seasonTitle = title; - if (seasons.length > 1) { - seasonTitle += " S$ind"; - } - if (hasVf) { - seasonTitle += " VF"; - } - anime.status = status; - anime.name = seasonTitle; - anime.imageUrl = imageUrl; - anime.link = - "/anime/${MBridge.regExp(titleO, "[^A-Za-z0-9 ]", "", 0, 0).replaceAll(" ", "-").toLowerCase()}?lang=vo&s=$ind"; - ind++; - } - } - animeList.add(anime); - index++; - } - return animeList; -} - -String databaseAnimeByTitleO(String res, String titleO) { - print(titleO); - List datas = MBridge.jsonDecodeToList(res, 1); - for (var data in datas) { - if (MBridge.regExp(MBridge.getMapValue(data, "titleO", 0), "[^A-Za-z0-9 ]", - "", 0, 0) - .replaceAll(" ", "-") - .toLowerCase() == - "${titleO}") { - return data; - } - } - return ""; -} - -getAnimeDetail(MangaModel anime) async { - String language = "vo".toString(); - if (anime.link.contains("lang=")) { - language = MBridge.listParse( - MBridge.listParse(anime.link.split("lang="), 2)[0].split("&"), 1)[0]; - print(language); - } - String stem = MBridge.listParse( - MBridge.listParse(anime.link.split("/"), 2)[0].split("?"), 1)[0]; - final res = await dataBase(anime.sourceId); - if (res.isEmpty) { - return anime; - } - final animeByTitleOJson = databaseAnimeByTitleO(res, stem); - if (animeByTitleOJson.isEmpty) { - return anime; - } - String seasonsJson = - MBridge.jsonPathToList(animeByTitleOJson, r'$..saisons', 1)[0]; - List seasons = MBridge.jsonDecodeToList(seasonsJson, 1); - - if (anime.link.contains("s=")) { - int seasonNumber = - MBridge.intParse(MBridge.listParse(anime.link.split("s="), 2)[0]); - seasonsJson = MBridge.listParse(seasons, 0)[seasonNumber - 1]; - } else { - seasonsJson = MBridge.listParse(seasons, 0)[0]; - } - final episodesJson = - MBridge.jsonPathToList(seasonsJson, r'$..episodes', 1)[0]; - List episodes = MBridge.jsonDecodeToList(episodesJson, 1); - List episodesNames = []; - List episodesUrls = []; - for (int i = 0; i < episodes.length; i++) { - String episode = MBridge.listParse(episodes, 0)[i]; - final lang = MBridge.getMapValue(episode, "lang", 1); - final vo = MBridge.getMapValue(lang, "vo", 1); - final vf = MBridge.getMapValue(lang, "vf", 1); - final hasVostfr = MBridge.isEmptyOrIsNotEmpty( - MBridge.jsonDecodeToList(MBridge.getMapValue(vo, "lecteurs", 1), 0), 1); - final hasVf = MBridge.isEmptyOrIsNotEmpty( - MBridge.jsonDecodeToList(MBridge.getMapValue(vf, "lecteurs", 1), 0), 1); - bool playerIsNotEmpty = false; - if (language == "vo" && hasVostfr) { - playerIsNotEmpty = true; - } else if (language == "vf" && hasVf) { - playerIsNotEmpty = true; - } - if (playerIsNotEmpty) { - episodesUrls.add("${anime.link}&ep=${i + 1}"); - final title = MBridge.getMapValue(episode, "title", 1); - episodesNames.add(title.replaceAll('"', "")); - } - } - - anime.urls = MBridge.listParse(episodesUrls, 5); - anime.names = MBridge.listParse(episodesNames, 5); - anime.chaptersDateUploads = []; - return anime; -} - -getLatestUpdatesAnime(MangaModel anime) async { - final res = await dataBase(anime.sourceId); - - if (res.isEmpty) { - return anime; - } - List reversed = - MBridge.listParse(MBridge.jsonDecodeToList(res, 1), 5); - String reversedJson = "".toString(); - for (int i = 0; i < reversed.length; i++) { - final va = MBridge.listParse(reversed, 0)[i]; - String vg = "".toString(); - if (reversedJson.isNotEmpty) { - vg = ",".toString(); - } - reversedJson += "$vg$va"; - } - List animeList = animeResList("[${reversedJson}]"); - - return animeList; -} - -searchAnime(MangaModel anime) async { - final res = await dataBase(anime.sourceId); - - if (res.isEmpty) { - return anime; - } - List animeList = animeSeachFetch(res, anime.query); - return animeList; -} - -List animeSeachFetch(String res, query) { - final statusList = [ - {"EN COURS": 0, "TERMINÉ": 1} - ]; - List animeList = []; - final langs = - MBridge.jsonPathToList(res, r'$..saisons[*].episodes[*].lang', 1); - int index = 0; - List jsonResList = MBridge.jsonDecodeToList(res, 1); - for (var animeJson in jsonResList) { - MangaModel anime = MangaModel(); - - final titleO = MBridge.getMapValue(animeJson, "titleO", 0); - - final titleAlt = MBridge.getMapValue(animeJson, "titles", 1); - final enContains = MBridge.getMapValue(titleAlt, "en", 0) - .toString() - .toLowerCase() - .contains(query); - final enJpContains = MBridge.getMapValue(titleAlt, "en_jp", 0) - .toString() - .toLowerCase() - .contains(query); - final jaJpContains = MBridge.getMapValue(titleAlt, "ja_jp", 0) - .toString() - .toLowerCase() - .contains(query); - final titleOContains = titleO.toLowerCase().contains(query); - bool contains = false; - if (enContains) { - contains = true; - } - if (enJpContains) { - contains = true; - } - if (jaJpContains) { - contains = true; - } - if (titleOContains) { - contains = true; - } - if (contains) { - List seasons = MBridge.jsonDecodeToList( - MBridge.getMapValue(animeJson, "saisons", 1), 1); - final vo = - MBridge.getMapValue(MBridge.listParse(langs, 0)[index], "vo", 1); - final vf = - MBridge.getMapValue(MBridge.listParse(langs, 0)[index], "vf", 1); - final hasVostfr = MBridge.isEmptyOrIsNotEmpty( - MBridge.jsonDecodeToList(MBridge.getMapValue(vo, "lecteurs", 1), 0), - 1); - final hasVf = MBridge.isEmptyOrIsNotEmpty( - MBridge.jsonDecodeToList(MBridge.getMapValue(vf, "lecteurs", 1), 0), - 1); - String title = MBridge.getMapValue(animeJson, "title", 0); - final genre = MBridge.jsonDecodeToList( - MBridge.getMapValue(animeJson, "themes", 1), 0); - final description = MBridge.getMapValue(animeJson, "description", 0); - final status = MBridge.parseStatus( - MBridge.getMapValue(animeJson, "status", 0), statusList); - final imageUrl = MBridge.getMapValue(animeJson, "affiche", 0); - if (hasVostfr) { - for (int i = 0; i < seasons.length; i++) { - int ind = i + 1; - - anime.genre = genre; - anime.description = description; - String seasonTitle = title; - if (seasons.length > 1) { - seasonTitle += " S$ind"; - } - if (hasVostfr) { - seasonTitle += " VOSTFR"; - } - anime.status = status; - anime.name = seasonTitle; - anime.imageUrl = imageUrl; - anime.link = - "/anime/${MBridge.regExp(titleO, "[^A-Za-z0-9 ]", "", 0, 0).replaceAll(" ", "-").toLowerCase()}?lang=vo&s=$ind"; - ind++; - } - } else if (hasVf) { - for (int i = 0; i < seasons.length; i++) { - int ind = i + 1; - anime.genre = genre; - anime.description = description; - String seasonTitle = title; - if (seasons.length > 1) { - seasonTitle += " S$ind"; - } - if (hasVf) { - seasonTitle += " VF"; - } - anime.status = status; - anime.name = seasonTitle; - anime.imageUrl = imageUrl; - anime.link = - "/anime/${MBridge.regExp(titleO, "[^A-Za-z0-9 ]", "", 0, 0).replaceAll(" ", "-").toLowerCase()}?lang=vf&s=$ind"; - ind++; - } - } - animeList.add(anime); - } - - index++; - } - return animeList; -} - -getVideoList(MangaModel anime) async { - String language = "vo".toString(); - String videoBaseUrl = "https://api.franime.fr/api/anime".toString(); - if (anime.link.contains("lang=")) { - language = MBridge.listParse( - MBridge.listParse(anime.link.split("lang="), 2)[0].split("&"), 1)[0]; - print(language); - } - String stem = MBridge.listParse( - MBridge.listParse(anime.link.split("/"), 2)[0].split("?"), 1)[0]; - final res = await dataBase(anime.sourceId); - final animeByTitleOJson = databaseAnimeByTitleO(res, stem); - final animeId = MBridge.getMapValue(animeByTitleOJson, "id", 0); - videoBaseUrl += "/$animeId/"; - - String seasonsJson = - MBridge.jsonPathToList(animeByTitleOJson, r'$..saisons', 1)[0]; - List seasons = MBridge.jsonDecodeToList(seasonsJson, 1); - if (anime.link.contains("s=")) { - int seasonNumber = MBridge.intParse(MBridge.listParse( - MBridge.listParse(anime.link.split("s="), 2)[0].split("&"), 1)[0]); - print(seasonNumber); - videoBaseUrl += "${seasonNumber - 1}/"; - seasonsJson = MBridge.listParse(seasons, 0)[seasonNumber - 1]; - } else { - seasonsJson = MBridge.listParse(seasons, 0)[0]; - videoBaseUrl += "0/"; - } - final episodesJson = - MBridge.jsonPathToList(seasonsJson, r'$..episodes', 1)[0]; - List episodes = MBridge.jsonDecodeToList(episodesJson, 1); - String episode = "".toString(); - if (anime.link.contains("ep=")) { - int episodeNumber = - MBridge.intParse(MBridge.listParse(anime.link.split("ep="), 2)[0]); - print(episodeNumber); - episode = MBridge.listParse(episodes, 0)[episodeNumber - 1]; - videoBaseUrl += "${episodeNumber - 1}"; - } else { - episode = MBridge.listParse(episodes, 0)[0]; - videoBaseUrl += "0"; - } - final lang = MBridge.getMapValue(episode, "lang", 1); - final vo = MBridge.getMapValue(lang, "vo", 1); - final vf = MBridge.getMapValue(lang, "vf", 1); - final vostfrPlayers = - MBridge.jsonDecodeToList(MBridge.getMapValue(vo, "lecteurs", 1), 0); - final vfPlayers = - MBridge.jsonDecodeToList(MBridge.getMapValue(vf, "lecteurs", 1), 0); - final hasVostfr = MBridge.isEmptyOrIsNotEmpty(vostfrPlayers, 1); - final hasVf = MBridge.isEmptyOrIsNotEmpty(vfPlayers, 1); - List players = []; - if (language == "vo" && hasVostfr) { - players = vostfrPlayers; - print(players); - } else if (language == "vf" && hasVf) { - players = vfPlayers; - print(players); - } - List videos = []; - for (int i = 0; i < players.length; i++) { - String apiUrl = "$videoBaseUrl/$language/$i"; - String playerName = MBridge.listParse(players, 0)[i]; - final data = { - "url": apiUrl, - "headers": {"Referer": "https://franime.fr/"}, - "sourceId": anime.sourceId - }; - final playerUrl = await MBridge.http(json.encode(data), 0); - List a = []; - if (playerName.contains("franime_myvi")) { - videos.add( - MBridge.toVideo(playerUrl, "FRAnime", playerUrl, null, null, null)); - } else if (playerName.contains("myvi")) { - a = await MBridge.myTvExtractor(playerUrl); - } else if (playerName.contains("sendvid")) { - a = await MBridge.sendVidExtractor( - playerUrl, json.encode({"Referer": "https://franime.fr/"}), ""); - } else if (playerName.contains("sibnet")) { - a = await MBridge.sibnetExtractor(playerUrl); - } else if (playerName.contains("sbfull")) {} - for (var vi in a) { - videos.add(vi); - } - } - - return videos; -} diff --git a/anime/src/fr/franime/franime-v0.0.2.dart b/anime/src/fr/franime/franime-v0.0.2.dart new file mode 100644 index 00000000..668af53f --- /dev/null +++ b/anime/src/fr/franime/franime-v0.0.2.dart @@ -0,0 +1,387 @@ +import 'dart:convert'; +import 'package:bridge_lib/bridge_lib.dart'; + +Future dataBase(int sourceId) async { + final data = { + "url": "https://api.franime.fr/api/animes/", + "headers": {"Referer": "https://franime.fr/"} + }; + final res = await MBridge.http('GET', json.encode(data)); + return res; +} + +getPopularAnime(MangaModel anime) async { + final data = { + "url": "https://api.franime.fr/api/animes/", + "headers": {"Referer": "https://franime.fr/"} + }; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + List animeList = animeResList(res); + + return animeList; +} + +List animeResList(String res) { + final statusList = [ + {"EN COURS": 0, "TERMINÉ": 1} + ]; + List animeList = []; + + final jsonResList = json.decode(res); + + for (var animeJson in jsonResList) { + MangaModel anime = MangaModel(); + final seasons = animeJson["saisons"]; + List vostfrListName = []; + List vfListName = []; + for (var season in seasons) { + for (var episode in season["episodes"]) { + final lang = episode["lang"]; + final vo = lang["vo"]; + final vf = lang["vf"]; + vostfrListName.add(vo["lecteurs"].isNotEmpty); + vfListName.add(vf["lecteurs"].isNotEmpty); + } + } + + final titleO = animeJson["titleO"]; + final title = animeJson["title"]; + final genre = animeJson["themes"]; + final description = animeJson["description"]; + final status = MBridge.parseStatus(animeJson["status"], statusList); + final imageUrl = animeJson["affiche"]; + + if (vostfrListName.contains(true)) { + for (int i = 0; i < seasons.length; i++) { + int ind = i + 1; + anime.genre = genre; + anime.description = description; + String seasonTitle = title.isEmpty ? titleO : title; + if (seasons.length > 1) { + seasonTitle += " S$ind"; + } + if (vostfrListName.contains(true)) { + seasonTitle += " VOSTFR"; + } + anime.status = status; + anime.name = seasonTitle; + anime.imageUrl = imageUrl; + anime.link = + "/anime/${MBridge.regExp(titleO, "[^A-Za-z0-9 ]", "", 0, 0).replaceAll(" ", "-").toLowerCase()}?lang=vo&s=$ind"; + ind++; + } + } else if (vfListName.contains(true)) { + for (int i = 0; i < seasons.length; i++) { + int ind = i + 1; + anime.genre = genre; + anime.description = description; + String seasonTitle = title.isEmpty ? titleO : title; + if (seasons.length > 1) { + seasonTitle += " S$ind"; + } + if (vfListName.contains(true)) { + seasonTitle += " VF"; + } + anime.status = status; + anime.name = seasonTitle; + anime.imageUrl = imageUrl; + anime.link = + "/anime/${MBridge.regExp(titleO, "[^A-Za-z0-9 ]", "", 0, 0).replaceAll(" ", "-").toLowerCase()}?lang=vo&s=$ind"; + ind++; + } + } + animeList.add(anime); + } + return animeList; +} + +String databaseAnimeByTitleO(String res, String titleO) { + final datas = MBridge.jsonDecodeToList(res, 1); + for (var data in datas) { + if (MBridge.regExp( + MBridge.getMapValue(data, "titleO"), "[^A-Za-z0-9 ]", "", 0, 0) + .replaceAll(" ", "-") + .toLowerCase() == + "${titleO}") { + return data; + } + } + return ""; +} + +getAnimeDetail(MangaModel anime) async { + String language = "vo".toString(); + if (anime.link.contains("lang=")) { + language = MBridge.substringBefore( + MBridge.substringAfter(anime.link, "lang="), "&"); + } + String stem = + MBridge.substringBefore(MBridge.substringAfterLast(anime.link, "/"), "?"); + final res = await dataBase(anime.sourceId); + if (res.isEmpty) { + return anime; + } + final animeByTitleOJson = databaseAnimeByTitleO(res, stem); + if (animeByTitleOJson.isEmpty) { + return anime; + } + final seasons = json.decode(animeByTitleOJson)["saisons"]; + + var seasonsJson = seasons.first; + + if (anime.link.contains("s=")) { + int seasonNumber = MBridge.intParse( + MBridge.substringBefore(MBridge.substringAfter(anime.link, "s="), "&")); + seasonsJson = seasons[seasonNumber - 1]; + } + + final episodes = seasonsJson["episodes"]; + + List episodesNames = []; + List episodesUrls = []; + for (int i = 0; i < episodes.length; i++) { + final episode = episodes[i]; + + final lang = episode["lang"]; + + final vo = lang["vo"]; + final vf = lang["vf"]; + bool hasVostfr = vo["lecteurs"].isNotEmpty; + bool hasVf = vf["lecteurs"].isNotEmpty; + bool playerIsNotEmpty = false; + + if (language == "vo" && hasVostfr) { + playerIsNotEmpty = true; + } else if (language == "vf" && hasVf) { + playerIsNotEmpty = true; + } + if (playerIsNotEmpty) { + episodesUrls.add("${anime.link}&ep=${i + 1}"); + String title = episode["title"]; + episodesNames.add(title.replaceAll('"', "")); + } + } + + anime.urls = episodesUrls.reversed.toList(); + anime.names = episodesNames.reversed.toList(); + anime.chaptersDateUploads = []; + return anime; +} + +getLatestUpdatesAnime(MangaModel anime) async { + final res = await dataBase(anime.sourceId); + + if (res.isEmpty) { + return anime; + } + List list = json.decode(res); + List reversedList = list.reversed.toList(); + List animeList = animeResList(json.encode(reversedList)); + + return animeList; +} + +searchAnime(MangaModel anime) async { + final res = await dataBase(anime.sourceId); + + if (res.isEmpty) { + return anime; + } + List animeList = animeSeachFetch(res, anime.query); + return animeList; +} + +List animeSeachFetch(String res, query) { + final statusList = [ + {"EN COURS": 0, "TERMINÉ": 1} + ]; + List animeList = []; + final jsonResList = json.decode(res); + for (var animeJson in jsonResList) { + MangaModel anime = MangaModel(); + + final titleO = MBridge.getMapValue(json.encode(animeJson), "titleO"); + final titleAlt = + MBridge.getMapValue(json.encode(animeJson), "titles", encode: true); + final enContains = MBridge.getMapValue(titleAlt, "en") + .toString() + .toLowerCase() + .contains(query); + final enJpContains = MBridge.getMapValue(titleAlt, "en_jp") + .toString() + .toLowerCase() + .contains(query); + final jaJpContains = MBridge.getMapValue(titleAlt, "ja_jp") + .toString() + .toLowerCase() + .contains(query); + final titleOContains = titleO.toLowerCase().contains(query); + bool contains = false; + if (enContains) { + contains = true; + } + if (enJpContains) { + contains = true; + } + if (jaJpContains) { + contains = true; + } + if (titleOContains) { + contains = true; + } + if (contains) { + final seasons = animeJson["saisons"]; + List hasVostfr = []; + List hasVf = []; + for (var season in seasons) { + for (var episode in season["episodes"]) { + final lang = episode["lang"]; + final vo = lang["vo"]; + final vf = lang["vf"]; + hasVostfr.add(vo["lecteurs"].isNotEmpty); + hasVf.add(vf["lecteurs"].isNotEmpty); + } + } + final titleO = animeJson["titleO"]; + final title = animeJson["title"]; + final genre = animeJson["themes"]; + final description = animeJson["description"]; + final status = MBridge.parseStatus(animeJson["status"], statusList); + final imageUrl = animeJson["affiche"]; + + if (hasVostfr.contains(true)) { + for (int i = 0; i < seasons.length; i++) { + int ind = i + 1; + anime.genre = genre; + anime.description = description; + String seasonTitle = title.isEmpty ? titleO : title; + if (seasons.length > 1) { + seasonTitle += " S$ind"; + } + if (hasVostfr.contains(true)) { + seasonTitle += " VOSTFR"; + } + anime.status = status; + anime.name = seasonTitle; + anime.imageUrl = imageUrl; + anime.link = + "/anime/${MBridge.regExp(titleO, "[^A-Za-z0-9 ]", "", 0, 0).replaceAll(" ", "-").toLowerCase()}?lang=vo&s=$ind"; + ind++; + } + } else if (hasVf.contains(true)) { + for (int i = 0; i < seasons.length; i++) { + int ind = i + 1; + anime.genre = genre; + anime.description = description; + String seasonTitle = title.isEmpty ? titleO : title; + if (seasons.length > 1) { + seasonTitle += " S$ind"; + } + if (hasVf.contains(true)) { + seasonTitle += " VF"; + } + anime.status = status; + anime.name = seasonTitle; + anime.imageUrl = imageUrl; + anime.link = + "/anime/${MBridge.regExp(titleO, "[^A-Za-z0-9 ]", "", 0, 0).replaceAll(" ", "-").toLowerCase()}?lang=vo&s=$ind"; + ind++; + } + } + animeList.add(anime); + } + } + return animeList; +} + +getVideoList(MangaModel anime) async { + String language = "vo".toString(); + String videoBaseUrl = "https://api.franime.fr/api/anime".toString(); + if (anime.link.contains("lang=")) { + language = MBridge.substringBefore( + MBridge.substringAfter(anime.link, "lang="), "&"); + print(language); + } + String stem = + MBridge.substringBefore(MBridge.substringAfterLast(anime.link, "/"), "?"); + final res = await dataBase(anime.sourceId); + if (res.isEmpty) { + return anime; + } + final animeByTitleOJson = databaseAnimeByTitleO(res, stem); + if (animeByTitleOJson.isEmpty) { + return anime; + } + final animeId = json.decode(animeByTitleOJson)["id"]; + final seasons = json.decode(animeByTitleOJson)["saisons"]; + + var seasonsJson = seasons.first; + + videoBaseUrl += "/$animeId/"; + + if (anime.link.contains("s=")) { + int seasonNumber = MBridge.intParse( + MBridge.substringBefore(MBridge.substringAfter(anime.link, "s="), "&")); + print(seasonNumber); + videoBaseUrl += "${seasonNumber - 1}/"; + seasonsJson = seasons[seasonNumber - 1]; + } else { + videoBaseUrl += "0/"; + } + final episodesJson = seasonsJson["episodes"]; + var episode = episodesJson.first; + if (anime.link.contains("ep=")) { + int episodeNumber = + MBridge.intParse(MBridge.substringAfter(anime.link, "ep=")); + print(episodeNumber); + episode = episodesJson[episodeNumber - 1]; + videoBaseUrl += "${episodeNumber - 1}"; + } else { + videoBaseUrl += "0"; + } + final lang = episode["lang"]; + + final vo = lang["vo"]; + final vf = lang["vf"]; + bool hasVostfr = vo["lecteurs"].isNotEmpty; + bool hasVf = vf["lecteurs"].isNotEmpty; + final vostfrPlayers = vo["lecteurs"]; + final vfPlayers = vf["lecteurs"]; + var players = []; + if (language == "vo" && hasVostfr) { + players = vostfrPlayers; + } else if (language == "vf" && hasVf) { + players = vfPlayers; + } + List videos = []; + for (int i = 0; i < players.length; i++) { + String apiUrl = "$videoBaseUrl/$language/$i"; + String playerName = players[i]; + final data = { + "url": apiUrl, + "headers": {"Referer": "https://franime.fr/"}, + "sourceId": anime.sourceId + }; + final playerUrl = await MBridge.http('GET', json.encode(data)); + List a = []; + if (playerName.contains("franime_myvi")) { + videos.add( + MBridge.toVideo(playerUrl, "FRAnime", playerUrl, null, null, null)); + } else if (playerName.contains("myvi")) { + a = await MBridge.myTvExtractor(playerUrl); + } else if (playerName.contains("sendvid")) { + a = await MBridge.sendVidExtractor( + playerUrl, json.encode({"Referer": "https://franime.fr/"}), ""); + } else if (playerName.contains("sibnet")) { + a = await MBridge.sibnetExtractor(playerUrl); + } else if (playerName.contains("sbfull")) {} + for (var vi in a) { + videos.add(vi); + } + } + + return videos; +} diff --git a/anime/src/fr/otakufr/otakufr-v0.0.12.dart b/anime/src/fr/otakufr/otakufr-v0.0.2.dart similarity index 51% rename from anime/src/fr/otakufr/otakufr-v0.0.12.dart rename to anime/src/fr/otakufr/otakufr-v0.0.2.dart index 4b732116..b5161f1d 100644 --- a/anime/src/fr/otakufr/otakufr-v0.0.12.dart +++ b/anime/src/fr/otakufr/otakufr-v0.0.2.dart @@ -3,26 +3,21 @@ import 'package:bridge_lib/bridge_lib.dart'; getPopularAnime(MangaModel anime) async { final data = { - "url": "${anime.baseUrl}/toute-la-liste-affiches/page/${anime.page}/?q=.", - "headers": null, - "sourceId": anime.sourceId + "url": "${anime.baseUrl}/toute-la-liste-affiches/page/${anime.page}/?q=." }; - final res = await MBridge.http(json.encode(data), 0); + final res = await MBridge.http('GET', json.encode(data)); if (res.isEmpty) { return anime; } - anime.urls = MBridge.xpath( - res, '//*[@class="list"]/article/div/div/figure/a/@href', '._.._.._') - .split('._.._.._'); + anime.urls = + MBridge.xpath(res, '//*[@class="list"]/article/div/div/figure/a/@href'); - anime.names = MBridge.xpath(res, - '//*[@class="list"]/article/div/div/figure/a/img/@title', '._.._.._') - .split('._.._.._'); - anime.images = MBridge.xpath(res, - '//*[@class="list"]/article/div/div/figure/a/img/@src', '._.._.._') - .split('._.._.._'); - final nextPage = MBridge.xpath(res, '//a[@class="next page-link"]/@href', ''); + anime.names = MBridge.xpath( + res, '//*[@class="list"]/article/div/div/figure/a/img/@title'); + anime.images = MBridge.xpath( + res, '//*[@class="list"]/article/div/div/figure/a/img/@src'); + final nextPage = MBridge.xpath(res, '//a[@class="next page-link"]/@href'); if (nextPage.isEmpty) { anime.hasNextPage = false; } else { @@ -32,24 +27,16 @@ getPopularAnime(MangaModel anime) async { } getLatestUpdatesAnime(MangaModel anime) async { - final data = { - "url": "${anime.baseUrl}/page/${anime.page}/", - "headers": null, - "sourceId": anime.sourceId - }; - final res = await MBridge.http(json.encode(data), 0); + final data = {"url": "${anime.baseUrl}/page/${anime.page}/"}; + final res = await MBridge.http('GET', json.encode(data)); if (res.isEmpty) { return anime; } - anime.urls = - MBridge.xpath(res, '//*[@class="episode"]/div/a/@href', '._.._.._') - .split('._.._.._'); - List namess = - MBridge.xpath(res, '//*[@class="episode"]/div/a/text()', '._.._.._') - .split('._.._.._'); + anime.urls = MBridge.xpath(res, '//*[@class="episode"]/div/a/@href'); + final namess = MBridge.xpath(res, '//*[@class="episode"]/div/a/text()'); List names = []; - for (var name in MBridge.listParse(namess, 0)) { + for (var name in namess) { names.add(MBridge.regExp( name, r'(?<=\bS\d\s*|)\d{2}\s*(?=\b(Vostfr|vostfr|VF|Vf|vf|\(VF\)|\(vf\)|\(Vf\)|\(Vostfr\)\b))?', @@ -68,12 +55,9 @@ getLatestUpdatesAnime(MangaModel anime) async { .replaceAll(' (Vostfr)', '')); } anime.names = names; - anime.images = MBridge.xpath( - res, - '//*[@class="episode"]/div/figure/a/img/@src', - '._.._.._.._.._.._.._.._.._') - .split('._.._.._.._.._.._.._.._.._'); - final nextPage = MBridge.xpath(res, '//a[@class="next page-link"]/@href', ''); + anime.images = + MBridge.xpath(res, '//*[@class="episode"]/div/figure/a/img/@src'); + final nextPage = MBridge.xpath(res, '//a[@class="next page-link"]/@href'); if (nextPage.isEmpty) { anime.hasNextPage = false; } else { @@ -90,83 +74,72 @@ getAnimeDetail(MangaModel anime) async { } ]; final url = anime.link; - final data = {"url": url, "headers": null}; - String res = await MBridge.http(json.encode(data), 0); + final data = {"url": url}; + String res = await MBridge.http('GET', json.encode(data)); if (res.isEmpty) { return anime; } final originalUrl = MBridge.xpath(res, - '//*[@class="breadcrumb"]/li[@class="breadcrumb-item"][2]/a/@href', ''); - if (originalUrl.isEmpty) { - } else { - final newData = {"url": originalUrl, "headers": null}; - res = await MBridge.http(json.encode(newData), 0); + '//*[@class="breadcrumb"]/li[@class="breadcrumb-item"][2]/a/@href') + .first; + if (originalUrl.isNotEmpty) { + final newData = {"url": originalUrl}; + res = await MBridge.http('GET', json.encode(newData)); if (res.isEmpty) { return anime; } } anime.description = - MBridge.xpath(res, '//*[@class="episode fz-sm synop"]/p/text()', '') + MBridge.xpath(res, '//*[@class="episode fz-sm synop"]/p/text()') + .first .replaceAll("Synopsis:", ""); - final status = MBridge.xpath( - res, - '//*[@class="list-unstyled"]/li[contains(text(),"Statut")]/text()', - '') + final status = MBridge.xpath(res, + '//*[@class="list-unstyled"]/li[contains(text(),"Statut")]/text()') + .first .replaceAll("Statut: ", ""); anime.status = MBridge.parseStatus(status, statusList); - anime.genre = MBridge.xpath( - res, - '//*[@class="list-unstyled"]/li[contains(text(),"Genre")]/ul/li/a/text()', - '._.._.._') - .split('._.._.._'); + anime.genre = MBridge.xpath(res, + '//*[@class="list-unstyled"]/li[contains(text(),"Genre")]/ul/li/a/text()'); - anime.urls = MBridge.xpath( - res, '//*[@class="list-episodes list-group"]/a/@href', '._.._.._') - .split("._.._.._"); - List dates = MBridge.xpath(res, - '//*[@class="list-episodes list-group"]/a/span/text()', '._.._.._') - .split("._.._.._"); - List names = MBridge.xpath( - res, '//*[@class="list-episodes list-group"]/a/text()', '._.._.._') - .split("._.._.._"); + anime.urls = + MBridge.xpath(res, '//*[@class="list-episodes list-group"]/a/@href'); + final dates = MBridge.xpath( + res, '//*[@class="list-episodes list-group"]/a/span/text()'); + final names = + MBridge.xpath(res, '//*[@class="list-episodes list-group"]/a/text()'); List episodes = []; for (var i = 0; i < names.length; i++) { - final date = MBridge.listParse(dates, 0)[i]; - final name = MBridge.listParse(names, 0)[i]; + final date = dates[i]; + final name = names[i]; episodes.add( "Episode ${MBridge.regExp(name.replaceAll(date, ""), r".* (\d*) [VvfF]{1,1}", '', 1, 1)}"); } anime.names = episodes; - anime.chaptersDateUploads = MBridge.listParse( - MBridge.listParseDateTime(dates, "dd MMMM yyyy", "fr"), 0); + anime.chaptersDateUploads = + MBridge.listParseDateTime(dates, "dd MMMM yyyy", "fr"); return anime; } searchAnime(MangaModel anime) async { final data = { "url": - "${anime.baseUrl}/toute-la-liste-affiches/page/${anime.page}/?q=${anime.query}", - "headers": null, - "sourceId": anime.sourceId + "${anime.baseUrl}/toute-la-liste-affiches/page/${anime.page}/?q=${anime.query}" }; - final res = await MBridge.http(json.encode(data), 0); + final res = await MBridge.http('GET', json.encode(data)); if (res.isEmpty) { return anime; } - anime.urls = MBridge.xpath( - res, '//*[@class="list"]/article/div/div/figure/a/@href', '._.._.._') - .split('._.._.._'); + anime.urls = + MBridge.xpath(res, '//*[@class="list"]/article/div/div/figure/a/@href'); - anime.names = MBridge.xpath(res, - '//*[@class="list"]/article/div/div/figure/a/img/@title', '._.._.._') - .split('._.._.._'); - anime.images = MBridge.xpath(res, - '//*[@class="list"]/article/div/div/figure/a/img/@src', '._.._.._') - .split('._.._.._'); - final nextPage = MBridge.xpath(res, '//a[@class="next page-link"]/@href', ''); + anime.names = MBridge.xpath( + res, '//*[@class="list"]/article/div/div/figure/a/img/@title'); + anime.images = MBridge.xpath( + res, '//*[@class="list"]/article/div/div/figure/a/img/@src'); + final nextPage = MBridge.xpath(res, '//a[@class="next page-link"]/@href'); if (nextPage.isEmpty) { anime.hasNextPage = false; } else { @@ -176,29 +149,23 @@ searchAnime(MangaModel anime) async { } getVideoList(MangaModel anime) async { - final datas = { - "url": anime.link, - "headers": null, - "sourceId": anime.sourceId - }; + final datas = {"url": anime.link}; - final res = await MBridge.http(json.encode(datas), 0); + final res = await MBridge.http('GET', json.encode(datas)); if (res.isEmpty) { return []; } final servers = - MBridge.xpath(res, '//*[@id="nav-tabContent"]/div/iframe/@src', ".-") - .split(".-"); + MBridge.xpath(res, '//*[@id="nav-tabContent"]/div/iframe/@src'); List videos = []; - for (var url in MBridge.listParse(servers, 0)) { + for (var url in servers) { final datasServer = { "url": fixUrl(url), - "headers": {"X-Requested-With": "XMLHttpRequest"}, - "sourceId": anime.sourceId + "headers": {"X-Requested-With": "XMLHttpRequest"} }; - final resServer = await MBridge.http(json.encode(datasServer), 0); + final resServer = await MBridge.http('GET', json.encode(datasServer)); final serverUrl = fixUrl(MBridge.regExp(resServer, r"data-url='([^']+)'", '', 1, 1)); List a = []; diff --git a/anime/src/fr/universanime/source.dart b/anime/src/fr/universanime/source.dart index d14df9f5..67327f6c 100644 --- a/anime/src/fr/universanime/source.dart +++ b/anime/src/fr/universanime/source.dart @@ -7,7 +7,7 @@ const universanimeSourceCodeUrl = "https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/fr/universanime/universanime-v$universanimeVersion.dart"; Source _universanimeSource = Source( name: "UniversAnime", - baseUrl: "https://www.universanime.co", + baseUrl: "https://www.universanime.club", lang: "fr", typeSource: "single", iconUrl: getIconUrl("universanime", "fr"), diff --git a/anime/src/fr/universanime/universanime-v0.0.13.dart b/anime/src/fr/universanime/universanime-v0.0.13.dart deleted file mode 100644 index 9a281a38..00000000 --- a/anime/src/fr/universanime/universanime-v0.0.13.dart +++ /dev/null @@ -1,163 +0,0 @@ -import 'dart:convert'; -import 'package:bridge_lib/bridge_lib.dart'; - -getVideoList(MangaModel anime) async { - final datas = { - "url": anime.link, - "headers": null, - "sourceId": anime.sourceId - }; - - final res = await MBridge.http(json.encode(datas), 0); - - if (res.isEmpty) { - return []; - } - - final serverUrls = MBridge.xpath( - res, '//*[@class="entry-content"]/div/div/iframe/@src', '._') - .split("._"); - List videos = []; - for (var i = 0; i < serverUrls.length; i++) { - final url = MBridge.listParse(serverUrls, 0)[i].toString(); - print(url); - List a = []; - if (url.startsWith("https://filemoon.")) { - a = await MBridge.filemoonExtractor(url, ""); - } else if (url.startsWith("https://doodstream.")) { - a = await MBridge.doodExtractor(url); - } else if (url.startsWith("https://streamtape.")) { - a = await MBridge.streamTapeExtractor(url); - } else if (url.contains("streamsb")) {} - for (var vi in a) { - videos.add(vi); - } - } - - return videos; -} - -Future getLatestUpdatesAnime(MangaModel anime) async { - final data = { - "url": "${anime.baseUrl}/page/${anime.page}/", - "headers": null, - "sourceId": anime.sourceId - }; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - anime.urls = MBridge.xpath( - res, - '//*[@class="recent-posts"]/li/div[@class="post-thumb"]/a/@href', - '._') - .split('._'); - anime.names = MBridge.xpath( - res, - '//*[@class="recent-posts"]/li/div[@class="post-thumb"]/a/@title', - '._') - .split('._'); - anime.images = []; - return anime; -} - -getAnimeDetail(MangaModel anime) async { - final url = anime.link; - final data = {"url": url, "headers": null}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - anime.description = MBridge.xpath(res, - '//*[@class="entry-content"]/p[contains(text(),"Synopsis")]/text()', ''); - - anime.status = 5; - - final urls = MBridge.xpath( - res, - '//*[@class="entry-content"]/ul[@class="lcp_catlist" and contains(@id,"lcp_instance_")]/li/a/@href', - '._'); - final names = MBridge.xpath( - res, - '//*[@class="entry-content"]/ul[@class="lcp_catlist" and contains(@id,"lcp_instance_")]/li/a/text()', - '._'); - if (urls.isEmpty && names.isEmpty) { - anime.urls = [anime.link]; - anime.names = ["Film"]; - } else { - anime.urls = urls.split('._'); - anime.names = names.split('._'); - } - - anime.chaptersDateUploads = []; - return anime; -} - -getPopularAnime(MangaModel anime) async { - return await getLatestUpdatesAnime(anime); -} - -searchAnime(MangaModel anime) async { - final data = { - "url": "${anime.baseUrl}/liste-des-animes-2/", - "headers": null, - "sourceId": anime.sourceId - }; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return anime; - } - - final dataMovies = { - "url": "${anime.baseUrl}/films-mangas/", - "headers": null, - "sourceId": anime.sourceId - }; - final resMovies = await MBridge.http(json.encode(dataMovies), 0); - List urlsS = []; - List namesS = []; - List urls = MBridge.xpath( - res, - '//*[@class="lcp_catlist" and contains(@id,"lcp_instance_")]/li/a/@href', - '._') - .split('._'); - - List names = MBridge.xpath( - res, - '//*[@class="lcp_catlist" and contains(@id,"lcp_instance_")]/li/a/text()', - '._') - .split('._'); - List urlsMovies = MBridge.xpath( - resMovies, - '//*[@class="recent-posts"]/li/div[@class="post-thumb"]/a/@href', - '._') - .split('._'); - - List namesMovies = MBridge.xpath( - resMovies, - '//*[@class="recent-posts"]/li/div[@class="post-thumb"]/a/@title', - '._') - .split('._'); - for (var i = 0; i < names.length; i++) { - String name = MBridge.listParse(names, 0)[i]; - if (name.toLowerCase().contains(anime.query)) { - String url = MBridge.listParse(urls, 0)[i]; - urlsS.add(url); - namesS.add(name); - } - } - for (var i = 0; i < namesMovies.length; i++) { - String name = MBridge.listParse(namesMovies, 0)[i]; - if (name.toLowerCase().contains(anime.query)) { - String url = MBridge.listParse(urlsMovies, 0)[i]; - urlsS.add(url); - namesS.add(name); - } - } - anime.urls = urlsS; - - anime.names = namesS; - anime.images = []; - - return anime; -} diff --git a/anime/src/fr/universanime/universanime-v0.0.2.dart b/anime/src/fr/universanime/universanime-v0.0.2.dart new file mode 100644 index 00000000..205ef880 --- /dev/null +++ b/anime/src/fr/universanime/universanime-v0.0.2.dart @@ -0,0 +1,125 @@ +import 'dart:convert'; +import 'package:bridge_lib/bridge_lib.dart'; + +getVideoList(MangaModel anime) async { + final datas = {"url": anime.link}; + + final res = await MBridge.http('GET', json.encode(datas)); + + if (res.isEmpty) { + return []; + } + + final serverUrls = + MBridge.xpath(res, '//*[@class="entry-content"]/div/div/iframe/@src'); + List videos = []; + for (var i = 0; i < serverUrls.length; i++) { + final url = serverUrls[i]; + print(url); + List a = []; + if (url.startsWith("https://filemoon.")) { + a = await MBridge.filemoonExtractor(url, ""); + } else if (url.startsWith("https://doodstream.")) { + a = await MBridge.doodExtractor(url); + } else if (url.startsWith("https://streamtape.")) { + a = await MBridge.streamTapeExtractor(url); + } else if (url.contains("streamsb")) {} + for (var vi in a) { + videos.add(vi); + } + } + + return videos; +} + +Future getLatestUpdatesAnime(MangaModel anime) async { + final data = {"url": "${anime.baseUrl}/page/${anime.page}/"}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + anime.urls = MBridge.xpath( + res, '//*[@class="recent-posts"]/li/div[@class="post-thumb"]/a/@href'); + anime.names = MBridge.xpath( + res, '//*[@class="recent-posts"]/li/div[@class="post-thumb"]/a/@title'); + anime.images = []; + return anime; +} + +getAnimeDetail(MangaModel anime) async { + final url = anime.link; + final data = {"url": url}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + anime.description = MBridge.xpath(res, + '//*[@class="entry-content"]/p[contains(text(),"Synopsis")]/text()') + .first; + + anime.status = 5; + + final urls = MBridge.xpath(res, + '//*[@class="entry-content"]/ul[@class="lcp_catlist" and contains(@id,"lcp_instance_")]/li/a/@href'); + final names = MBridge.xpath(res, + '//*[@class="entry-content"]/ul[@class="lcp_catlist" and contains(@id,"lcp_instance_")]/li/a/text()'); + if (urls.isEmpty && names.isEmpty) { + anime.urls = [anime.link]; + anime.names = ["Film"]; + } else { + anime.urls = urls; + anime.names = names; + } + + anime.chaptersDateUploads = []; + return anime; +} + +getPopularAnime(MangaModel anime) async { + return await getLatestUpdatesAnime(anime); +} + +searchAnime(MangaModel anime) async { + final data = {"url": "${anime.baseUrl}/liste-des-animes-2/"}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return anime; + } + + final dataMovies = {"url": "${anime.baseUrl}/films-mangas/"}; + final resMovies = await MBridge.http('GET', json.encode(dataMovies)); + List urlsS = []; + List namesS = []; + final urls = MBridge.xpath(res, + '//*[@class="lcp_catlist" and contains(@id,"lcp_instance_")]/li/a/@href'); + + final names = MBridge.xpath(res, + '//*[@class="lcp_catlist" and contains(@id,"lcp_instance_")]/li/a/text()'); + final urlsMovies = MBridge.xpath(resMovies, + '//*[@class="recent-posts"]/li/div[@class="post-thumb"]/a/@href'); + + final namesMovies = MBridge.xpath(resMovies, + '//*[@class="recent-posts"]/li/div[@class="post-thumb"]/a/@title'); + for (var i = 0; i < names.length; i++) { + final name = names[i]; + if (name.toLowerCase().contains(anime.query)) { + final url = urls[i]; + urlsS.add(url); + namesS.add(name); + } + } + for (var i = 0; i < namesMovies.length; i++) { + final name = namesMovies[i]; + if (name.toLowerCase().contains(anime.query)) { + final url = urlsMovies[i]; + urlsS.add(url); + namesS.add(name); + } + } + anime.urls = urlsS; + + anime.names = namesS; + anime.images = []; + + return anime; +} diff --git a/index.json b/index.json index cb9baf7a..5b06f0c8 100644 --- a/index.json +++ b/index.json @@ -1 +1 @@ -[{"name":"FR-Scan","id":669019889,"baseUrl":"https://fr-scan.com","lang":"fr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-frscan.png","dateFormat":"MMMM d, yyyy","dateFormatLocale":"fr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"AstralManga","id":1028022993,"baseUrl":"https://astral-manga.fr","lang":"fr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-astralmanga.png","dateFormat":"dd/mm/yyyy","dateFormatLocale":"fr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Akuma no Tenshi","id":556872410,"baseUrl":"https://akumanotenshi.com","lang":"pt-BR","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-akumanotenshi.png","dateFormat":"dd/MM/yyyy","dateFormatLocale":"pt-BR","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Adult Webtoon","id":772321498,"baseUrl":"https://adultwebtoon.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-adultwebtoon.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"ArazNovel","id":966932111,"baseUrl":"https://www.araznovel.com","lang":"tr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-araznovel.png","dateFormat":"d MMMM yyyy","dateFormatLocale":"en","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"BestManga","id":926276360,"baseUrl":"https://bestmanga.club","lang":"ru","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-ru-bestmanga.png","dateFormat":"dd.MM.yyyy","dateFormatLocale":"ru","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Chibi Manga","id":105430403,"baseUrl":"https://www.cmreader.info","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-chibimanga.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"EvaScans","id":439004766,"baseUrl":"https://evascans.com","lang":"tr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-evascans.png","dateFormat":"MMM d, yyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Final Scans","id":477960837,"baseUrl":"https://finalscans.com","lang":"pt-br","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-finalscans.png","dateFormat":"MMMM d, yyyy","dateFormatLocale":"pt-BR","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Glory Manga","id":284318957,"baseUrl":"https://glorymanga.com","lang":"tr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-glorymanga.png","dateFormat":"dd/MM/yyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Its Your Right Manhua","id":71580703,"baseUrl":"https://itsyourightmanhua.com/","lang":"en","typeSource":"madara","iconUrl":"","dateFormat":"MMMM d, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Kami Sama Explorer","id":797019242,"baseUrl":"https://leitor.kamisama.com.br","lang":"pt-br","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-kamisamaexplorer.png","dateFormat":"dd 'de' MMMM 'de' yyyy","dateFormatLocale":"pt-BR","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"KSGroupScans","id":374902680,"baseUrl":"https://ksgroupscans.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-ksgroupscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"LHTranslation","id":21247797,"baseUrl":"https://lhtranslation.net","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-lhtranslation.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Lolicon","id":526980015,"baseUrl":"https://lolicon.mobi","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-lolicon.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaVisa","id":433907810,"baseUrl":"https://mangavisa.com","lang":"en","typeSource":"madara","iconUrl":"","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Manga District","id":281100270,"baseUrl":"https://mangadistrict.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangadistrict.png","dateFormat":"MMMM d, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaFreak.online","id":223793266,"baseUrl":"https://mangafreak.online","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangafreakonline.png","dateFormat":"d MMMM، yyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaGreat","id":1054806605,"baseUrl":"https://mangagreat.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangagreat.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Manga Read","id":256879643,"baseUrl":"https://mangaread.co","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangaread.png","dateFormat":"yyyy-MM-dd","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaRolls","id":720109919,"baseUrl":"https://mangarolls.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangarolls.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Manga Şehri","id":865354788,"baseUrl":"https://mangasehri.com","lang":"tr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-mangasehri.png","dateFormat":"dd/MM/yyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Mangasushi","id":224429716,"baseUrl":"https://mangasushi.org","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangasushi.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Manhwa68","id":1002141127,"baseUrl":"https://manhwa68.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-manhwa68.png","dateFormat":"MMMM d, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Milftoon","id":381914974,"baseUrl":"https://milftoon.xxx","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-milftoon.png","dateFormat":"d MMMM, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"NovelCrow","id":768834856,"baseUrl":"https://novelcrow.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-novelcrow.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Rio2 Manga","id":110090511,"baseUrl":"https://rio2manga.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-rio2manga.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Romantik Manga","id":944131896,"baseUrl":"https://romantikmanga.com","lang":"tr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-romantikmanga.png","dateFormat":"MMM d, yyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Taurus Fansub","id":1036726988,"baseUrl":"https://taurusfansub.com","lang":"es","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-es-taurusfansub.png","dateFormat":"dd/MM/yyy","dateFormatLocale":"es","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Tatakae Scan","id":296744306,"baseUrl":"https://tatakaescan.com","lang":"pt-BR","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-tatakaescan.png","dateFormat":"dd 'de' MMMMM 'de' yyyy","dateFormatLocale":"pt-BR","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Tortuga Ceviri","id":294602572,"baseUrl":"https://tortuga-ceviri.com","lang":"tr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-tortugaceviri.png","dateFormat":"MMMM d, yyyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Yuri Verso","id":756257030,"baseUrl":"https://yuri.live","lang":"pt-br","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-yuriverso.png","dateFormat":"dd/MM/yyyy","dateFormatLocale":"pt-BR","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Zero Scan","id":637786379,"baseUrl":"https://zeroscan.com.br","lang":"pt-br","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-zeroscan.png","dateFormat":"dd/MM/yyyy","dateFormatLocale":"pt-BR","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":370890607,"baseUrl":"https://comick.app","lang":"all","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":955190069,"baseUrl":"https://comick.app","lang":"en","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":494197461,"baseUrl":"https://comick.app","lang":"pt-br","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":1050814052,"baseUrl":"https://comick.app","lang":"ru","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":380505196,"baseUrl":"https://comick.app","lang":"fr","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":296390197,"baseUrl":"https://comick.app","lang":"es-419","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":242913014,"baseUrl":"https://comick.app","lang":"pl","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":507059585,"baseUrl":"https://comick.app","lang":"tr","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":851891714,"baseUrl":"https://comick.app","lang":"it","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":115169439,"baseUrl":"https://comick.app","lang":"es","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":719269008,"baseUrl":"https://comick.app","lang":"id","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":719759654,"baseUrl":"https://comick.app","lang":"hu","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":301477894,"baseUrl":"https://comick.app","lang":"vi","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":113594984,"baseUrl":"https://comick.app","lang":"zh-hk","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":602472856,"baseUrl":"https://comick.app","lang":"ar","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":401493183,"baseUrl":"https://comick.app","lang":"de","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":752155292,"baseUrl":"https://comick.app","lang":"zh","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":1069764002,"baseUrl":"https://comick.app","lang":"ca","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":678531099,"baseUrl":"https://comick.app","lang":"bg","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":311480598,"baseUrl":"https://comick.app","lang":"th","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":141560456,"baseUrl":"https://comick.app","lang":"fa","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":8261465,"baseUrl":"https://comick.app","lang":"uk","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":565474938,"baseUrl":"https://comick.app","lang":"mn","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":533803532,"baseUrl":"https://comick.app","lang":"ro","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":459976450,"baseUrl":"https://comick.app","lang":"he","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":375702775,"baseUrl":"https://comick.app","lang":"ms","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":737984097,"baseUrl":"https://comick.app","lang":"tl","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":796489006,"baseUrl":"https://comick.app","lang":"ja","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":683471552,"baseUrl":"https://comick.app","lang":"hi","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":778623467,"baseUrl":"https://comick.app","lang":"my","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":1065236294,"baseUrl":"https://comick.app","lang":"ko","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":422767524,"baseUrl":"https://comick.app","lang":"cs","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":678647945,"baseUrl":"https://comick.app","lang":"pt","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":698202010,"baseUrl":"https://comick.app","lang":"nl","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":359879447,"baseUrl":"https://comick.app","lang":"sv","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":532878423,"baseUrl":"https://comick.app","lang":"bn","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":481504622,"baseUrl":"https://comick.app","lang":"no","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":112887841,"baseUrl":"https://comick.app","lang":"lt","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":824905526,"baseUrl":"https://comick.app","lang":"el","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":373675453,"baseUrl":"https://comick.app","lang":"sr","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Comick","id":574420905,"baseUrl":"https://comick.app","lang":"da","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":202373705,"baseUrl":"https://mangadex.org","lang":"ar","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":860658373,"baseUrl":"https://mangadex.org","lang":"bn","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":722270529,"baseUrl":"https://mangadex.org","lang":"bg","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":978675083,"baseUrl":"https://mangadex.org","lang":"my","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":689496451,"baseUrl":"https://mangadex.org","lang":"ca","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":593575397,"baseUrl":"https://mangadex.org","lang":"zh","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":115179159,"baseUrl":"https://mangadex.org","lang":"zh-hk","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":869144666,"baseUrl":"https://mangadex.org","lang":"cs","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":846142909,"baseUrl":"https://mangadex.org","lang":"da","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":841149659,"baseUrl":"https://mangadex.org","lang":"nl","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":810342358,"baseUrl":"https://mangadex.org","lang":"en","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":309024312,"baseUrl":"https://mangadex.org","lang":"tl","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":164642544,"baseUrl":"https://mangadex.org","lang":"fi","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":545017689,"baseUrl":"https://mangadex.org","lang":"fr","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":110023605,"baseUrl":"https://mangadex.org","lang":"de","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":767687578,"baseUrl":"https://mangadex.org","lang":"el","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":511907642,"baseUrl":"https://mangadex.org","lang":"he","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":986826068,"baseUrl":"https://mangadex.org","lang":"hi","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":128441350,"baseUrl":"https://mangadex.org","lang":"hu","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":183977130,"baseUrl":"https://mangadex.org","lang":"id","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":127887438,"baseUrl":"https://mangadex.org","lang":"it","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":204112007,"baseUrl":"https://mangadex.org","lang":"ja","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":1063442064,"baseUrl":"https://mangadex.org","lang":"kk","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":898061477,"baseUrl":"https://mangadex.org","lang":"ko","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":387646759,"baseUrl":"https://mangadex.org","lang":"la","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":270482698,"baseUrl":"https://mangadex.org","lang":"lt","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":284400542,"baseUrl":"https://mangadex.org","lang":"ms","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":525041874,"baseUrl":"https://mangadex.org","lang":"mn","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":613632949,"baseUrl":"https://mangadex.org","lang":"ne","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":441032670,"baseUrl":"https://mangadex.org","lang":"no","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":693311514,"baseUrl":"https://mangadex.org","lang":"fa","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":683661227,"baseUrl":"https://mangadex.org","lang":"pl","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":417850874,"baseUrl":"https://mangadex.org","lang":"pt-br","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":1027115198,"baseUrl":"https://mangadex.org","lang":"pt","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":399589398,"baseUrl":"https://mangadex.org","lang":"ro","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":367421943,"baseUrl":"https://mangadex.org","lang":"ru","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":254140838,"baseUrl":"https://mangadex.org","lang":"sh","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":823535267,"baseUrl":"https://mangadex.org","lang":"es-419","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":736630443,"baseUrl":"https://mangadex.org","lang":"es","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":146351677,"baseUrl":"https://mangadex.org","lang":"sv","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":739930809,"baseUrl":"https://mangadex.org","lang":"ta","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":385031783,"baseUrl":"https://mangadex.org","lang":"th","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":1008587213,"baseUrl":"https://mangadex.org","lang":"tr","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":778357609,"baseUrl":"https://mangadex.org","lang":"uk","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaDex","id":88174952,"baseUrl":"https://mangadex.org","lang":"vi","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Asura Scans","id":524070078,"baseUrl":"https://asuratoon.com/","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-asurascans.png","dateFormat":"MMM d, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"KomikLab Scans","id":932554594,"baseUrl":"https://komiklab.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-komiklab.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Azure Scans","id":316512590,"baseUrl":"https://azuremanga.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-azurescans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Cosmic Scans","id":938687459,"baseUrl":"https://cosmicscans.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-cosmicscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"CosmicScans.id","id":1053293978,"baseUrl":"https://cosmicscans.id","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-cosmicscansid.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Dojing.net","id":725568407,"baseUrl":"https://dojing.net","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-dojingnet.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"DuniaKomik.id","id":326969052,"baseUrl":"https://duniakomik.id","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-duniakomikid.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Gecenin Lordu","id":622207049,"baseUrl":"https://geceninlordu.com","lang":"tr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-geceninlordu.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Infernal Void Scans","id":460393112,"baseUrl":"https://void-scans.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-infernalvoidscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"KataKomik","id":61302571,"baseUrl":"https://katakomik.online","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-katakomik.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Kanzenin","id":729954705,"baseUrl":"https://kanzenin.xyz","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-kanzenin.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Komik Station","id":866615506,"baseUrl":"https://komikstation.co","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-komikstation.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":false,"hasCloudflare":true,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"KomikMama","id":148959602,"baseUrl":"https://komikmama.co","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-komikmama.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"KumaPoi","id":855502386,"baseUrl":"https://kumapoi.club","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-kumapoi.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":true,"hasCloudflare":true,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Komiku.com","id":869906392,"baseUrl":"https://komiku.com","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-komikucom.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Legacy Scans","id":310973833,"baseUrl":"https://legacy-scans.com","lang":"fr","typeSource":"","iconUrl":"","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Magus Manga","id":487156426,"baseUrl":"https://magusmanga.com","lang":"ar","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-ar-magusmanga.png","dateFormat":"MMMMM d, yyyy","dateFormatLocale":"ar","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Manga Indo.me","id":425166803,"baseUrl":"https://mangaindo.me","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-mangaindome.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Mangacim","id":642410916,"baseUrl":"https://www.mangacim.com","lang":"tr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-mangacim.png","dateFormat":"MMM d, yyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaTale","id":343986734,"baseUrl":"https://mangatale.co","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-mangatale.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaWT","id":1014190199,"baseUrl":"https://mangawt.com","lang":"tr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-mangawt.png","dateFormat":"MMM d, yyyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Manhwax","id":188130307,"baseUrl":"https://manhwax.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-manhwax.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MELOKOMIK","id":532392938,"baseUrl":"https://melokomik.xyz","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-melokomik.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Mihentai","id":59058359,"baseUrl":"https://mihentai.com","lang":"all","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mihentai.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Mundo Mangá-Kun","id":763538681,"baseUrl":"https://mundomangakun.com.br","lang":"pt-BR","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-mundomangakun.png","dateFormat":"MMMMM dd, yyyy","dateFormatLocale":"pt-BR","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Origami Orpheans","id":827249516,"baseUrl":"https://origami-orpheans.com.br","lang":"pt-BR","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-origamiorpheans.png","dateFormat":"MMMMM dd, yyyy","dateFormatLocale":"pt-BR","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"PhenixScans","id":984162065,"baseUrl":"https://phenixscans.fr","lang":"fr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-phenixscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"fr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Pi Scans","id":548699583,"baseUrl":"https://piscans.in","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-piscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Raiki Scan","id":550138305,"baseUrl":"https://raikiscan.com","lang":"es","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-es-raikiscan.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Raven Scans","id":299682436,"baseUrl":"https://ravenscans.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-ravenscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Shadow Mangas","id":229424731,"baseUrl":"https://shadowmangas.com","lang":"es","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-es-shadowmangas.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"es","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Surya Scans","id":935389321,"baseUrl":"https://suryascans.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-suryascans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Sushi-Scans","id":1036140988,"baseUrl":"https://sushiscan.fr","lang":"fr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-sushiscans.png","dateFormat":"MMMM d, yyyy","dateFormatLocale":"fr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Sushi-Scan","id":972784612,"baseUrl":"https://sushiscan.net","lang":"fr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-sushiscan.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"fr","isNsfw":false,"hasCloudflare":true,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Tarot Scans","id":347606260,"baseUrl":"https://www.tarotscans.com","lang":"tr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-tarotscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"TukangKomik","id":884904192,"baseUrl":"https://tukangkomik.id","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-tukangkomik.png","dateFormat":"MMM d, yyyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"TurkToon","id":579681001,"baseUrl":"https://turktoon.com","lang":"tr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-turktoon.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Uzay Manga","id":762273201,"baseUrl":"https://uzaymanga.com","lang":"tr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-uzaymanga.png","dateFormat":"MMM d, yyyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"xCaliBR Scans","id":699314250,"baseUrl":"https://xcalibrscans.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-xcalibrscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Scan VF","id":929253523,"baseUrl":"https://www.scan-vf.net","lang":"fr","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-scanvf.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Komikid","id":400330220,"baseUrl":"https://www.komikid.com","lang":"id","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-komikid.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaID","id":181458486,"baseUrl":"https://mangaid.click","lang":"id","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-mangaid.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Jpmangas","id":1009609900,"baseUrl":"https://jpmangas.cc","lang":"fr","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-jpmangas.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"مانجا اون لاين","id":19018595,"baseUrl":"https://onma.top","lang":"ar","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-ar-onma.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Read Comics Online","id":1021546729,"baseUrl":"https://readcomicsonline.ru","lang":"en","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-readcomicsonline.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Lelscan-VF","id":529915550,"baseUrl":"https://www.lelscanvf.cc/","lang":"fr","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-lelscanvf.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Manga-FR","id":410779276,"baseUrl":"https://manga-fr.me","lang":"fr","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-mangafr.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"YugenMangas","id":719565854,"baseUrl":"https://yugenmangas.net","lang":"es","typeSource":"heancms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-es-yugenmangas.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/heancms/heancms-v0.0.11.dart","apiUrl":"https://api.yugenmangas.net","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"OmegaScans","id":555665028,"baseUrl":"https://omegascans.org","lang":"en","typeSource":"heancms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-omegascans.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/heancms/heancms-v0.0.11.dart","apiUrl":"https://api.omegascans.org","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"MangaHere","id":434984458,"baseUrl":"http://www.mangahere.cc","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangahere.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/en/mangahere/mangahere-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.21"},{"name":"Bato.to","id":108983442,"baseUrl":"https://bato.to","lang":"all","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":219967156,"baseUrl":"https://bato.to","lang":"en","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":946539390,"baseUrl":"https://bato.to","lang":"ar","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1009090494,"baseUrl":"https://bato.to","lang":"bg","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":49344864,"baseUrl":"https://bato.to","lang":"zh","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":413792936,"baseUrl":"https://bato.to","lang":"cs","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":127120581,"baseUrl":"https://bato.to","lang":"da","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":897709680,"baseUrl":"https://bato.to","lang":"nl","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":454148350,"baseUrl":"https://bato.to","lang":"fil","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":174179665,"baseUrl":"https://bato.to","lang":"fi","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":318824497,"baseUrl":"https://bato.to","lang":"fr","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1030715262,"baseUrl":"https://bato.to","lang":"de","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":395270492,"baseUrl":"https://bato.to","lang":"el","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":714199973,"baseUrl":"https://bato.to","lang":"he","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":596730405,"baseUrl":"https://bato.to","lang":"hi","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1062815490,"baseUrl":"https://bato.to","lang":"hu","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":551583074,"baseUrl":"https://bato.to","lang":"id","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":627608115,"baseUrl":"https://bato.to","lang":"it","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":709143604,"baseUrl":"https://bato.to","lang":"ja","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":42724933,"baseUrl":"https://bato.to","lang":"ko","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":900155911,"baseUrl":"https://bato.to","lang":"ms","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":945309998,"baseUrl":"https://bato.to","lang":"pl","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":791127366,"baseUrl":"https://bato.to","lang":"pt","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":364027455,"baseUrl":"https://bato.to","lang":"pt-br","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":604327151,"baseUrl":"https://bato.to","lang":"ro","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1057708733,"baseUrl":"https://bato.to","lang":"ru","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":106846058,"baseUrl":"https://bato.to","lang":"es","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":994364326,"baseUrl":"https://bato.to","lang":"es-419","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":214830540,"baseUrl":"https://bato.to","lang":"sv","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":375150025,"baseUrl":"https://bato.to","lang":"th","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":975805389,"baseUrl":"https://bato.to","lang":"tr","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":159356975,"baseUrl":"https://bato.to","lang":"uk","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":719702196,"baseUrl":"https://bato.to","lang":"vi","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":605330389,"baseUrl":"https://bato.to","lang":"af","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":500354556,"baseUrl":"https://bato.to","lang":"sq","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":364708326,"baseUrl":"https://bato.to","lang":"am","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":579132190,"baseUrl":"https://bato.to","lang":"hy","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":704228914,"baseUrl":"https://bato.to","lang":"az","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":465187235,"baseUrl":"https://bato.to","lang":"be","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":996023306,"baseUrl":"https://bato.to","lang":"bn","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":240943151,"baseUrl":"https://bato.to","lang":"bs","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":716816408,"baseUrl":"https://bato.to","lang":"my","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":539580717,"baseUrl":"https://bato.to","lang":"km","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":227037230,"baseUrl":"https://bato.to","lang":"ca","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":179733992,"baseUrl":"https://bato.to","lang":"ceb","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":419966767,"baseUrl":"https://bato.to","lang":"zh-hk","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":775604375,"baseUrl":"https://bato.to","lang":"zh-tw","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":741957110,"baseUrl":"https://bato.to","lang":"hr","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":65918010,"baseUrl":"https://bato.to","lang":"en-us","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":48306365,"baseUrl":"https://bato.to","lang":"eo","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":591213520,"baseUrl":"https://bato.to","lang":"et","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":208056920,"baseUrl":"https://bato.to","lang":"fo","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":304199459,"baseUrl":"https://bato.to","lang":"ka","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":281640882,"baseUrl":"https://bato.to","lang":"gn","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":94882230,"baseUrl":"https://bato.to","lang":"gu","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":218756163,"baseUrl":"https://bato.to","lang":"ht","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":683264032,"baseUrl":"https://bato.to","lang":"ha","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":461776450,"baseUrl":"https://bato.to","lang":"is","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":508086706,"baseUrl":"https://bato.to","lang":"ig","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":73117126,"baseUrl":"https://bato.to","lang":"ga","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":930639709,"baseUrl":"https://bato.to","lang":"jv","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":530409414,"baseUrl":"https://bato.to","lang":"kn","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":998225990,"baseUrl":"https://bato.to","lang":"kk","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1041723980,"baseUrl":"https://bato.to","lang":"ku","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":126099954,"baseUrl":"https://bato.to","lang":"ky","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":887942732,"baseUrl":"https://bato.to","lang":"lo","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":842729597,"baseUrl":"https://bato.to","lang":"lv","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":634440809,"baseUrl":"https://bato.to","lang":"lt","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":180153330,"baseUrl":"https://bato.to","lang":"lb","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":954223541,"baseUrl":"https://bato.to","lang":"mk","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":90956400,"baseUrl":"https://bato.to","lang":"mg","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":495467192,"baseUrl":"https://bato.to","lang":"ml","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":543265972,"baseUrl":"https://bato.to","lang":"mt","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":707155829,"baseUrl":"https://bato.to","lang":"mi","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":707060384,"baseUrl":"https://bato.to","lang":"mr","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":284683165,"baseUrl":"https://bato.to","lang":"mn","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":984326467,"baseUrl":"https://bato.to","lang":"ne","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":131491491,"baseUrl":"https://bato.to","lang":"no","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":778635885,"baseUrl":"https://bato.to","lang":"ny","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":963992548,"baseUrl":"https://bato.to","lang":"ps","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":679819356,"baseUrl":"https://bato.to","lang":"fa","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":661882861,"baseUrl":"https://bato.to","lang":"rm","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":48526565,"baseUrl":"https://bato.to","lang":"sm","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":175814547,"baseUrl":"https://bato.to","lang":"sr","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":45175594,"baseUrl":"https://bato.to","lang":"sh","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1066078403,"baseUrl":"https://bato.to","lang":"st","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":314138671,"baseUrl":"https://bato.to","lang":"sn","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1034525411,"baseUrl":"https://bato.to","lang":"sd","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":756819764,"baseUrl":"https://bato.to","lang":"si","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1009716343,"baseUrl":"https://bato.to","lang":"sk","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":468154856,"baseUrl":"https://bato.to","lang":"sl","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":601076648,"baseUrl":"https://bato.to","lang":"so","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":713165767,"baseUrl":"https://bato.to","lang":"sw","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":999603530,"baseUrl":"https://bato.to","lang":"tg","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":215668101,"baseUrl":"https://bato.to","lang":"ta","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":349639462,"baseUrl":"https://bato.to","lang":"ti","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":101342233,"baseUrl":"https://bato.to","lang":"to","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":308642475,"baseUrl":"https://bato.to","lang":"tk","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":49360269,"baseUrl":"https://bato.to","lang":"ur","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":110209479,"baseUrl":"https://bato.to","lang":"uz","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":335757198,"baseUrl":"https://bato.to","lang":"yo","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":955608975,"baseUrl":"https://bato.to","lang":"zu","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":98386892,"baseUrl":"https://bato.to","lang":"eu","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":664604703,"baseUrl":"https://bato.to","lang":"pt-PT","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"}] \ No newline at end of file +[{"name":"FR-Scan","id":669019889,"baseUrl":"https://fr-scan.com","lang":"fr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-frscan.png","dateFormat":"MMMM d, yyyy","dateFormatLocale":"fr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"AstralManga","id":1028022993,"baseUrl":"https://astral-manga.fr","lang":"fr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-astralmanga.png","dateFormat":"dd/mm/yyyy","dateFormatLocale":"fr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Akuma no Tenshi","id":556872410,"baseUrl":"https://akumanotenshi.com","lang":"pt-BR","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-akumanotenshi.png","dateFormat":"dd/MM/yyyy","dateFormatLocale":"pt-BR","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Adult Webtoon","id":772321498,"baseUrl":"https://adultwebtoon.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-adultwebtoon.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"ArazNovel","id":966932111,"baseUrl":"https://www.araznovel.com","lang":"tr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-araznovel.png","dateFormat":"d MMMM yyyy","dateFormatLocale":"en","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"BestManga","id":926276360,"baseUrl":"https://bestmanga.club","lang":"ru","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-ru-bestmanga.png","dateFormat":"dd.MM.yyyy","dateFormatLocale":"ru","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Chibi Manga","id":105430403,"baseUrl":"https://www.cmreader.info","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-chibimanga.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"EvaScans","id":439004766,"baseUrl":"https://evascans.com","lang":"tr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-evascans.png","dateFormat":"MMM d, yyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Final Scans","id":477960837,"baseUrl":"https://finalscans.com","lang":"pt-br","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-finalscans.png","dateFormat":"MMMM d, yyyy","dateFormatLocale":"pt-BR","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Glory Manga","id":284318957,"baseUrl":"https://glorymanga.com","lang":"tr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-glorymanga.png","dateFormat":"dd/MM/yyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Its Your Right Manhua","id":71580703,"baseUrl":"https://itsyourightmanhua.com/","lang":"en","typeSource":"madara","iconUrl":"","dateFormat":"MMMM d, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Kami Sama Explorer","id":797019242,"baseUrl":"https://leitor.kamisama.com.br","lang":"pt-br","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-kamisamaexplorer.png","dateFormat":"dd 'de' MMMM 'de' yyyy","dateFormatLocale":"pt-BR","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"KSGroupScans","id":374902680,"baseUrl":"https://ksgroupscans.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-ksgroupscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"LHTranslation","id":21247797,"baseUrl":"https://lhtranslation.net","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-lhtranslation.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Lolicon","id":526980015,"baseUrl":"https://lolicon.mobi","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-lolicon.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaVisa","id":433907810,"baseUrl":"https://mangavisa.com","lang":"en","typeSource":"madara","iconUrl":"","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Manga District","id":281100270,"baseUrl":"https://mangadistrict.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangadistrict.png","dateFormat":"MMMM d, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaFreak.online","id":223793266,"baseUrl":"https://mangafreak.online","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangafreakonline.png","dateFormat":"d MMMM، yyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaGreat","id":1054806605,"baseUrl":"https://mangagreat.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangagreat.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Manga Read","id":256879643,"baseUrl":"https://mangaread.co","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangaread.png","dateFormat":"yyyy-MM-dd","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaRolls","id":720109919,"baseUrl":"https://mangarolls.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangarolls.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Manga Şehri","id":865354788,"baseUrl":"https://mangasehri.com","lang":"tr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-mangasehri.png","dateFormat":"dd/MM/yyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Mangasushi","id":224429716,"baseUrl":"https://mangasushi.org","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangasushi.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Manhwa68","id":1002141127,"baseUrl":"https://manhwa68.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-manhwa68.png","dateFormat":"MMMM d, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Milftoon","id":381914974,"baseUrl":"https://milftoon.xxx","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-milftoon.png","dateFormat":"d MMMM, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"NovelCrow","id":768834856,"baseUrl":"https://novelcrow.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-novelcrow.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Rio2 Manga","id":110090511,"baseUrl":"https://rio2manga.com","lang":"en","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-rio2manga.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Romantik Manga","id":944131896,"baseUrl":"https://romantikmanga.com","lang":"tr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-romantikmanga.png","dateFormat":"MMM d, yyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Taurus Fansub","id":1036726988,"baseUrl":"https://taurusfansub.com","lang":"es","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-es-taurusfansub.png","dateFormat":"dd/MM/yyy","dateFormatLocale":"es","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Tatakae Scan","id":296744306,"baseUrl":"https://tatakaescan.com","lang":"pt-BR","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-tatakaescan.png","dateFormat":"dd 'de' MMMMM 'de' yyyy","dateFormatLocale":"pt-BR","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Tortuga Ceviri","id":294602572,"baseUrl":"https://tortuga-ceviri.com","lang":"tr","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-tortugaceviri.png","dateFormat":"MMMM d, yyyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Yuri Verso","id":756257030,"baseUrl":"https://yuri.live","lang":"pt-br","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-yuriverso.png","dateFormat":"dd/MM/yyyy","dateFormatLocale":"pt-BR","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Zero Scan","id":637786379,"baseUrl":"https://zeroscan.com.br","lang":"pt-br","typeSource":"madara","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-zeroscan.png","dateFormat":"dd/MM/yyyy","dateFormatLocale":"pt-BR","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":370890607,"baseUrl":"https://comick.app","lang":"all","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":955190069,"baseUrl":"https://comick.app","lang":"en","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":494197461,"baseUrl":"https://comick.app","lang":"pt-br","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":1050814052,"baseUrl":"https://comick.app","lang":"ru","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":380505196,"baseUrl":"https://comick.app","lang":"fr","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":296390197,"baseUrl":"https://comick.app","lang":"es-419","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":242913014,"baseUrl":"https://comick.app","lang":"pl","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":507059585,"baseUrl":"https://comick.app","lang":"tr","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":851891714,"baseUrl":"https://comick.app","lang":"it","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":115169439,"baseUrl":"https://comick.app","lang":"es","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":719269008,"baseUrl":"https://comick.app","lang":"id","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":719759654,"baseUrl":"https://comick.app","lang":"hu","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":301477894,"baseUrl":"https://comick.app","lang":"vi","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":113594984,"baseUrl":"https://comick.app","lang":"zh-hk","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":602472856,"baseUrl":"https://comick.app","lang":"ar","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":401493183,"baseUrl":"https://comick.app","lang":"de","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":752155292,"baseUrl":"https://comick.app","lang":"zh","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":1069764002,"baseUrl":"https://comick.app","lang":"ca","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":678531099,"baseUrl":"https://comick.app","lang":"bg","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":311480598,"baseUrl":"https://comick.app","lang":"th","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":141560456,"baseUrl":"https://comick.app","lang":"fa","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":8261465,"baseUrl":"https://comick.app","lang":"uk","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":565474938,"baseUrl":"https://comick.app","lang":"mn","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":533803532,"baseUrl":"https://comick.app","lang":"ro","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":459976450,"baseUrl":"https://comick.app","lang":"he","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":375702775,"baseUrl":"https://comick.app","lang":"ms","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":737984097,"baseUrl":"https://comick.app","lang":"tl","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":796489006,"baseUrl":"https://comick.app","lang":"ja","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":683471552,"baseUrl":"https://comick.app","lang":"hi","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":778623467,"baseUrl":"https://comick.app","lang":"my","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":1065236294,"baseUrl":"https://comick.app","lang":"ko","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":422767524,"baseUrl":"https://comick.app","lang":"cs","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":678647945,"baseUrl":"https://comick.app","lang":"pt","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":698202010,"baseUrl":"https://comick.app","lang":"nl","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":359879447,"baseUrl":"https://comick.app","lang":"sv","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":532878423,"baseUrl":"https://comick.app","lang":"bn","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":481504622,"baseUrl":"https://comick.app","lang":"no","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":112887841,"baseUrl":"https://comick.app","lang":"lt","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":824905526,"baseUrl":"https://comick.app","lang":"el","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":373675453,"baseUrl":"https://comick.app","lang":"sr","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Comick","id":574420905,"baseUrl":"https://comick.app","lang":"da","typeSource":"comick","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-comickfun.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss'Z'","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/comick/comick-v0.0.11.dart","apiUrl":"https://api.comick.fun","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":202373705,"baseUrl":"https://mangadex.org","lang":"ar","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":860658373,"baseUrl":"https://mangadex.org","lang":"bn","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":722270529,"baseUrl":"https://mangadex.org","lang":"bg","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":978675083,"baseUrl":"https://mangadex.org","lang":"my","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":689496451,"baseUrl":"https://mangadex.org","lang":"ca","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":593575397,"baseUrl":"https://mangadex.org","lang":"zh","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":115179159,"baseUrl":"https://mangadex.org","lang":"zh-hk","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":869144666,"baseUrl":"https://mangadex.org","lang":"cs","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":846142909,"baseUrl":"https://mangadex.org","lang":"da","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":841149659,"baseUrl":"https://mangadex.org","lang":"nl","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":810342358,"baseUrl":"https://mangadex.org","lang":"en","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":309024312,"baseUrl":"https://mangadex.org","lang":"tl","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":164642544,"baseUrl":"https://mangadex.org","lang":"fi","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":545017689,"baseUrl":"https://mangadex.org","lang":"fr","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":110023605,"baseUrl":"https://mangadex.org","lang":"de","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":767687578,"baseUrl":"https://mangadex.org","lang":"el","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":511907642,"baseUrl":"https://mangadex.org","lang":"he","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":986826068,"baseUrl":"https://mangadex.org","lang":"hi","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":128441350,"baseUrl":"https://mangadex.org","lang":"hu","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":183977130,"baseUrl":"https://mangadex.org","lang":"id","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":127887438,"baseUrl":"https://mangadex.org","lang":"it","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":204112007,"baseUrl":"https://mangadex.org","lang":"ja","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":1063442064,"baseUrl":"https://mangadex.org","lang":"kk","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":898061477,"baseUrl":"https://mangadex.org","lang":"ko","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":387646759,"baseUrl":"https://mangadex.org","lang":"la","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":270482698,"baseUrl":"https://mangadex.org","lang":"lt","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":284400542,"baseUrl":"https://mangadex.org","lang":"ms","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":525041874,"baseUrl":"https://mangadex.org","lang":"mn","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":613632949,"baseUrl":"https://mangadex.org","lang":"ne","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":441032670,"baseUrl":"https://mangadex.org","lang":"no","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":693311514,"baseUrl":"https://mangadex.org","lang":"fa","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":683661227,"baseUrl":"https://mangadex.org","lang":"pl","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":417850874,"baseUrl":"https://mangadex.org","lang":"pt-br","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":1027115198,"baseUrl":"https://mangadex.org","lang":"pt","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":399589398,"baseUrl":"https://mangadex.org","lang":"ro","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":367421943,"baseUrl":"https://mangadex.org","lang":"ru","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":254140838,"baseUrl":"https://mangadex.org","lang":"sh","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":823535267,"baseUrl":"https://mangadex.org","lang":"es-419","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":736630443,"baseUrl":"https://mangadex.org","lang":"es","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":146351677,"baseUrl":"https://mangadex.org","lang":"sv","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":739930809,"baseUrl":"https://mangadex.org","lang":"ta","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":385031783,"baseUrl":"https://mangadex.org","lang":"th","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":1008587213,"baseUrl":"https://mangadex.org","lang":"tr","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":778357609,"baseUrl":"https://mangadex.org","lang":"uk","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaDex","id":88174952,"baseUrl":"https://mangadex.org","lang":"vi","typeSource":"mangadex","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mangadex.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss+SSS","dateFormatLocale":"en_Us","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/mangadex/mangadex-v0.0.13.dart","apiUrl":"https://api.mangadex.org","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Asura Scans","id":524070078,"baseUrl":"https://asuratoon.com/","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-asurascans.png","dateFormat":"MMM d, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"KomikLab Scans","id":932554594,"baseUrl":"https://komiklab.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-komiklab.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Azure Scans","id":316512590,"baseUrl":"https://azuremanga.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-azurescans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Cosmic Scans","id":938687459,"baseUrl":"https://cosmicscans.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-cosmicscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"CosmicScans.id","id":1053293978,"baseUrl":"https://cosmicscans.id","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-cosmicscansid.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Dojing.net","id":725568407,"baseUrl":"https://dojing.net","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-dojingnet.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"DuniaKomik.id","id":326969052,"baseUrl":"https://duniakomik.id","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-duniakomikid.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Gecenin Lordu","id":622207049,"baseUrl":"https://geceninlordu.com","lang":"tr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-geceninlordu.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Infernal Void Scans","id":460393112,"baseUrl":"https://void-scans.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-infernalvoidscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"KataKomik","id":61302571,"baseUrl":"https://katakomik.online","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-katakomik.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Kanzenin","id":729954705,"baseUrl":"https://kanzenin.xyz","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-kanzenin.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Komik Station","id":866615506,"baseUrl":"https://komikstation.co","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-komikstation.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":false,"hasCloudflare":true,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"KomikMama","id":148959602,"baseUrl":"https://komikmama.co","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-komikmama.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"KumaPoi","id":855502386,"baseUrl":"https://kumapoi.club","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-kumapoi.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":true,"hasCloudflare":true,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Komiku.com","id":869906392,"baseUrl":"https://komiku.com","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-komikucom.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Legacy Scans","id":310973833,"baseUrl":"https://legacy-scans.com","lang":"fr","typeSource":"","iconUrl":"","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Magus Manga","id":487156426,"baseUrl":"https://magusmanga.com","lang":"ar","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-ar-magusmanga.png","dateFormat":"MMMMM d, yyyy","dateFormatLocale":"ar","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Manga Indo.me","id":425166803,"baseUrl":"https://mangaindo.me","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-mangaindome.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Mangacim","id":642410916,"baseUrl":"https://www.mangacim.com","lang":"tr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-mangacim.png","dateFormat":"MMM d, yyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaTale","id":343986734,"baseUrl":"https://mangatale.co","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-mangatale.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaWT","id":1014190199,"baseUrl":"https://mangawt.com","lang":"tr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-mangawt.png","dateFormat":"MMM d, yyyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Manhwax","id":188130307,"baseUrl":"https://manhwax.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-manhwax.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MELOKOMIK","id":532392938,"baseUrl":"https://melokomik.xyz","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-melokomik.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"id","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Mihentai","id":59058359,"baseUrl":"https://mihentai.com","lang":"all","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-mihentai.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Mundo Mangá-Kun","id":763538681,"baseUrl":"https://mundomangakun.com.br","lang":"pt-BR","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-mundomangakun.png","dateFormat":"MMMMM dd, yyyy","dateFormatLocale":"pt-BR","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Origami Orpheans","id":827249516,"baseUrl":"https://origami-orpheans.com.br","lang":"pt-BR","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-origamiorpheans.png","dateFormat":"MMMMM dd, yyyy","dateFormatLocale":"pt-BR","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"PhenixScans","id":984162065,"baseUrl":"https://phenixscans.fr","lang":"fr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-phenixscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"fr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Pi Scans","id":548699583,"baseUrl":"https://piscans.in","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-piscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Raiki Scan","id":550138305,"baseUrl":"https://raikiscan.com","lang":"es","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-es-raikiscan.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Raven Scans","id":299682436,"baseUrl":"https://ravenscans.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-ravenscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Shadow Mangas","id":229424731,"baseUrl":"https://shadowmangas.com","lang":"es","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-es-shadowmangas.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"es","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Surya Scans","id":935389321,"baseUrl":"https://suryascans.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-suryascans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Sushi-Scans","id":1036140988,"baseUrl":"https://sushiscan.fr","lang":"fr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-sushiscans.png","dateFormat":"MMMM d, yyyy","dateFormatLocale":"fr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Sushi-Scan","id":972784612,"baseUrl":"https://sushiscan.net","lang":"fr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-sushiscan.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"fr","isNsfw":false,"hasCloudflare":true,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Tarot Scans","id":347606260,"baseUrl":"https://www.tarotscans.com","lang":"tr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-tarotscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"TukangKomik","id":884904192,"baseUrl":"https://tukangkomik.id","lang":"id","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-tukangkomik.png","dateFormat":"MMM d, yyyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"TurkToon","id":579681001,"baseUrl":"https://turktoon.com","lang":"tr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-turktoon.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Uzay Manga","id":762273201,"baseUrl":"https://uzaymanga.com","lang":"tr","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-tr-uzaymanga.png","dateFormat":"MMM d, yyyy","dateFormatLocale":"tr","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"xCaliBR Scans","id":699314250,"baseUrl":"https://xcalibrscans.com","lang":"en","typeSource":"","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-xcalibrscans.png","dateFormat":"MMMM dd, yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mangareader/mangareader-v0.0.22.dart","apiUrl":"","version":"0.0.22","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Scan VF","id":929253523,"baseUrl":"https://www.scan-vf.net","lang":"fr","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-scanvf.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Komikid","id":400330220,"baseUrl":"https://www.komikid.com","lang":"id","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-komikid.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaID","id":181458486,"baseUrl":"https://mangaid.click","lang":"id","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-id-mangaid.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Jpmangas","id":1009609900,"baseUrl":"https://jpmangas.cc","lang":"fr","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-jpmangas.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"مانجا اون لاين","id":19018595,"baseUrl":"https://onma.top","lang":"ar","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-ar-onma.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Read Comics Online","id":1021546729,"baseUrl":"https://readcomicsonline.ru","lang":"en","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-readcomicsonline.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Lelscan-VF","id":529915550,"baseUrl":"https://www.lelscanvf.cc/","lang":"fr","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-lelscanvf.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Manga-FR","id":410779276,"baseUrl":"https://manga-fr.me","lang":"fr","typeSource":"mmrcms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-mangafr.png","dateFormat":"d MMM. yyyy","dateFormatLocale":"en_US","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart","apiUrl":"","version":"0.0.13","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"YugenMangas","id":719565854,"baseUrl":"https://yugenmangas.lat","lang":"es","typeSource":"heancms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-es-yugenmangas.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/heancms/heancms-v0.0.11.dart","apiUrl":"https://api.yugenmangas.lat","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"OmegaScans","id":555665028,"baseUrl":"https://omegascans.org","lang":"en","typeSource":"heancms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-omegascans.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/heancms/heancms-v0.0.11.dart","apiUrl":"https://api.omegascans.org","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Reaper Scans","id":946317300,"baseUrl":"https://reaperscans.net","lang":"pt-BR","typeSource":"heancms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-BR-reaperscans.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/heancms/heancms-v0.0.11.dart","apiUrl":"https://api.reaperscans.net","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Perf Scan","id":452473272,"baseUrl":"https://perf-scan.fr","lang":"fr","typeSource":"heancms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-fr-perfscan.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/heancms/heancms-v0.0.11.dart","apiUrl":"https://api.perf-scan.fr","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Glorious Scan","id":876730998,"baseUrl":"https://gloriousscan.com","lang":"pt-BR","typeSource":"heancms","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-pt-BR-gloriousscan.png","dateFormat":"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/heancms/heancms-v0.0.11.dart","apiUrl":"https://api.gloriousscan.com","version":"0.0.11","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"MangaHere","id":434984458,"baseUrl":"http://www.mangahere.cc","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-en-mangahere.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/en/mangahere/mangahere-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.5"},{"name":"Bato.to","id":108983442,"baseUrl":"https://bato.to","lang":"all","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":219967156,"baseUrl":"https://bato.to","lang":"en","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":946539390,"baseUrl":"https://bato.to","lang":"ar","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1009090494,"baseUrl":"https://bato.to","lang":"bg","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":49344864,"baseUrl":"https://bato.to","lang":"zh","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":413792936,"baseUrl":"https://bato.to","lang":"cs","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":127120581,"baseUrl":"https://bato.to","lang":"da","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":897709680,"baseUrl":"https://bato.to","lang":"nl","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":454148350,"baseUrl":"https://bato.to","lang":"fil","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":174179665,"baseUrl":"https://bato.to","lang":"fi","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":318824497,"baseUrl":"https://bato.to","lang":"fr","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1030715262,"baseUrl":"https://bato.to","lang":"de","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":395270492,"baseUrl":"https://bato.to","lang":"el","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":714199973,"baseUrl":"https://bato.to","lang":"he","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":596730405,"baseUrl":"https://bato.to","lang":"hi","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1062815490,"baseUrl":"https://bato.to","lang":"hu","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":551583074,"baseUrl":"https://bato.to","lang":"id","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":627608115,"baseUrl":"https://bato.to","lang":"it","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":709143604,"baseUrl":"https://bato.to","lang":"ja","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":42724933,"baseUrl":"https://bato.to","lang":"ko","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":900155911,"baseUrl":"https://bato.to","lang":"ms","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":945309998,"baseUrl":"https://bato.to","lang":"pl","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":791127366,"baseUrl":"https://bato.to","lang":"pt","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":364027455,"baseUrl":"https://bato.to","lang":"pt-br","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":604327151,"baseUrl":"https://bato.to","lang":"ro","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1057708733,"baseUrl":"https://bato.to","lang":"ru","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":106846058,"baseUrl":"https://bato.to","lang":"es","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":994364326,"baseUrl":"https://bato.to","lang":"es-419","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":214830540,"baseUrl":"https://bato.to","lang":"sv","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":375150025,"baseUrl":"https://bato.to","lang":"th","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":975805389,"baseUrl":"https://bato.to","lang":"tr","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":159356975,"baseUrl":"https://bato.to","lang":"uk","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":719702196,"baseUrl":"https://bato.to","lang":"vi","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":605330389,"baseUrl":"https://bato.to","lang":"af","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":500354556,"baseUrl":"https://bato.to","lang":"sq","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":364708326,"baseUrl":"https://bato.to","lang":"am","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":579132190,"baseUrl":"https://bato.to","lang":"hy","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":704228914,"baseUrl":"https://bato.to","lang":"az","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":465187235,"baseUrl":"https://bato.to","lang":"be","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":996023306,"baseUrl":"https://bato.to","lang":"bn","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":240943151,"baseUrl":"https://bato.to","lang":"bs","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":716816408,"baseUrl":"https://bato.to","lang":"my","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":539580717,"baseUrl":"https://bato.to","lang":"km","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":227037230,"baseUrl":"https://bato.to","lang":"ca","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":179733992,"baseUrl":"https://bato.to","lang":"ceb","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":419966767,"baseUrl":"https://bato.to","lang":"zh-hk","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":775604375,"baseUrl":"https://bato.to","lang":"zh-tw","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":741957110,"baseUrl":"https://bato.to","lang":"hr","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":65918010,"baseUrl":"https://bato.to","lang":"en-us","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":48306365,"baseUrl":"https://bato.to","lang":"eo","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":591213520,"baseUrl":"https://bato.to","lang":"et","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":208056920,"baseUrl":"https://bato.to","lang":"fo","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":304199459,"baseUrl":"https://bato.to","lang":"ka","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":281640882,"baseUrl":"https://bato.to","lang":"gn","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":94882230,"baseUrl":"https://bato.to","lang":"gu","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":218756163,"baseUrl":"https://bato.to","lang":"ht","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":683264032,"baseUrl":"https://bato.to","lang":"ha","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":461776450,"baseUrl":"https://bato.to","lang":"is","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":508086706,"baseUrl":"https://bato.to","lang":"ig","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":73117126,"baseUrl":"https://bato.to","lang":"ga","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":930639709,"baseUrl":"https://bato.to","lang":"jv","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":530409414,"baseUrl":"https://bato.to","lang":"kn","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":998225990,"baseUrl":"https://bato.to","lang":"kk","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1041723980,"baseUrl":"https://bato.to","lang":"ku","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":126099954,"baseUrl":"https://bato.to","lang":"ky","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":887942732,"baseUrl":"https://bato.to","lang":"lo","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":842729597,"baseUrl":"https://bato.to","lang":"lv","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":634440809,"baseUrl":"https://bato.to","lang":"lt","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":180153330,"baseUrl":"https://bato.to","lang":"lb","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":954223541,"baseUrl":"https://bato.to","lang":"mk","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":90956400,"baseUrl":"https://bato.to","lang":"mg","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":495467192,"baseUrl":"https://bato.to","lang":"ml","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":543265972,"baseUrl":"https://bato.to","lang":"mt","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":707155829,"baseUrl":"https://bato.to","lang":"mi","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":707060384,"baseUrl":"https://bato.to","lang":"mr","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":284683165,"baseUrl":"https://bato.to","lang":"mn","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":984326467,"baseUrl":"https://bato.to","lang":"ne","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":131491491,"baseUrl":"https://bato.to","lang":"no","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":778635885,"baseUrl":"https://bato.to","lang":"ny","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":963992548,"baseUrl":"https://bato.to","lang":"ps","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":679819356,"baseUrl":"https://bato.to","lang":"fa","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":661882861,"baseUrl":"https://bato.to","lang":"rm","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":48526565,"baseUrl":"https://bato.to","lang":"sm","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":175814547,"baseUrl":"https://bato.to","lang":"sr","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":45175594,"baseUrl":"https://bato.to","lang":"sh","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1066078403,"baseUrl":"https://bato.to","lang":"st","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":314138671,"baseUrl":"https://bato.to","lang":"sn","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1034525411,"baseUrl":"https://bato.to","lang":"sd","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":756819764,"baseUrl":"https://bato.to","lang":"si","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":1009716343,"baseUrl":"https://bato.to","lang":"sk","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":468154856,"baseUrl":"https://bato.to","lang":"sl","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":601076648,"baseUrl":"https://bato.to","lang":"so","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":713165767,"baseUrl":"https://bato.to","lang":"sw","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":999603530,"baseUrl":"https://bato.to","lang":"tg","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":215668101,"baseUrl":"https://bato.to","lang":"ta","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":349639462,"baseUrl":"https://bato.to","lang":"ti","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":101342233,"baseUrl":"https://bato.to","lang":"to","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":308642475,"baseUrl":"https://bato.to","lang":"tk","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":49360269,"baseUrl":"https://bato.to","lang":"ur","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":110209479,"baseUrl":"https://bato.to","lang":"uz","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":335757198,"baseUrl":"https://bato.to","lang":"yo","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":955608975,"baseUrl":"https://bato.to","lang":"zu","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":98386892,"baseUrl":"https://bato.to","lang":"eu","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"},{"name":"Bato.to","id":664604703,"baseUrl":"https://bato.to","lang":"pt-PT","typeSource":"bato.to","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/icons/mangayomi-all-batoto.png","dateFormat":"MMM dd,yyyy","dateFormatLocale":"en","isNsfw":true,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/src/all/batoto/batoto-v0.0.12.dart","apiUrl":"","version":"0.0.12","isManga":true,"isFullData":false,"appMinVerReq":"0.0.43"}] \ No newline at end of file diff --git a/manga/multisrc/heancms/heancms-v0.0.11.dart b/manga/multisrc/heancms/heancms-v0.0.11.dart deleted file mode 100644 index 2ef80278..00000000 --- a/manga/multisrc/heancms/heancms-v0.0.11.dart +++ /dev/null @@ -1,203 +0,0 @@ -import 'dart:convert'; -import 'package:bridge_lib/bridge_lib.dart'; - -searchManga(MangaModel manga) async { - final headers = getHeader(manga.baseUrl); - final url = "${manga.apiUrl}/series/search"; - final body = {"term": manga.query}; - final data = {"url": url, "headers": headers, "body": body}; - final res = await MBridge.http(json.encode(data), 1); - if (res.isEmpty) { - return manga; - } - List jsonList = []; - List names = []; - List urls = []; - List images = []; - if (res.startsWith("{")) { - jsonList = MBridge.jsonPathToList(res, r'$.data[*]', 0); - } else { - jsonList = MBridge.jsonDecodeToList(res,0); - } - for (var a in jsonList) { - final thumbnail = MBridge.getMapValue(a, "thumbnail", 0); - if (thumbnail.startsWith("https://")) { - images.add(thumbnail); - } else { - images.add("${manga.apiUrl}/cover/$thumbnail"); - } - names.add(MBridge.getMapValue(a, "title", 0)); - final seriesSlug = MBridge.regExp( - MBridge.getMapValue(a, "series_slug", 0), "-\\d+", "", 0, 0); - urls.add("/series/$seriesSlug"); - } - manga.urls = urls; - manga.images = images; - manga.names = names; - return manga; -} - -getPopularManga(MangaModel manga) async { - final headers = getHeader(manga.baseUrl); - final url = "${manga.apiUrl}/series/querysearch"; - final body = { - "page": manga.page, - "order": "desc", - "order_by": "total_views", - "series_status": "Ongoing", - "series_type": "Comic" - }; - final data = { - "url": url, - "headers": headers, - "sourceId": manga.sourceId, - "body": body - }; - final res = await MBridge.http(json.encode(data), 1); - if (res.isEmpty) { - return manga; - } - List jsonList = []; - List names = []; - List urls = []; - List images = []; - if (res.startsWith("{")) { - jsonList = MBridge.jsonPathToList(res, r'$.data[*]', 0); - } else { - jsonList = MBridge.jsonDecodeToList(res,0); - } - for (var a in jsonList) { - final thumbnail = MBridge.getMapValue(a, "thumbnail", 0); - if (thumbnail.startsWith("https://")) { - images.add(thumbnail); - } else { - images.add("${manga.apiUrl}/cover/$thumbnail"); - } - names.add(MBridge.getMapValue(a, "title", 0)); - final seriesSlug = MBridge.regExp( - MBridge.getMapValue(a, "series_slug", 0), "-\\d+", "", 0, 0); - urls.add("/series/$seriesSlug"); - } - manga.urls = urls; - manga.images = images; - manga.names = names; - return manga; -} - -getLatestUpdatesManga(MangaModel manga) async { - final headers = getHeader(manga.baseUrl); - final url = "${manga.apiUrl}/series/querysearch"; - final body = { - "page": manga.page, - "order": "desc", - "order_by": "latest", - "series_status": "Ongoing", - "series_type": "Comic" - }; - final data = { - "url": url, - "headers": headers, - "sourceId": manga.sourceId, - "body": body - }; - final res = await MBridge.http(json.encode(data), 1); - if (res.isEmpty) { - return manga; - } - List jsonList = []; - List names = []; - List urls = []; - List images = []; - if (res.startsWith("{")) { - jsonList = MBridge.jsonPathToList(res, r'$.data[*]', 0); - } else { - jsonList = MBridge.jsonDecodeToList(res,0); - } - for (var a in jsonList) { - final thumbnail = MBridge.getMapValue(a, "thumbnail", 0); - if (thumbnail.startsWith("https://")) { - images.add(thumbnail); - } else { - images.add("${manga.apiUrl}/cover/$thumbnail"); - } - names.add(MBridge.getMapValue(a, "title", 0)); - final seriesSlug = MBridge.regExp( - MBridge.getMapValue(a, "series_slug", 0), "-\\d+", "", 0, 0); - urls.add("/series/$seriesSlug"); - } - manga.urls = urls; - manga.images = images; - manga.names = names; - return manga; -} - -getMangaDetail(MangaModel manga) async { - String currentSlug = MBridge.listParse(manga.link.split('/'), 2)[0]; - - final headers = getHeader(manga.baseUrl); - final url = "${manga.apiUrl}/series/$currentSlug"; - final data = {"url": url, "headers": headers}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return manga; - } - manga.author = MBridge.getMapValue(res, "author", 0); - - manga.description = MBridge.getMapValue(res, "description", 0); - manga.genre = - MBridge.jsonPathToString(res, r"$.tags[*].name", "._").split("._"); - - final chapters = MBridge.jsonPathToList(res, r"$.chapters[*]", 0); - List chapterTitles = []; - List chapterUrls = []; - List chapterDates = []; - for (var chapter in chapters) { - final chapterName = MBridge.getMapValue(chapter, "chapter_name", 0); - final chapterSlug = MBridge.getMapValue(chapter, "chapter_slug", 0); - final chapterId = MBridge.getMapValue(chapter, "id", 0); - final createdAt = MBridge.getMapValue(chapter, "created_at", 0); - chapterUrls.add("/series/$currentSlug/$chapterSlug#$chapterId"); - chapterTitles.add(chapterName); - chapterDates.add(createdAt); - } - manga.urls = MBridge.listParse(chapterUrls,5); - manga.names = MBridge.listParse(chapterTitles,5); - manga.chaptersDateUploads = MBridge.listParse( - MBridge.listParseDateTime( - chapterDates, manga.dateFormat, manga.dateFormatLocale), - 5); - return manga; -} - -getChapterUrl(MangaModel manga) async { - String chapterId = MBridge.listParse(manga.link.split('#'), 2)[0]; - - final headers = getHeader(manga.baseUrl); - final url = "${manga.apiUrl}/series/chapter/$chapterId"; - final data = {"url": url, "headers": headers}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return []; - } - final pages = MBridge.jsonPathToList(res, r"$.content.images[*]", 0); - List pageUrls = []; - for (var u in pages) { - final url = u.replaceAll('"', ""); - if (url.startsWith("http")) { - pageUrls.add(url); - } else { - pageUrls.add("${manga.apiUrl}/$url"); - } - } - return pageUrls; -} - -Map getHeader(String url) { - final headers = { - 'Origin': url, - 'Referer': '$url/', - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': 'application/json' - }; - return headers; -} diff --git a/manga/multisrc/heancms/heancms-v0.0.2.dart b/manga/multisrc/heancms/heancms-v0.0.2.dart new file mode 100644 index 00000000..8f4ec583 --- /dev/null +++ b/manga/multisrc/heancms/heancms-v0.0.2.dart @@ -0,0 +1,276 @@ +import 'dart:convert'; +import 'package:bridge_lib/bridge_lib.dart'; + +searchManga(MangaModel manga) async { + final headers = getHeader(manga.baseUrl); + + String res = "".toString(); + if (!useNewQueryEndpoint(manga.source)) { + final url = "${manga.apiUrl}/series/search"; + final body = {"term": manga.query}; + final data = {"url": url, "headers": headers, "body": body}; + res = await MBridge.http('POST', json.encode(data)); + if (res.isEmpty) { + return manga; + } + } else { + final newEndpointUrl = "${manga.apiUrl}/query"; + final newEndpointBody = { + "query_string": manga.query, + "series_status": "All", + "page": manga.page, + "order": "desc", + "order_by": "total_views", + "perPage": "12", + "tags_ids": "[]", + "series_type": "Comic" + }; + final newEndpointData = { + "url": newEndpointUrl, + "headers": headers, + "newEndpointBody": newEndpointBody + }; + res = await MBridge.http('GET', json.encode(newEndpointData)); + if (res.isEmpty) { + return manga; + } + } + + return mangaModelRes(res, manga); +} + +getPopularManga(MangaModel manga) async { + final headers = getHeader(manga.baseUrl); + String res = "".toString(); + if (!useNewQueryEndpoint(manga.source)) { + final url = "${manga.apiUrl}/series/querysearch"; + print(url); + + final body = { + "page": manga.page, + "order": "desc", + "order_by": "total_views", + "series_status": "Ongoing", + "series_type": "Comic" + }; + final data = { + "url": url, + "headers": headers, + "sourceId": manga.sourceId, + "body": body + }; + res = await MBridge.http('POST', json.encode(data)); + } else { + final newEndpointUrl = "${manga.apiUrl}/query"; + final newEndpointBody = { + "query_string": "", + "series_status": "All", + "page": manga.page, + "order": "desc", + "order_by": "total_views", + "perPage": "12", + "tags_ids": "[]", + "series_type": "Comic" + }; + final newEndpointData = { + "url": newEndpointUrl, + "headers": headers, + "sourceId": manga.sourceId, + "body": newEndpointBody + }; + print("sssssssssssssssssssss"); + res = await MBridge.http('GET', json.encode(newEndpointData)); + print(res); + } + if (res.isEmpty) { + return manga; + } + return mangaModelRes(res, manga); +} + +getLatestUpdatesManga(MangaModel manga) async { + final headers = getHeader(manga.baseUrl); + String res = "".toString(); + if (!useNewQueryEndpoint(manga.source)) { + final url = "${manga.apiUrl}/series/querysearch"; + final body = { + "page": manga.page, + "order": "desc", + "order_by": "latest", + "series_status": "Ongoing", + "series_type": "Comic" + }; + final data = { + "url": url, + "headers": headers, + "sourceId": manga.sourceId, + "body": body + }; + res = await MBridge.http('POST', json.encode(data)); + } else { + final newEndpointUrl = "${manga.apiUrl}/query"; + final newEndpointBody = { + "query_string": "", + "series_status": "All", + "page": manga.page, + "order": "desc", + "order_by": "latest", + "perPage": "12", + "tags_ids": "[]", + "series_type": "Comic" + }; + final newEndpointData = { + "url": newEndpointUrl, + "headers": headers, + "sourceId": manga.sourceId, + "body": newEndpointBody + }; + res = await MBridge.http('GET', json.encode(newEndpointData)); + print(res); + } + + if (res.isEmpty) { + return manga; + } + return mangaModelRes(res, manga); +} + +getMangaDetail(MangaModel manga) async { + String currentSlug = manga.link.split('/').last; + + final headers = getHeader(manga.baseUrl); + final url = "${manga.apiUrl}/series/$currentSlug"; + final data = {"url": url, "headers": headers}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return manga; + } + manga.author = MBridge.getMapValue(res, "author"); + + manga.description = MBridge.getMapValue(res, "description"); + manga.genre = + MBridge.jsonPathToString(res, r"$.tags[*].name", "._").split("._"); + + var chapters = []; + if (!useNewQueryEndpoint(manga.source)) { + chapters = json.decode(res)["chapters"]; + } else { + final seasons = json.decode(res)["seasons"].first; + chapters = seasons["chapters"]; + } + List chapterTitles = []; + List chapterUrls = []; + List chapterDates = []; + for (var chapter in chapters) { + final chapterName = chapter["chapter_name"]; + final chapterSlug = chapter["chapter_slug"]; + final chapterId = chapter["id"]; + final createdAt = chapter["created_at"]; + chapterUrls.add("/series/$currentSlug/$chapterSlug#$chapterId"); + chapterTitles.add(chapterName); + chapterDates.add(createdAt); + } + if (!useNewQueryEndpoint(manga.source)) { + manga.urls = chapterUrls.reversed.toList(); + manga.names = chapterTitles.reversed.toList(); + manga.chaptersDateUploads = MBridge.listParseDateTime( + chapterDates, manga.dateFormat, manga.dateFormatLocale) + .reversed + .toList(); + } else { + manga.urls = chapterUrls; + manga.names = chapterTitles; + manga.chaptersDateUploads = MBridge.listParseDateTime( + chapterDates, manga.dateFormat, manga.dateFormatLocale); + } + return manga; +} + +getChapterUrl(MangaModel manga) async { + String res = "".toString(); + final headers = getHeader(manga.baseUrl); + if (!useslugStrategy(manga.source)) { + String chapterId = MBridge.substringAfter(manga.link, '#'); + + final url = "${manga.apiUrl}/series/chapter/$chapterId"; + final data = {"url": url, "headers": headers}; + res = await MBridge.http('GET', json.encode(data)); + } else { + final url = "${manga.baseUrl}${manga.link}"; + final data = {"url": url, "headers": headers}; + res = await MBridge.http('GET', json.encode(data)); + List pageUrls = []; + var imagesRes = MBridge.querySelectorAll(res, + selector: "div.min-h-screen > div.container > p.items-center", + typeElement: 1, + attributes: "", + typeRegExp: 0); + pageUrls = MBridge.xpath(imagesRes.first, '//img/@src'); + + pageUrls.addAll(MBridge.xpath(imagesRes.first, '//img/@data-src')); + + return pageUrls.where((e) => e.isNotEmpty).toList(); + } + + if (res.isEmpty) { + return []; + } + final pages = MBridge.jsonPathToList(res, r"$.content.images[*]", 0); + List pageUrls = []; + for (var u in pages) { + final url = u.replaceAll('"', ""); + if (url.startsWith("http")) { + pageUrls.add(url); + } else { + pageUrls.add("${manga.apiUrl}/$url"); + } + } + return pageUrls; +} + +Map getHeader(String url) { + final headers = { + 'Origin': url, + 'Referer': '$url/', + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': 'application/json' + }; + return headers; +} + +bool useNewQueryEndpoint(String sourceName) { + List sources = ["YugenMangas", "Perf Scan", "Reaper Scans"]; + return sources.contains(sourceName); +} + +bool useslugStrategy(String sourceName) { + List sources = ["YugenMangas", "Reaper Scans"]; + return sources.contains(sourceName); +} + +MangaModel mangaModelRes(String res, MangaModel manga) { + var jsonList = []; + List names = []; + List urls = []; + List images = []; + if (res.startsWith("{")) { + jsonList = json.decode(res)["data"]; + } else { + jsonList = json.decode(res); + } + for (var a in jsonList) { + String thumbnail = a["thumbnail"]; + if (thumbnail.startsWith("https://")) { + images.add(thumbnail); + } else { + images.add("${manga.apiUrl}/cover/$thumbnail"); + } + names.add(a["title"]); + final seriesSlug = MBridge.regExp(a["series_slug"], "-\\d+", "", 0, 0); + urls.add("/series/$seriesSlug"); + } + manga.urls = urls; + manga.images = images; + manga.names = names; + return manga; +} diff --git a/manga/multisrc/heancms/sources.dart b/manga/multisrc/heancms/sources.dart index dfe9b913..cb3a5923 100644 --- a/manga/multisrc/heancms/sources.dart +++ b/manga/multisrc/heancms/sources.dart @@ -10,8 +10,8 @@ List get heanCmsSourcesList => _heanCmsSourcesList; List _heanCmsSourcesList = [ Source( name: "YugenMangas", - baseUrl: "https://yugenmangas.net", - apiUrl: "https://api.yugenmangas.net", + baseUrl: "https://yugenmangas.lat", + apiUrl: "https://api.yugenmangas.lat", lang: "es", typeSource: "heancms", isNsfw: true, @@ -32,4 +32,40 @@ List _heanCmsSourcesList = [ version: heancmsVersion, dateFormat: defaultDateFormat, dateFormatLocale: defaultDateFormatLocale), + Source( + name: "Reaper Scans", + baseUrl: "https://reaperscans.net", + apiUrl: "https://api.reaperscans.net", + lang: "pt-BR", + typeSource: "heancms", + isNsfw: true, + iconUrl: getIconUrl("reaperscans", "pt-BR"), + sourceCodeUrl: heancmsSourceCodeUrl, + version: heancmsVersion, + dateFormat: defaultDateFormat, + dateFormatLocale: defaultDateFormatLocale), + Source( + name: "Perf Scan", + baseUrl: "https://perf-scan.fr", + apiUrl: "https://api.perf-scan.fr", + lang: "fr", + typeSource: "heancms", + isNsfw: true, + iconUrl: getIconUrl("perfscan", "fr"), + sourceCodeUrl: heancmsSourceCodeUrl, + version: heancmsVersion, + dateFormat: defaultDateFormat, + dateFormatLocale: defaultDateFormatLocale), + Source( + name: "Glorious Scan", + baseUrl: "https://gloriousscan.com", + apiUrl: "https://api.gloriousscan.com", + lang: "pt-BR", + typeSource: "heancms", + isNsfw: true, + iconUrl: getIconUrl("gloriousscan", "pt-BR"), + sourceCodeUrl: heancmsSourceCodeUrl, + version: heancmsVersion, + dateFormat: defaultDateFormat, + dateFormatLocale: defaultDateFormatLocale), ]; diff --git a/manga/multisrc/madara/madara-v0.0.13.dart b/manga/multisrc/madara/madara-v0.0.2.dart similarity index 51% rename from manga/multisrc/madara/madara-v0.0.13.dart rename to manga/multisrc/madara/madara-v0.0.2.dart index 3290eb12..576a371a 100644 --- a/manga/multisrc/madara/madara-v0.0.13.dart +++ b/manga/multisrc/madara/madara-v0.0.2.dart @@ -3,28 +3,24 @@ import 'package:bridge_lib/bridge_lib.dart'; getPopularManga(MangaModel manga) async { final url = "${manga.baseUrl}/manga/page/${manga.page}/?m_orderby=views"; - final data = {"url": url, "headers": null, "sourceId": manga.sourceId}; - final res = await MBridge.http(json.encode(data), 0); + final data = {"url": url, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(data)); if (res.isEmpty) { return manga; } - manga.urls = MBridge.xpath(res, '//*[@class^="post-title"]/h3/a/@href', '-.') - .split("-."); - String images = - MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@data-src', '-.'); + manga.urls = MBridge.xpath(res, '//*[@class^="post-title"]/h3/a/@href'); + var images = MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@data-src'); if (images.isEmpty) { - images = - MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@data-lazy-src', '-.'); + images = MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@data-lazy-src'); if (images.isEmpty) { - images = MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@srcset', '-.'); + images = MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@srcset'); if (images.isEmpty) { - images = MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@src', '-.'); + images = MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@src'); } } } - manga.images = images.split("-."); - manga.names = - MBridge.xpath(res, '//*[@id^="manga-item"]/a/@title', '-.').split("-."); + manga.images = images; + manga.names = MBridge.xpath(res, '//*[@id^="manga-item"]/a/@title'); return manga; } @@ -75,36 +71,50 @@ getMangaDetail(MangaModel manga) async { } ]; - final datas = { - "url": manga.link, - "headers": null, - "sourceId": manga.sourceId - }; - final res = await MBridge.http(json.encode(datas), 0); + final datas = {"url": manga.link, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(datas)); if (res.isEmpty) { return manga; } - manga.author = - MBridge.querySelectorAll(res, "div.author-content > a", 0, "", 0, 0, ""); - manga.description = MBridge.querySelectorAll( - res, - "div.description-summary div.summary__content, div.summary_content div.post-content_item > h5 + div, div.summary_content div.manga-excerpt, div.sinopsis div.contenedor, .description-summary > p", - 0, - "", - 0, - 0, - ""); - manga.imageUrl = - MBridge.querySelectorAll(res, "div.summary_image img", 2, "", 2, 1, ""); - final mangaId = MBridge.querySelectorAll( - res, "div[id^=manga-chapters-holder]", 3, "data-id", 0, 1, ""); + manga.author = MBridge.querySelectorAll(res, + selector: "div.author-content > a", + typeElement: 0, + attributes: "", + typeRegExp: 0) + .first; + manga.description = MBridge.querySelectorAll(res, + selector: + "div.description-summary div.summary__content, div.summary_content div.post-content_item > h5 + div, div.summary_content div.manga-excerpt, div.sinopsis div.contenedor, .description-summary > p", + typeElement: 0, + attributes: "", + typeRegExp: 0) + .first; + manga.imageUrl = MBridge.querySelectorAll(res, + selector: "div.summary_image img", + typeElement: 2, + attributes: "", + typeRegExp: 2) + .first; + final mangaId = MBridge.querySelectorAll(res, + selector: "div[id^=manga-chapters-holder]", + typeElement: 3, + attributes: "data-id", + typeRegExp: 0) + .first; manga.status = MBridge.parseStatus( - MBridge.querySelectorAll(res, "div.summary-content", 0, "", 0, 2, ""), + MBridge.querySelectorAll(res, + selector: "div.summary-content", + typeElement: 0, + attributes: "", + typeRegExp: 0) + .last, statusList); - manga.genre = - MBridge.querySelectorAll(res, "div.genres-content a", 0, "", 0, 0, "-.") - .split("-."); + manga.genre = MBridge.querySelectorAll(res, + selector: "div.genres-content a", + typeElement: 0, + attributes: "", + typeRegExp: 0); final baseUrl = "${manga.baseUrl}/"; final headers = { @@ -116,7 +126,7 @@ getMangaDetail(MangaModel manga) async { "${baseUrl}wp-admin/admin-ajax.php?action=manga_get_chapters&manga=$mangaId"; final datasP = {"url": url, "headers": headers, "sourceId": manga.sourceId}; - String resP = await MBridge.http(json.encode(datasP), 1); + String resP = await MBridge.http('POST', json.encode(datasP)); if (resP == "400") { final urlP = "${manga.link}ajax/chapters"; final datasP = { @@ -124,32 +134,24 @@ getMangaDetail(MangaModel manga) async { "headers": headers, "sourceId": manga.sourceId }; - resP = await MBridge.http(json.encode(datasP), 1); + resP = await MBridge.http('POST', json.encode(datasP)); } - manga.urls = MBridge.xpath(resP, "//li/a/@href", '-.').split("-."); - List chaptersNames = - MBridge.xpath(resP, "//li/a/text()", '-.').split("-."); + manga.urls = MBridge.xpath(resP, "//li/a/@href"); + var chaptersNames = MBridge.xpath(resP, "//li/a/text()"); - List dateF = - MBridge.xpath(resP, "//li/span/i/text()", '-.').split("-."); + var dateF = MBridge.xpath(resP, "//li/span/i/text()"); if (MBridge.xpath(resP, "//li/a/text()", "").isEmpty) { final resWebview = await MBridge.getHtmlViaWebview(manga.link, "//*[@id='manga-chapters-holder']/div[2]/div/ul/li/a/@href"); manga.urls = MBridge.xpath(resWebview, - "//*[@id='manga-chapters-holder']/div[2]/div/ul/li/a/@href", '-.') - .split("-."); + "//*[@id='manga-chapters-holder']/div[2]/div/ul/li/a/@href"); chaptersNames = MBridge.xpath(resWebview, - "//*[@id='manga-chapters-holder']/div[2]/div/ul/li/a/text()", '-.') - .split("-."); - dateF = MBridge.xpath( - resWebview, - "//*[@id='manga-chapters-holder']/div[2]/div/ul/li/span/i/text()", - '-.') - .split("-."); + "//*[@id='manga-chapters-holder']/div[2]/div/ul/li/a/text()"); + dateF = MBridge.xpath(resWebview, + "//*[@id='manga-chapters-holder']/div[2]/div/ul/li/span/i/text()"); } manga.names = chaptersNames; - List chapterDate = []; if (dateF.length == chaptersNames.length) { manga.chaptersDateUploads = MBridge.listParseDateTime( dateF, manga.dateFormat, manga.dateFormatLocale); @@ -162,7 +164,7 @@ getMangaDetail(MangaModel manga) async { final dateFF = MBridge.listParseDateTime( dateF, manga.dateFormat, manga.dateFormatLocale); - List chapterDate = MBridge.listParse(date.split('--..'), 0); + List chapterDate = date.split('--..'); for (var date in dateFF) { chapterDate.add(date); @@ -173,42 +175,45 @@ getMangaDetail(MangaModel manga) async { } getChapterUrl(MangaModel manga) async { - final datas = { - "url": manga.link, - "headers": null, - "sourceId": manga.sourceId - }; - final res = await MBridge.http(json.encode(datas), 0); + final datas = {"url": manga.link, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(datas)); if (res.isEmpty) { return []; } - final pagesSelectorRes = MBridge.querySelector( - res, - "div.page-break, li.blocks-gallery-item, .reading-content, .text-left img", - 1, - ""); - final imgs = - MBridge.querySelectorAll(pagesSelectorRes, "img", 2, "", 2, 0, '-.') - .split('-.'); - List pageUrls = []; + final pagesSelectorRes = MBridge.querySelectorAll(res, + selector: + "div.page-break, li.blocks-gallery-item, .reading-content, .text-left img", + typeElement: 1, + attributes: "", + typeRegExp: 0) + .first; + final imgs = MBridge.querySelectorAll(pagesSelectorRes, + selector: "img", typeElement: 2, attributes: "", typeRegExp: 2); + var pageUrls = []; if (imgs.length == 1) { - final pages = MBridge.querySelector(res, "#single-pager", 2, ""); + final pages = MBridge.querySelectorAll(res, + selector: "#single-pager", + typeElement: 2, + attributes: "", + typeRegExp: 0) + .first; - final pagesNumber = - MBridge.querySelectorAll(pages, "option", 2, "", 0, 0, '-.') - .split('-.'); + final pagesNumber = MBridge.querySelectorAll(pages, + selector: "option", typeElement: 2, attributes: "", typeRegExp: 0); for (var i = 0; i < pagesNumber.length; i++) { final val = i + 1; if (i.toString().length == 1) { - pageUrls.add( - MBridge.querySelectorAll(pagesSelectorRes, "img", 2, "", 2, 0, "") - .replaceAll("01", '0$val')); + pageUrls.add(MBridge.querySelectorAll(pagesSelectorRes, + selector: "img", typeElement: 2, attributes: "", typeRegExp: 2) + .first + .replaceAll("01", '0$val')); } else { - pageUrls.add( - MBridge.querySelectorAll(pagesSelectorRes, "img", 2, "", 2, 0, "") - .replaceAll("01", val.toString())); + pageUrls.add(MBridge.querySelectorAll(pagesSelectorRes, + selector: "img", typeElement: 2, attributes: "", typeRegExp: 2) + .first + .replaceAll("01", val.toString())); } } } else { @@ -219,59 +224,53 @@ getChapterUrl(MangaModel manga) async { getLatestUpdatesManga(MangaModel manga) async { final url = "${manga.baseUrl}/manga/page/${manga.page}/?m_orderby=latest"; - final datas = {"url": url, "headers": null, "sourceId": manga.sourceId}; - final res = await MBridge.http(json.encode(datas), 0); + final datas = {"url": url, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(datas)); if (res.isEmpty) { return manga; } - manga.urls = MBridge.xpath(res, '//*[@class^="post-title"]/h3/a/@href', '-.') - .split("-."); - String images = - MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@data-src', '-.'); + manga.urls = MBridge.xpath(res, '//*[@class^="post-title"]/h3/a/@href'); + var images = MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@data-src'); if (images.isEmpty) { - images = - MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@data-lazy-src', '-.'); + images = MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@data-lazy-src'); if (images.isEmpty) { - images = MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@srcset', '-.'); + images = MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@srcset'); if (images.isEmpty) { - images = MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@src', '-.'); + images = MBridge.xpath(res, '//*[@id^="manga-item"]/a/img/@src'); } } } - manga.images = images.split("-."); - manga.names = - MBridge.xpath(res, '//*[@id^="manga-item"]/a/@title', '-.').split("-."); + manga.images = images; + manga.names = MBridge.xpath(res, '//*[@id^="manga-item"]/a/@title'); return manga; } searchManga(MangaModel manga) async { final urll = "${manga.baseUrl}/?s=${manga.query}&post_type=wp-manga"; - final datas = {"url": urll, "headers": null, "sourceId": manga.sourceId}; - final res = await MBridge.http(json.encode(datas), 0); + final datas = {"url": urll, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(datas)); if (res.isEmpty) { return manga; } manga.urls = - MBridge.xpath(res, '//*[@class^="tab-thumb c-image-hover"]/a/@href', '-.') - .split("-."); - String images = MBridge.xpath( - res, '//*[@class^="tab-thumb c-image-hover"]/a/img/@data-src', '-.'); + MBridge.xpath(res, '//*[@class^="tab-thumb c-image-hover"]/a/@href'); + var images = MBridge.xpath( + res, '//*[@class^="tab-thumb c-image-hover"]/a/img/@data-src'); if (images.isEmpty) { - images = MBridge.xpath(res, - '//*[@class^="tab-thumb c-image-hover"]/a/img/@data-lazy-src', '-.'); + images = MBridge.xpath( + res, '//*[@class^="tab-thumb c-image-hover"]/a/img/@data-lazy-src'); if (images.isEmpty) { images = MBridge.xpath( - res, '//*[@class^="tab-thumb c-image-hover"]/a/img/@srcset', '-.'); + res, '//*[@class^="tab-thumb c-image-hover"]/a/img/@srcset'); if (images.isEmpty) { images = MBridge.xpath( - res, '//*[@class^="tab-thumb c-image-hover"]/a/img/@src', '-.'); + res, '//*[@class^="tab-thumb c-image-hover"]/a/img/@src'); } } } - manga.images = images.split("-."); - manga.names = MBridge.xpath( - res, '//*[@class^="tab-thumb c-image-hover"]/a/@title', '-.') - .split("-."); + manga.images = images; + manga.names = + MBridge.xpath(res, '//*[@class^="tab-thumb c-image-hover"]/a/@title'); return manga; } diff --git a/manga/multisrc/mangareader/mangareader-v0.0.22.dart b/manga/multisrc/mangareader/mangareader-v0.0.22.dart deleted file mode 100644 index 306e4ff0..00000000 --- a/manga/multisrc/mangareader/mangareader-v0.0.22.dart +++ /dev/null @@ -1,216 +0,0 @@ -import 'dart:convert'; -import 'package:bridge_lib/bridge_lib.dart'; - -getPopularManga(MangaModel manga) async { - final url = - "${manga.baseUrl}${getMangaUrlDirectory(manga.source)}/?page=${manga.page}&order=popular"; - final data = {"url": url, "headers": null, "sourceId": manga.sourceId}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return manga; - } - manga.urls = - MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@href', '._') - .split('._'); - manga.names = - MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@title', '._') - .split('._'); - manga.images = MBridge.xpath( - res, '//*[ @class="imgu" or @class="bsx"]/a/div[1]/img/@src', '._') - .split('._'); - return manga; -} - -getLatestUpdatesManga(MangaModel manga) async { - final url = - "${manga.baseUrl}${getMangaUrlDirectory(manga.source)}/?page=${manga.page}&order=update"; - final data = {"url": url, "headers": null, "sourceId": manga.sourceId}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return manga; - } - manga.urls = - MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@href', '._') - .split('._'); - manga.names = - MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@title', '._') - .split('._'); - manga.images = MBridge.xpath( - res, '//*[ @class="imgu" or @class="bsx"]/a/div[1]/img/@src', '._') - .split('._'); - return manga; -} - -getMangaDetail(MangaModel manga) 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, - } - ]; - - final datas = { - "url": manga.link, - "headers": null, - "sourceId": manga.sourceId - }; - final res = await MBridge.http(json.encode(datas), 0); - - if (res.isEmpty) { - return manga; - } - manga.author = MBridge.xpath( - res, - '//*[@class="imptdt" and contains(text(), "Author") or @class="infotable" and contains(text(), "Author") or @class="infotable" and contains(text(), "Auteur") or @class="fmed" and contains(text(), "Auteur") or @class="infotable" and contains(text(), "Autor")]/text()', - '') - .replaceAll("Autor", "") - .replaceAll("Author", "") - .replaceAll("Auteur", "") - .replaceAll("[Add, ]", ""); - - manga.description = MBridge.querySelectorAll( - res, ".desc, .entry-content[itemprop=description]", 0, "", 0, 0, ""); - - final status = MBridge.xpath( - res, - '//*[@class="imptdt" and contains(text(), "Status") or @class="imptdt" and contains(text(), "Estado") or @class="infotable" and contains(text(), "Status") or @class="infotable" and contains(text(), "Statut") or @class="imptdt" and contains(text(), "Statut")]/text()', - '') - .replaceAll("Status", "") - .replaceAll("Estado", "") - .replaceAll("Statut", ""); - - manga.status = MBridge.parseStatus(status, statusList); - - manga.genre = MBridge.xpath( - res, - '//*[@class="gnr" or @class="mgen" or @class="seriestugenre" ]/a/text()', - "-.") - .split("-."); - manga.urls = MBridge.xpath( - res, - '//*[@class="bxcl" or @class="cl" or @class="chbox" or @class="eph-num" or @id="chapterlist"]/div/a[not(@href="#/chapter-{{number}}")]/@href', - "-.") - .split("-."); - manga.names = MBridge.xpath( - res, - '//*[@class="bxcl" or @class="cl" or @class="chbox" or @class="eph-num" or @id="chapterlist"]/div/a/span[@class="chapternum" and not(text()="Chapter {{number}}") or @class="lch" and not(text()="Chapter {{number}}")]/text()', - "-.") - .split("-."); - - final chaptersDateUploads = MBridge.xpath( - res, - '//*[@class="bxcl" or @class="cl" or @class="chbox" or @class="eph-num" or @id="chapterlist"]/div/a/span[@class="chapterdate" and not(text()="{{date}}")]/text()', - "-.") - .split("-."); - - manga.chaptersDateUploads = MBridge.listParseDateTime( - chaptersDateUploads, manga.dateFormat, manga.dateFormatLocale); - - return manga; -} - -searchManga(MangaModel manga) async { - final url = - "${manga.baseUrl}${getMangaUrlDirectory(manga.source)}/?&title=${manga.query}&page=${manga.page}"; - final data = {"url": url, "headers": null, "sourceId": manga.sourceId}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return manga; - } - manga.urls = - MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@href', '._') - .split('._'); - manga.names = - MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@title', '._') - .split('._'); - manga.images = MBridge.xpath( - res, '//*[ @class="imgu" or @class="bsx"]/a/div[1]/img/@src', '._') - .split('._'); - return manga; -} - -getChapterUrl(MangaModel manga) async { - final datas = { - "url": manga.link, - "headers": null, - "sourceId": manga.sourceId - }; - - final res = await MBridge.http(json.encode(datas), 0); - - if (res.isEmpty) { - return []; - } - if (manga.source == "Sushi-Scans") { - final pages = MBridge.xpath(res, '//*[@id="readerarea"]/p/img/@src', "._._") - .split("._._"); - return pages; - } - List pagesUrl = []; - final pages = MBridge.xpath(res, '//*[@id="readerarea"]/img/@src', "._._") - .split("._._"); - if (pages.length == 1) { - final images = - MBridge.regExp(res, "\"images\"\\s*:\\s*(\\[.*?])", "", 1, 1); - final pages = MBridge.jsonDecodeToList(images, 0); - for (var page in pages) { - pagesUrl.add(page); - } - } else { - return pages; - } - - return pagesUrl; -} - -String getMangaUrlDirectory(String sourceName) { - if (sourceName == "Sushi-Scan") { - return "/catalogue"; - } - return "/manga"; -} diff --git a/manga/multisrc/mangareader/mangareader-v0.0.3.dart b/manga/multisrc/mangareader/mangareader-v0.0.3.dart new file mode 100644 index 00000000..1bbbd1fb --- /dev/null +++ b/manga/multisrc/mangareader/mangareader-v0.0.3.dart @@ -0,0 +1,173 @@ +import 'dart:convert'; +import 'package:bridge_lib/bridge_lib.dart'; + +getPopularManga(MangaModel manga) async { + final url = "${manga.baseUrl}${getMangaUrlDirectory(manga.source)}/?page=${manga.page}&order=popular"; + final data = {"url": url, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return manga; + } + manga.urls = MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@href'); + manga.names = MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@title'); + manga.images = MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/div[1]/img/@src'); + return manga; +} + +getLatestUpdatesManga(MangaModel manga) async { + final url = "${manga.baseUrl}${getMangaUrlDirectory(manga.source)}/?page=${manga.page}&order=update"; + final data = {"url": url, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return manga; + } + manga.urls = MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@href'); + manga.names = MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@title'); + manga.images = MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/div[1]/img/@src'); + return manga; +} + +getMangaDetail(MangaModel manga) 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, + } + ]; + + final datas = {"url": manga.link, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(datas)); + + if (res.isEmpty) { + return manga; + } + manga.author = MBridge.xpath( + res, + '//*[@class="imptdt" and contains(text(), "Author") or @class="infotable" and contains(text(), "Author") or @class="infotable" and contains(text(), "Auteur") or @class="fmed" and contains(text(), "Auteur") or @class="infotable" and contains(text(), "Autor")]/text()', + '') + .first + .replaceAll("Autor", "") + .replaceAll("Author", "") + .replaceAll("Auteur", "") + .replaceAll("[Add, ]", ""); + + manga.description = MBridge.querySelectorAll(res, + selector: ".desc, .entry-content[itemprop=description]", typeElement: 0, attributes: "", typeRegExp: 0) + .first; + + final status = MBridge.xpath( + res, + '//*[@class="imptdt" and contains(text(), "Status") or @class="imptdt" and contains(text(), "Estado") or @class="infotable" and contains(text(), "Status") or @class="infotable" and contains(text(), "Statut") or @class="imptdt" and contains(text(), "Statut")]/text()', + '') + .first + .replaceAll("Status", "") + .replaceAll("Estado", "") + .replaceAll("Statut", ""); + + manga.status = MBridge.parseStatus(status, statusList); + + manga.genre = MBridge.xpath(res, '//*[@class="gnr" or @class="mgen" or @class="seriestugenre" ]/a/text()'); + manga.urls = MBridge.xpath(res, + '//*[@class="bxcl" or @class="cl" or @class="chbox" or @class="eph-num" or @id="chapterlist"]/div/a[not(@href="#/chapter-{{number}}")]/@href'); + manga.names = MBridge.xpath(res, + '//*[@class="bxcl" or @class="cl" or @class="chbox" or @class="eph-num" or @id="chapterlist"]/div/a/span[@class="chapternum" and not(text()="Chapter {{number}}") or @class="lch" and not(text()="Chapter {{number}}")]/text()'); + + final chaptersDateUploads = MBridge.xpath(res, + '//*[@class="bxcl" or @class="cl" or @class="chbox" or @class="eph-num" or @id="chapterlist"]/div/a/span[@class="chapterdate" and not(text()="{{date}}")]/text()'); + + manga.chaptersDateUploads = MBridge.listParseDateTime(chaptersDateUploads, manga.dateFormat, manga.dateFormatLocale); + + return manga; +} + +searchManga(MangaModel manga) async { + final url = "${manga.baseUrl}${getMangaUrlDirectory(manga.source)}/?&title=${manga.query}&page=${manga.page}"; + final data = {"url": url, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return manga; + } + manga.urls = MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@href'); + manga.names = MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/@title'); + manga.images = MBridge.xpath(res, '//*[ @class="imgu" or @class="bsx"]/a/div[1]/img/@src'); + return manga; +} + +getChapterUrl(MangaModel manga) async { + final datas = {"url": manga.link, "sourceId": manga.sourceId}; + + final res = await MBridge.http('GET', json.encode(datas)); + + if (res.isEmpty) { + return []; + } + var pages = []; + List pagesUrl = []; + pages = MBridge.xpath(res, '//*[@id="readerarea"]/p/img/@src'); + if (pages.isEmpty || pages.length == 1) { + pages = MBridge.xpath(res, '//*[@id="readerarea"]/img/@src'); + } + if (pages.isEmpty || pages.length == 1) { + final images = MBridge.regExp(res, "\"images\"\\s*:\\s*(\\[.*?])", "", 1, 1); + final pages = MBridge.jsonDecodeToList(images, 0); + for (var page in pages) { + pagesUrl.add(page); + } + } else { + return pages; + } + + return pagesUrl; +} + +String getMangaUrlDirectory(String sourceName) { + if (sourceName == "Sushi-Scan") { + return "/catalogue"; + } + return "/manga"; +} diff --git a/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart b/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart deleted file mode 100644 index 45e87b48..00000000 --- a/manga/multisrc/mmrcms/mmrcms-v0.0.13.dart +++ /dev/null @@ -1,174 +0,0 @@ -import 'dart:convert'; -import 'package:bridge_lib/bridge_lib.dart'; - -searchManga(MangaModel manga) async { - final url = "${manga.baseUrl}/search?query=${manga.query}"; - final data = {"url": url, "headers": null, "sourceId": manga.sourceId}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return manga; - } - final jsonList = MBridge.jsonPathToList(res, r'$.suggestions[*]', 0); - List urls = []; - List names = []; - List images = []; - for (var da in jsonList) { - final value = MBridge.getMapValue(da, "value", 0); - final data = MBridge.getMapValue(da, "data", 0); - if (manga.source == 'Scan VF') { - urls.add('${manga.baseUrl}/$data'); - } else if (manga.source == 'Manga-FR') { - urls.add('${manga.baseUrl}/lecture-en-ligne/$data'); - } else { - urls.add('${manga.baseUrl}/manga/$data'); - } - names.add(value); - if (manga.source == "Manga-FR") { - images.add("${manga.baseUrl}/uploads/manga/$data.jpg"); - } else { - images - .add("${manga.baseUrl}/uploads/manga/$data/cover/cover_250x350.jpg"); - } - } - manga.names = names; - manga.urls = urls; - manga.images = images; - return manga; -} - -getPopularManga(MangaModel manga) async { - final url = - "${manga.baseUrl}/filterList?page=${manga.page}&sortBy=views&asc=false"; - final data = {"url": url, "headers": null, "sourceId": manga.sourceId}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return manga; - } - manga.urls = - MBridge.xpath(res, '//*[ @class="chart-title"]/@href', '._').split('._'); - manga.names = - MBridge.xpath(res, '//*[ @class="chart-title"]/text()', '._').split('._'); - List images = []; - for (var url in manga.urls) { - if (manga.source == "Manga-FR") { - images.add( - "${manga.baseUrl}/uploads/manga/${MBridge.listParse(MBridge.stringParse(url, 0).split('/'), 2)[0]}.jpg"); - } else { - images.add( - "${manga.baseUrl}/uploads/manga/${MBridge.listParse(MBridge.stringParse(url, 0).split('/'), 2)[0]}/cover/cover_250x350.jpg"); - } - } - manga.images = images; - return manga; -} - -getMangaDetail(MangaModel manga) async { - final statusList = [ - { - "complete": 1, - "complet": 1, - "completo": 1, - "zakończone": 1, - "concluído": 1, - "مكتملة": 1, - "ongoing": 0, - "en cours": 0, - "em lançamento": 0, - "prace w toku": 0, - "ativo": 0, - "مستمرة": 0, - "em andamento": 0 - } - ]; - - final datas = { - "url": manga.link, - "headers": null, - "sourceId": manga.sourceId - }; - final res = await MBridge.http(json.encode(datas), 0); - if (res.isEmpty) { - return manga; - } - manga.author = MBridge.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()', - ''); - final status = MBridge.xpath( - res, - '//*[@class="dl-horizontal"]/dt[contains(text(), "Statut") or contains(text(), "Status") or contains(text(), "Estado") or contains(text(), "Durum")]/following-sibling::dd[1]/text()', - ''); - manga.status = MBridge.parseStatus(status, statusList); - manga.description = MBridge.xpath( - res, '//*[@class="well" or @class="manga well"]/p/text()', ''); - manga.genre = MBridge.xpath( - res, - '//*[@class="dl-horizontal"]/dt[contains(text(), "Categories") or contains(text(), "Categorias") or contains(text(), "Categorías") or contains(text(), "Catégories") or contains(text(), "Kategoriler" or contains(text(), "Kategorie") or contains(text(), "Kategori") or contains(text(), "Tagi"))]/following-sibling::dd[1]/text()', - '') - .split(','); - manga.names = - MBridge.xpath(res, '//*[@class="chapter-title-rtl"]/a/text()', "-.") - .split("-."); - manga.urls = - MBridge.xpath(res, '//*[@class="chapter-title-rtl"]/a/@href', "-.") - .split("-."); - final date = - MBridge.xpath(res, '//*[@class="date-chapter-title-rtl"]/text()', "-.") - .split("-."); - manga.chaptersDateUploads = - MBridge.listParseDateTime(date, "d MMM. yyyy", "en_US"); - - return manga; -} - -getLatestUpdatesManga(MangaModel manga) async { - final url = "${manga.baseUrl}/latest-release?page=${manga.page}"; - final data = {"url": url, "headers": null, "sourceId": manga.sourceId}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return manga; - } - manga.urls = MBridge.xpath(res, '//*[@class="manga-item"]/h3/a/@href', '._') - .split('._'); - manga.names = MBridge.xpath(res, '//*[@class="manga-item"]/h3/a/text()', '._') - .split('._'); - List images = []; - for (var url in manga.urls) { - if (manga.source == "Manga-FR") { - images.add( - "${manga.baseUrl}/uploads/manga/${MBridge.listParse(MBridge.stringParse(url, 0).split('/'), 2)[0]}.jpg"); - } else { - images.add( - "${manga.baseUrl}/uploads/manga/${MBridge.listParse(MBridge.stringParse(url, 0).split('/'), 2)[0]}/cover/cover_250x350.jpg"); - } - } - manga.images = images; - return manga; -} - -getChapterUrl(MangaModel manga) async { - final datas = { - "url": manga.link, - "headers": null, - "sourceId": manga.sourceId - }; - final res = await MBridge.http(json.encode(datas), 0); - if (res.isEmpty) { - return []; - } - List pagesUrl = []; - final pages = MBridge.listParse( - MBridge.xpath(res, - '//*[@id="all"]/img[@class="img-responsive"]/@data-src', "._._") - .split("._._"), - 0); - for (var page in pages) { - if (page.startsWith('//')) { - pagesUrl.add(page.replaceAll('//', 'https://')); - } else { - pagesUrl.add(page); - } - } - - return pagesUrl; -} diff --git a/manga/multisrc/mmrcms/mmrcms-v0.0.2.dart b/manga/multisrc/mmrcms/mmrcms-v0.0.2.dart new file mode 100644 index 00000000..1f0ea2a9 --- /dev/null +++ b/manga/multisrc/mmrcms/mmrcms-v0.0.2.dart @@ -0,0 +1,141 @@ +import 'dart:convert'; +import 'package:bridge_lib/bridge_lib.dart'; + +searchManga(MangaModel manga) async { + final url = "${manga.baseUrl}/search?query=${manga.query}"; + final data = {"url": url, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return manga; + } + final jsonList = json.decode(res)["suggestions"]; + List urls = []; + List names = []; + List images = []; + for (var da in jsonList) { + String value = da["value"]; + String data = da["data"]; + if (manga.source == 'Scan VF') { + urls.add('${manga.baseUrl}/$data'); + } else if (manga.source == 'Manga-FR') { + urls.add('${manga.baseUrl}/lecture-en-ligne/$data'); + } else { + urls.add('${manga.baseUrl}/manga/$data'); + } + names.add(value); + if (manga.source == "Manga-FR") { + images.add("${manga.baseUrl}/uploads/manga/$data.jpg"); + } else { + images.add("${manga.baseUrl}/uploads/manga/$data/cover/cover_250x350.jpg"); + } + } + manga.names = names; + manga.urls = urls; + manga.images = images; + return manga; +} + +getPopularManga(MangaModel manga) async { + final url = "${manga.baseUrl}/filterList?page=${manga.page}&sortBy=views&asc=false"; + final data = {"url": url, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return manga; + } + manga.urls = MBridge.xpath(res, '//*[ @class="chart-title"]/@href'); + manga.names = MBridge.xpath(res, '//*[ @class="chart-title"]/text()'); + List images = []; + for (var url in manga.urls) { + String slug = MBridge.substringAfterLast(url, '/'); + if (manga.source == "Manga-FR") { + images.add("${manga.baseUrl}/uploads/manga/${slug}.jpg"); + } else { + images.add("${manga.baseUrl}/uploads/manga/${slug}/cover/cover_250x350.jpg"); + } + } + manga.images = images; + return manga; +} + +getMangaDetail(MangaModel manga) async { + final statusList = [ + { + "complete": 1, + "complet": 1, + "completo": 1, + "zakończone": 1, + "concluído": 1, + "مكتملة": 1, + "ongoing": 0, + "en cours": 0, + "em lançamento": 0, + "prace w toku": 0, + "ativo": 0, + "مستمرة": 0, + "em andamento": 0 + } + ]; + + final datas = {"url": manga.link, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(datas)); + if (res.isEmpty) { + return manga; + } + manga.author = MBridge.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()') + .first; + final status = MBridge.xpath(res, + '//*[@class="dl-horizontal"]/dt[contains(text(), "Statut") or contains(text(), "Status") or contains(text(), "Estado") or contains(text(), "Durum")]/following-sibling::dd[1]/text()') + .first; + manga.status = MBridge.parseStatus(status, statusList); + manga.description = MBridge.xpath(res, '//*[@class="well" or @class="manga well"]/p/text()').first; + manga.genre = MBridge.xpath(res, + '//*[@class="dl-horizontal"]/dt[contains(text(), "Categories") or contains(text(), "Categorias") or contains(text(), "Categorías") or contains(text(), "Catégories") or contains(text(), "Kategoriler" or contains(text(), "Kategorie") or contains(text(), "Kategori") or contains(text(), "Tagi"))]/following-sibling::dd[1]/text()'); + manga.names = MBridge.xpath(res, '//*[@class="chapter-title-rtl"]/a/text()'); + manga.urls = MBridge.xpath(res, '//*[@class="chapter-title-rtl"]/a/@href'); + final date = MBridge.xpath(res, '//*[@class="date-chapter-title-rtl"]/text()'); + manga.chaptersDateUploads = MBridge.listParseDateTime(date, "d MMM. yyyy", "en_US"); + + return manga; +} + +getLatestUpdatesManga(MangaModel manga) async { + final url = "${manga.baseUrl}/latest-release?page=${manga.page}"; + final data = {"url": url, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return manga; + } + manga.urls = MBridge.xpath(res, '//*[@class="manga-item"]/h3/a/@href'); + manga.names = MBridge.xpath(res, '//*[@class="manga-item"]/h3/a/text()'); + List images = []; + for (var url in manga.urls) { + String slug = MBridge.substringAfterLast(url, '/'); + if (manga.source == "Manga-FR") { + images.add("${manga.baseUrl}/uploads/manga/${slug}.jpg"); + } else { + images.add("${manga.baseUrl}/uploads/manga/${slug}/cover/cover_250x350.jpg"); + } + } + manga.images = images; + return manga; +} + +getChapterUrl(MangaModel manga) async { + final datas = {"url": manga.link, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(datas)); + if (res.isEmpty) { + return []; + } + List pagesUrl = []; + final pages = MBridge.xpath(res, '//*[@id="all"]/img[@class="img-responsive"]/@data-src'); + for (var page in pages) { + if (page.startsWith('//')) { + pagesUrl.add(page.replaceAll('//', 'https://')); + } else { + pagesUrl.add(page); + } + } + + return pagesUrl; +} diff --git a/manga/src/all/batoto/batoto-v0.0.12.dart b/manga/src/all/batoto/batoto-v0.0.12.dart deleted file mode 100644 index 38479e66..00000000 --- a/manga/src/all/batoto/batoto-v0.0.12.dart +++ /dev/null @@ -1,223 +0,0 @@ -import 'dart:convert'; -import 'package:bridge_lib/bridge_lib.dart'; - -getPopularManga(MangaModel manga) async { - final url = - "${manga.baseUrl}/browse?${lang(manga.lang)}&sort=views_a&page=${manga.page}"; - final data = {"url": url, "headers": null, "sourceId": manga.sourceId}; - final res = await MBridge.http(json.encode(data), 0); - return mangaElementM(res, manga); -} - -String lang(String lang) { - lang = lang.replaceAll("-", "_"); - if (lang == "all") { - return ""; - } - return "langs=$lang"; -} - -getLatestUpdatesManga(MangaModel manga) async { - final url = - "${manga.baseUrl}/browse?${lang(manga.lang)}&sort=update&page=${manga.page}"; - final data = {"url": url, "headers": null, "sourceId": manga.sourceId}; - final res = await MBridge.http(json.encode(data), 0); - return mangaElementM(res, manga); -} - -searchManga(MangaModel manga) async { - final data = { - "url": "${manga.baseUrl}/search?word=${manga.query}&page=${manga.page}", - "headers": null, - "sourceId": manga.sourceId - }; - final res = await MBridge.http(json.encode(data), 0); - return mangaElementM(res, manga); -} - -getMangaDetail(MangaModel manga) async { - final statusList = [ - { - "Ongoing": 0, - "Completed": 1, - "Cancelled": 3, - "Hiatus": 2, - } - ]; - - final url = "${manga.baseUrl}${manga.link}"; - final data = {"url": url, "headers": null, "sourceId": manga.sourceId}; - final res = await MBridge.http(json.encode(data), 0); - - if (res.isEmpty) { - return manga; - } - - final workStatus = MBridge.xpath( - res, - '//*[@class="attr-item"]/b[contains(text(),"Original work")]/following-sibling::span[1]/text()', - ''); - manga.status = MBridge.parseStatus(workStatus, statusList); - - manga.author = MBridge.xpath( - res, - '//*[@class="attr-item"]/b[contains(text(),"Authors")]/following-sibling::span[1]/text()', - ''); - manga.genre = MBridge.xpath( - res, - '//*[@class="attr-item"]/b[contains(text(),"Genres")]/following-sibling::span[1]/text()', - '') - .split(","); - manga.description = MBridge.xpath(res, '//*[@class="limit-html"]/text()', ''); - - List chapsElement = - MBridge.querySelectorAll(res, "div.main div.p-2", 2, "", 0, 0, '-.') - .split('-.'); - List times = []; - List chapsUrls = []; - List chapsNames = []; - List scanlators = []; - for (var element in MBridge.listParse(chapsElement, 0)) { - final urlElement = MBridge.querySelector(element, "a.chapt", 2, ""); - final group = MBridge.xpath(element, '//*[@class="extra"]/a/text()', ''); - final name = MBridge.xpath(urlElement, '//a/text()', ''); - final url = MBridge.xpath(urlElement, '//a/@href', ''); - final time = MBridge.xpath( - element, '//*[@class="extra"]/i[@class="ps-3"]/text()', ''); - times.add(time); - chapsUrls.add(url); - scanlators.add(group); - chapsNames.add(name.replaceAll("\n ", "").replaceAll(" ", "")); - } - - manga.urls = chapsUrls; - manga.names = chapsNames; - manga.chaptersScanlators = scanlators; - manga.chaptersDateUploads = MBridge.listParse( - MBridge.listParseDateTime(times, "MMM dd,yyyy", "en"), 0); - - return manga; -} - -getChapterUrl(MangaModel manga) async { - final datas = { - "url": "${manga.baseUrl}${manga.link}", - "headers": null, - "sourceId": manga.sourceId - }; - final res = await MBridge.http(json.encode(datas), 0); - if (res.isEmpty) { - return []; - } - final script = MBridge.xpath( - res, - '//script[contains(text(), "imgHttpLis") and contains(text(), "batoWord") and contains(text(), "batoPass")]/text()', - ""); - final imgHttpLisString = MBridge.subString( - MBridge.subString(script, 'const imgHttpLis =', 2), ';', 0); - List imgHttpLis = MBridge.jsonDecodeToList(imgHttpLisString, 0); - final batoWord = MBridge.subString( - MBridge.subString(script, 'const batoWord =', 2), ';', 0); - final batoPass = MBridge.subString( - MBridge.subString(script, 'const batoPass =', 2), ';', 0); - final evaluatedPass = MBridge.deobfuscateJsPassword(batoPass); - final imgAccListString = - MBridge.decryptAESCryptoJS(batoWord.replaceAll('"', ""), evaluatedPass); - List imgAccList = MBridge.jsonDecodeToList(imgAccListString, 0); - List pagesUrl = []; - for (int i = 0; i < imgHttpLis.length; i++) { - final imgUrl = MBridge.listParse(imgHttpLis, 0)[i]; - final imgAcc = MBridge.listParse(imgAccList, 0)[i]; - pagesUrl.add("$imgUrl?$imgAcc"); - } - - return pagesUrl; -} - -MangaModel mangaElementM(String res, MangaModel manga) async { - if (res.isEmpty) { - return manga; - } - final lang = manga.lang.replaceAll("-", "_"); - List resB = MBridge.querySelectorAll( - res, "div#series-list div.col", 2, "", 0, 0, '-.') - .split('-.'); - List images = []; - List urls = []; - List names = []; - - for (var element in MBridge.listParse(resB, 0)) { - if (manga.lang == "all") { - final item = MBridge.querySelector(element, "a.item-cover", 2, ""); - final img = MBridge.querySelector(item, "img", 3, "src"); - final url = MBridge.querySelector(item, "a", 3, "href"); - images.add(img); - urls.add(url); - final title = MBridge.querySelector(element, "a.item-title", 0, ""); - names.add(title); - } else if (manga.lang == "en") { - if (element.contains('no-flag')) { - final item = MBridge.querySelector(element, "a.item-cover", 2, ""); - final img = MBridge.querySelector(item, "img", 3, "src"); - final url = MBridge.querySelector(item, "a", 3, "href"); - images.add(img); - urls.add(url); - final title = MBridge.querySelector(element, "a.item-title", 0, ""); - names.add(title); - } - } else { - if (element.contains('data-lang="$lang"')) { - final item = MBridge.querySelector(element, "a.item-cover", 2, ""); - final img = MBridge.querySelector(item, "img", 3, "src"); - final url = MBridge.querySelector(item, "a", 3, "href"); - images.add(img); - urls.add(url); - final title = MBridge.querySelector(element, "a.item-title", 0, ""); - names.add(title); - } - } - } - manga.urls = urls; - manga.names = names; - manga.images = images; - final nextPage = MBridge.xpath( - res, - '//li[@class="page-item disabled"]/a/span[contains(text(),"»")]/text()', - ""); - if (nextPage.isEmpty) { - manga.hasNextPage = true; - } else { - manga.hasNextPage = false; - } - return manga; -} - -Map getMirrorPref() { - return { - "bato.to": "https://bato.to", - "batocomic.com": "https://batocomic.com", - "batocomic.net": "https://batocomic.net", - "batocomic.org": "https://batocomic.org", - "batotoo.com": "https://batotoo.com", - "batotwo.com": "https://batotwo.com", - "battwo.com": "https://battwo.com", - "comiko.net": "https://comiko.net", - "comiko.org": "https://comiko.org", - "mangatoto.com": "https://mangatoto.com", - "mangatoto.net": "https://mangatoto.net", - "mangatoto.org": "https://mangatoto.org", - "readtoto.com": "https://readtoto.com", - "readtoto.net": "https://readtoto.net", - "readtoto.org": "https://readtoto.org", - "dto.to": "https://dto.to", - "hto.to": "https://hto.to", - "mto.to": "https://mto.to", - "wto.to": "https://wto.to", - "xbato.com": "https://xbato.com", - "xbato.net": "https://xbato.net", - "xbato.org": "https://xbato.org", - "zbato.com": "https://zbato.com", - "zbato.net": "https://zbato.net", - "zbato.org": "https://zbato.org", - }; -} diff --git a/manga/src/all/batoto/batoto-v0.0.2.dart b/manga/src/all/batoto/batoto-v0.0.2.dart new file mode 100644 index 00000000..ea168224 --- /dev/null +++ b/manga/src/all/batoto/batoto-v0.0.2.dart @@ -0,0 +1,187 @@ +import 'dart:convert'; +import 'package:bridge_lib/bridge_lib.dart'; + +getPopularManga(MangaModel manga) async { + final url = "${manga.baseUrl}/browse?${lang(manga.lang)}&sort=views_a&page=${manga.page}"; + final data = {"url": url, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(data)); + return mangaElementM(res, manga); +} + +String lang(String lang) { + lang = lang.replaceAll("-", "_"); + if (lang == "all") { + return ""; + } + return "langs=$lang"; +} + +getLatestUpdatesManga(MangaModel manga) async { + final url = "${manga.baseUrl}/browse?${lang(manga.lang)}&sort=update&page=${manga.page}"; + final data = {"url": url, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(data)); + return mangaElementM(res, manga); +} + +searchManga(MangaModel manga) async { + final data = {"url": "${manga.baseUrl}/search?word=${manga.query}&page=${manga.page}", "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(data)); + return mangaElementM(res, manga); +} + +getMangaDetail(MangaModel manga) async { + final statusList = [ + { + "Ongoing": 0, + "Completed": 1, + "Cancelled": 3, + "Hiatus": 2, + } + ]; + + final url = "${manga.baseUrl}${manga.link}"; + final data = {"url": url, "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(data)); + + if (res.isEmpty) { + return manga; + } + + final workStatus = MBridge.xpath( + res, '//*[@class="attr-item"]/b[contains(text(),"Original work")]/following-sibling::span[1]/text()') + .first; + manga.status = MBridge.parseStatus(workStatus, statusList); + + manga.author = + MBridge.xpath(res, '//*[@class="attr-item"]/b[contains(text(),"Authors")]/following-sibling::span[1]/text()') + .first; + manga.genre = + MBridge.xpath(res, '//*[@class="attr-item"]/b[contains(text(),"Genres")]/following-sibling::span[1]/text()') + .first + .split(","); + manga.description = MBridge.xpath(res, '//*[@class="limit-html"]/text()').first; + + List chapsElement = + MBridge.querySelectorAll(res, selector: "div.main div.p-2", typeElement: 2, attributes: "", typeRegExp: 0); + List times = []; + List chapsUrls = []; + List chapsNames = []; + List scanlators = []; + for (var element in chapsElement) { + final urlElement = + MBridge.querySelectorAll(element, selector: "a.chapt", typeElement: 2, attributes: "", typeRegExp: 0).first; + final group = MBridge.xpath(element, '//*[@class="extra"]/a/text()').first; + final name = MBridge.xpath(urlElement, '//a/text()').first; + final url = MBridge.xpath(urlElement, '//a/@href').first; + final time = MBridge.xpath(element, '//*[@class="extra"]/i[@class="ps-3"]/text()').first; + times.add(time); + chapsUrls.add(url); + scanlators.add(group); + chapsNames.add(name.replaceAll("\n ", "").replaceAll(" ", "")); + } + + manga.urls = chapsUrls; + manga.names = chapsNames; + manga.chaptersScanlators = scanlators; + manga.chaptersDateUploads = MBridge.listParseDateTime(times, "MMM dd,yyyy", "en"); + + return manga; +} + +getChapterUrl(MangaModel manga) async { + final datas = {"url": "${manga.baseUrl}${manga.link}", "sourceId": manga.sourceId}; + final res = await MBridge.http('GET', json.encode(datas)); + if (res.isEmpty) { + return []; + } + final script = MBridge.xpath(res, + '//script[contains(text(), "imgHttpLis") and contains(text(), "batoWord") and contains(text(), "batoPass")]/text()') + .first; + final imgHttpLisString = MBridge.substringBefore(MBridge.substringAfterLast(script, 'const imgHttpLis ='), ';'); + var imgHttpLis = json.decode(imgHttpLisString); + final batoWord = MBridge.substringBefore(MBridge.substringAfterLast(script, 'const batoWord ='), ';'); + final batoPass = MBridge.substringBefore(MBridge.substringAfterLast(script, 'const batoPass ='), ';'); + final evaluatedPass = MBridge.deobfuscateJsPassword(batoPass); + final imgAccListString = MBridge.decryptAESCryptoJS(batoWord.replaceAll('"', ""), evaluatedPass); + var imgAccList = json.decode(imgAccListString); + List pagesUrl = []; + for (int i = 0; i < imgHttpLis.length; i++) { + String imgUrl = imgHttpLis[i]; + String imgAcc = imgAccList[i]; + pagesUrl.add("$imgUrl?$imgAcc"); + } + + return pagesUrl; +} + +MangaModel mangaElementM(String res, MangaModel manga) async { + if (res.isEmpty) { + return manga; + } + final lang = manga.lang.replaceAll("-", "_"); + var resB = + MBridge.querySelectorAll(res, selector: "div#series-list div.col", typeElement: 2, attributes: "", typeRegExp: 0); + List images = []; + List urls = []; + List names = []; + + for (var element in resB) { + if (manga.lang == "all" || + manga.lang == "en" && element.contains('no-flag') || + element.contains('data-lang="$lang"')) { + final item = + MBridge.querySelectorAll(element, selector: "a.item-cover", typeElement: 2, attributes: "", typeRegExp: 0) + .first; + final img = + MBridge.querySelectorAll(item, selector: "img", typeElement: 3, attributes: "src", typeRegExp: 0).first; + final url = + MBridge.querySelectorAll(item, selector: "a", typeElement: 3, attributes: "href", typeRegExp: 0).first; + images.add(img); + urls.add(url); + final title = + MBridge.querySelectorAll(element, selector: "a.item-title", typeElement: 0, attributes: "", typeRegExp: 0) + .first; + names.add(title); + } + } + manga.urls = urls; + manga.names = names; + manga.images = images; + final nextPage = MBridge.xpath(res, '//li[@class="page-item disabled"]/a/span[contains(text(),"»")]/text()').first; + if (nextPage.isEmpty) { + manga.hasNextPage = true; + } else { + manga.hasNextPage = false; + } + return manga; +} + +Map getMirrorPref() { + return { + "bato.to": "https://bato.to", + "batocomic.com": "https://batocomic.com", + "batocomic.net": "https://batocomic.net", + "batocomic.org": "https://batocomic.org", + "batotoo.com": "https://batotoo.com", + "batotwo.com": "https://batotwo.com", + "battwo.com": "https://battwo.com", + "comiko.net": "https://comiko.net", + "comiko.org": "https://comiko.org", + "mangatoto.com": "https://mangatoto.com", + "mangatoto.net": "https://mangatoto.net", + "mangatoto.org": "https://mangatoto.org", + "readtoto.com": "https://readtoto.com", + "readtoto.net": "https://readtoto.net", + "readtoto.org": "https://readtoto.org", + "dto.to": "https://dto.to", + "hto.to": "https://hto.to", + "mto.to": "https://mto.to", + "wto.to": "https://wto.to", + "xbato.com": "https://xbato.com", + "xbato.net": "https://xbato.net", + "xbato.org": "https://xbato.org", + "zbato.com": "https://zbato.com", + "zbato.net": "https://zbato.net", + "zbato.org": "https://zbato.org", + }; +} diff --git a/manga/src/all/comick/comick-v0.0.11.dart b/manga/src/all/comick/comick-v0.0.2.dart similarity index 62% rename from manga/src/all/comick/comick-v0.0.11.dart rename to manga/src/all/comick/comick-v0.0.2.dart index 946a23cb..de2b207e 100644 --- a/manga/src/all/comick/comick-v0.0.11.dart +++ b/manga/src/all/comick/comick-v0.0.2.dart @@ -2,13 +2,13 @@ import 'package:bridge_lib/bridge_lib.dart'; import 'dart:convert'; getLatestUpdatesManga(MangaModel manga) async { - final url = - "${manga.apiUrl}/v1.0/search?sort=uploaded&page=${manga.page}&tachiyomi=true"; + final url = "${manga.apiUrl}/v1.0/search?sort=uploaded&page=${manga.page}&tachiyomi=true"; final data = {"url": url, "headers": getHeader(manga.baseUrl)}; - final res = await MBridge.http(json.encode(data), 0); + final res = await MBridge.http('GET', json.encode(data)); if (res.isEmpty) { return manga; } + manga.names = MBridge.jsonPathToList(res, r'$.title', 0); List ids = MBridge.jsonPathToList(res, r'$.hid', 0); List mangaUrls = []; @@ -32,59 +32,43 @@ getMangaDetail(MangaModel manga) async { final headers = getHeader(manga.baseUrl); - final urll = - "${manga.apiUrl}${manga.link.replaceAll("#", '')}?tachiyomi=true"; + final urll = "${manga.apiUrl}${manga.link.replaceAll("#", '')}?tachiyomi=true"; final data = {"url": urll, "headers": headers}; - final res = await MBridge.http(json.encode(data), 0); + final res = await MBridge.http('GET', json.encode(data)); if (res.isEmpty) { return manga; } manga.author = MBridge.jsonPathToString(res, r'$.authors[*].name', ''); - manga.genre = - MBridge.jsonPathToString(res, r'$.genres[*].name', "_.").split("_."); + manga.genre = MBridge.jsonPathToString(res, r'$.genres[*].name', "_.").split("_."); manga.description = MBridge.jsonPathToString(res, r'$..desc', ''); - manga.status = MBridge.parseStatus( - MBridge.jsonPathToString(res, r'$..comic.status', ''), statusList); + manga.status = MBridge.parseStatus(MBridge.jsonPathToString(res, r'$..comic.status', ''), statusList); final chapUrlReq = "${manga.apiUrl}${manga.link.replaceAll("#", '')}chapters?lang=${manga.lang}&tachiyomi=true&page=1"; final dataReq = {"url": chapUrlReq, "headers": headers}; - final request = await MBridge.http(json.encode(dataReq), 0); + final request = await MBridge.http('GET', json.encode(dataReq)); var total = MBridge.jsonPathToString(request, r'$.total', ''); final chapterLimit = MBridge.intParse("$total"); final newChapUrlReq = "${manga.apiUrl}${manga.link.replaceAll("#", '')}chapters?limit=$chapterLimit&lang=${manga.lang}&tachiyomi=true&page=1"; final newDataReq = {"url": newChapUrlReq, "headers": headers}; - final newRequest = await MBridge.http(json.encode(newDataReq), 0); + final newRequest = await MBridge.http('GET', json.encode(newDataReq)); - manga.urls = MBridge.jsonPathToString(newRequest, r'$.chapters[*].hid', "_.") - .split("_."); - final chapDate = - MBridge.jsonPathToString(newRequest, r'$.chapters[*].created_at', "_.") - .split("_."); - manga.chaptersDateUploads = MBridge.listParse( - MBridge.listParseDateTime(chapDate, "yyyy-MM-dd'T'HH:mm:ss'Z'", "en"), 0); - manga.chaptersVolumes = - MBridge.jsonPathToString(newRequest, r'$.chapters[*].vol', "_.") - .split("_."); - manga.chaptersScanlators = - MBridge.jsonPathToString(newRequest, r'$.chapters[*].group_name', "_.") - .split("_."); - manga.names = - MBridge.jsonPathToString(newRequest, r'$.chapters[*].title', "_.") - .split("_."); - manga.chaptersChaps = - MBridge.jsonPathToString(newRequest, r'$.chapters[*].chap', "_.") - .split("_."); + manga.urls = MBridge.jsonPathToString(newRequest, r'$.chapters[*].hid', "_.").split("_."); + final chapDate = MBridge.jsonPathToString(newRequest, r'$.chapters[*].created_at', "_.").split("_."); + manga.chaptersDateUploads =MBridge.listParseDateTime(chapDate, "yyyy-MM-dd'T'HH:mm:ss'Z'", "en"); + manga.chaptersVolumes = MBridge.jsonPathToString(newRequest, r'$.chapters[*].vol', "_.").split("_."); + manga.chaptersScanlators = MBridge.jsonPathToString(newRequest, r'$.chapters[*].group_name', "_.").split("_."); + manga.names = MBridge.jsonPathToString(newRequest, r'$.chapters[*].title', "_.").split("_."); + manga.chaptersChaps = MBridge.jsonPathToString(newRequest, r'$.chapters[*].chap', "_.").split("_."); return manga; } getPopularManga(MangaModel manga) async { - final urll = - "${manga.apiUrl}/v1.0/search?sort=follow&page=${manga.page}&tachiyomi=true"; + final urll = "${manga.apiUrl}/v1.0/search?sort=follow&page=${manga.page}&tachiyomi=true"; final data = {"url": urll, "headers": getHeader(manga.baseUrl)}; - final res = await MBridge.http(json.encode(data), 0); + final res = await MBridge.http('GET', json.encode(data)); if (res.isEmpty) { return manga; } @@ -102,7 +86,7 @@ getPopularManga(MangaModel manga) async { searchManga(MangaModel manga) async { final urll = "${manga.apiUrl}/v1.0/search?q=${manga.query}&tachiyomi=true"; final data = {"url": urll, "headers": getHeader(manga.baseUrl)}; - final res = await MBridge.http(json.encode(data), 0); + final res = await MBridge.http('GET', json.encode(data)); if (res.isEmpty) { return manga; } @@ -120,19 +104,17 @@ searchManga(MangaModel manga) async { getChapterUrl(MangaModel manga) async { final url = "${manga.apiUrl}/chapter/${manga.link}?tachiyomi=true"; final data = {"url": url, "headers": getHeader(url)}; - final res = await MBridge.http(json.encode(data), 0); + final res = await MBridge.http('GET', json.encode(data)); if (res.isEmpty) { return []; } - return MBridge.jsonPathToString(res, r'$.chapter.images[*].url', '_.') - .split('_.'); + return MBridge.jsonPathToString(res, r'$.chapter.images[*].url', '_.').split('_.'); } Map getHeader(String url) { final headers = { "Referer": "$url/", - 'User-Agent': - "Tachiyomi Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:110.0) Gecko/20100101 Firefox/110.0" + 'User-Agent': "Tachiyomi Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:110.0) Gecko/20100101 Firefox/110.0" }; return headers; } diff --git a/manga/src/all/mangadex/mangadex-v0.0.13.dart b/manga/src/all/mangadex/mangadex-v0.0.2.dart similarity index 92% rename from manga/src/all/mangadex/mangadex-v0.0.13.dart rename to manga/src/all/mangadex/mangadex-v0.0.2.dart index 85d8bbb9..467009d0 100644 --- a/manga/src/all/mangadex/mangadex-v0.0.13.dart +++ b/manga/src/all/mangadex/mangadex-v0.0.2.dart @@ -12,7 +12,7 @@ getPopularManga(MangaModel manga) async { final url = "https://api.mangadex.org/manga?limit=20&offset=$page&availableTranslatedLanguage[]=en&includes[]=cover_art${getMDXContentRating()}&order[followedCount]=desc"; final datas = {"url": url, "headers": null}; - final res = await MBridge.http(json.encode(datas), 0); + final res = await MBridge.http('GET', json.encode(datas)); if (res.isEmpty) { return manga; } @@ -51,12 +51,12 @@ MangaModel getChapters( r'$.relationships[?@.id!="00e03853-1b96-4f41-9542-c71b8692033b"]', 0); String chapName = "".toString(); for (var element in groups) { - final data = MBridge.getMapValue(element, "attributes", 1); + final data = MBridge.getMapValue(element, "attributes", encode: true); if (data.isEmpty) { } else { - final name = MBridge.getMapValue(data, "name", 0); + final name = MBridge.getMapValue(data, "name"); scan += "$name".toString(); - final username = MBridge.getMapValue(data, "username", 0); + final username = MBridge.getMapValue(data, "username"); if (username.isEmpty) { } else { if (scan.isEmpty) { @@ -68,11 +68,11 @@ MangaModel getChapters( if (scan.isEmpty) { scan = "No Group".toString(); } - final dataRes = MBridge.getMapValue(res, "attributes", 1); + final dataRes = MBridge.getMapValue(res, "attributes", encode: true); if (dataRes.isEmpty) { } else { - final data = MBridge.getMapValue(res, "attributes", 1); - final volume = MBridge.getMapValue(data, "volume", 0); + final data = MBridge.getMapValue(res, "attributes", encode: true); + final volume = MBridge.getMapValue(data, "volume"); if (volume.isEmpty) { } else { if (volume == "null") { @@ -80,7 +80,7 @@ MangaModel getChapters( chapName = "Vol.$volume ".toString(); } } - final chapter = MBridge.getMapValue(data, "chapter", 0); + final chapter = MBridge.getMapValue(data, "chapter"); if (chapter.isEmpty) { } else { if (chapter == "null") { @@ -88,7 +88,7 @@ MangaModel getChapters( chapName += "Ch.$chapter ".toString(); } } - final title = MBridge.getMapValue(data, "title", 0); + final title = MBridge.getMapValue(data, "title"); if (title.isEmpty) { } else { if (title == "null") { @@ -103,8 +103,8 @@ MangaModel getChapters( if (chapName.isEmpty) { chapName += "Oneshot".toString(); } - final date = MBridge.getMapValue(data, "publishAt", 0); - final id = MBridge.getMapValue(res, "id", 0); + final date = MBridge.getMapValue(data, "publishAt"); + final id = MBridge.getMapValue(res, "id"); chapterUrl += "._$id"; chapDate += "._._$date"; scanlators += "._$scan"; @@ -132,7 +132,7 @@ getMangaDetail(MangaModel manga) async { final url = "https://api.mangadex.org${manga.link}?includes[]=cover_art&includes[]=author&includes[]=artist"; final datas = {"url": url, "headers": null}; - final res = await MBridge.http(json.encode(datas), 0); + final res = await MBridge.http('GET', json.encode(datas)); if (res.isEmpty) { return manga; } @@ -254,7 +254,7 @@ getLatestUpdatesManga(MangaModel manga) async { final urll = "https://api.mangadex.org/chapter?limit=20&offset=$page&translatedLanguage[]=${manga.lang}&includeFutureUpdates=0&order[publishAt]=desc&includeFuturePublishAt=0&includeEmptyPages=0"; final datas = {"url": urll, "headers": null}; - final ress = await MBridge.http(json.encode(datas), 0); + final ress = await MBridge.http('GET', json.encode(datas)); if (ress.isEmpty) { return manga; } @@ -269,7 +269,7 @@ getLatestUpdatesManga(MangaModel manga) async { final newUrl = "https://api.mangadex.org/manga?includes[]=cover_art&limit=${mangaIds.length}${getMDXContentRating()}$mangaa"; final datass = {"url": newUrl, "headers": null}; - final res = await MBridge.http(json.encode(datass), 0); + final res = await MBridge.http('GET', json.encode(datass)); List data = MBridge.listParse( MBridge.jsonPathToString(res, r'$.data[*]', '_.').split("_."), 0); List urlList = []; @@ -293,7 +293,7 @@ searchManga(MangaModel manga) async { final url = "https://api.mangadex.org/manga?includes[]=cover_art&offset=0&limit=20&title=${manga.query}${getMDXContentRating()}&order[followedCount]=desc&availableTranslatedLanguage[]=${manga.lang}"; final datas = {"url": url, "headers": null}; - final res = await MBridge.http(json.encode(datas), 0); + final res = await MBridge.http('GET', json.encode(datas)); if (res.isEmpty) { return manga; } @@ -319,7 +319,7 @@ searchManga(MangaModel manga) async { getChapterUrl(MangaModel manga) async { final url = "https://api.mangadex.org/at-home/server/${manga.link}"; final data = {"url": url, "headers": null}; - final res = await MBridge.http(json.encode(data), 0); + final res = await MBridge.http('GET', json.encode(data)); if (res.isEmpty) { return []; } @@ -345,7 +345,7 @@ Future paginatedChapterListRequest( 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${getMDXContentRating()}'; final datas = {"url": url, "headers": null}; - return await MBridge.http(json.encode(datas), 0); + return await MBridge.http('GET', json.encode(datas)); } String findTitle(String dataRes, int mangaIndex, String lang) { diff --git a/manga/src/en/mangahere/mangahere-v0.0.12.dart b/manga/src/en/mangahere/mangahere-v0.0.12.dart deleted file mode 100644 index df664603..00000000 --- a/manga/src/en/mangahere/mangahere-v0.0.12.dart +++ /dev/null @@ -1,210 +0,0 @@ -import 'dart:convert'; -import 'package:bridge_lib/bridge_lib.dart'; - -searchManga(MangaModel manga) async { - final headers = getHeader(manga.baseUrl); - final url = "${manga.baseUrl}/search?title=${manga.query}&page=${manga.page}"; - - final data = {"url": url, "headers": headers}; - final res = await MBridge.http(json.encode(data), 1); - if (res.isEmpty) { - return manga; - } - - manga.names = MBridge.xpath( - res, '//*[contains(@class, "manga-list-4-list")]/li/a/@title', '-.') - .split('-.'); - manga.images = MBridge.xpath( - res, - '//*[contains(@class, "manga-list-4-list")]/li/a/img[@class="manga-list-4-cover"]/@src', - '-.') - .split('-.'); - manga.urls = MBridge.xpath( - res, '//*[contains(@class, "manga-list-4-list")]/li/a/@href', '-.') - .split('-.'); - return manga; -} - -getLatestUpdatesManga(MangaModel manga) async { - final headers = getHeader(manga.baseUrl); - final url = "${manga.baseUrl}/directory/${manga.page}.htm?latest"; - - final data = {"url": url, "headers": headers}; - final res = await MBridge.http(json.encode(data), 1); - if (res.isEmpty) { - return manga; - } - - manga.names = MBridge.xpath( - res, '//*[ contains(@class, "manga-list-1-list")]/li/a/@title', '-.') - .split('-.'); - manga.images = MBridge.xpath( - res, - '//*[ contains(@class, "manga-list-1-list")]/li/a/img[@class="manga-list-1-cover"]/@src', - '-.') - .split('-.'); - manga.urls = MBridge.xpath( - res, '//*[ contains(@class, "manga-list-1-list")]/li/a/@href', '-.') - .split('-.'); - return manga; -} - -getMangaDetail(MangaModel manga) async { - final statusList = [ - { - "Ongoing": 0, - "Completed": 1, - } - ]; - final headers = getHeader(manga.baseUrl); - final url = "${manga.baseUrl}/${manga.link}"; - final data = {"url": url, "headers": headers}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return manga; - } - manga.author = - MBridge.xpath(res, '//*[@class="detail-info-right-say"]/a/text()', ''); - manga.description = - MBridge.xpath(res, '//*[@class="fullcontent"]/text()', ''); - final status = MBridge.xpath( - res, '//*[@class="detail-info-right-title-tip"]/text()', ''); - manga.status = MBridge.parseStatus(status, statusList); - manga.genre = MBridge.xpath( - res, '//*[@class="detail-info-right-tag-list"]/a/text()', '._') - .split("._"); - manga.urls = - MBridge.xpath(res, '//*[@class="detail-main-list"]/li/a/@href', '._') - .split("._"); - manga.names = MBridge.xpath( - res, - '//*[@class="detail-main-list"]/li/a/div/p[@class="title3"]/text()', - '._') - .split("._"); - final chapterDates = MBridge.xpath( - res, - '//*[@class="detail-main-list"]/li/a/div/p[@class="title2"]/text()', - '._') - .split("._"); - - manga.chaptersDateUploads = MBridge.listParse( - MBridge.listParseDateTime( - chapterDates, manga.dateFormat, manga.dateFormatLocale), - 0); - return manga; -} - -getPopularManga(MangaModel manga) async { - final headers = getHeader(manga.baseUrl); - final url = "${manga.baseUrl}/directory/${manga.page}.htm"; - - final data = {"url": url, "headers": headers}; - final res = await MBridge.http(json.encode(data), 1); - if (res.isEmpty) { - return manga; - } - - manga.names = MBridge.xpath( - res, '//*[ contains(@class, "manga-list-1-list")]/li/a/@title', '-.') - .split('-.'); - manga.images = MBridge.xpath( - res, - '//*[ contains(@class, "manga-list-1-list")]/li/a/img[@class="manga-list-1-cover"]/@src', - '-.') - .split('-.'); - manga.urls = MBridge.xpath( - res, '//*[ contains(@class, "manga-list-1-list")]/li/a/@href', '-.') - .split('-.'); - return manga; -} - -getChapterUrl(MangaModel manga) async { - final headers = getHeader(manga.baseUrl); - final url = "${manga.baseUrl}${manga.link}"; - final data = {"url": url, "headers": headers}; - final res = await MBridge.http(json.encode(data), 0); - if (res.isEmpty) { - return []; - } - final pages = MBridge.xpath(res, "//body/div/div/span/a/text()", "._"); - List pageUrls = []; - if (pages.isEmpty) { - final script = MBridge.xpath(res, - "//script[contains(text(),'function(p,a,c,k,e,d)')]/text()", "") - .replaceAll("eval", ""); - String deobfuscatedScript = MBridge.evalJs(script); - int a = deobfuscatedScript.indexOf("newImgs=['") + 10; - int b = deobfuscatedScript.indexOf("'];"); - List urls = - MBridge.listParse(deobfuscatedScript.substring(a, b).split("','"), 0); - for (var url in urls) { - pageUrls.add("https:$url"); - } - } else { - final pagesNumberList = MBridge.listParse(pages.split("._"), 0); - //manga.status objext is used to parse pagesNumber value to int - manga.status = - MBridge.intParse(pagesNumberList[pagesNumberList.length - 2]); - int secretKeyScriptLocation = res.indexOf("eval(function(p,a,c,k,e,d)"); - int secretKeyScriptEndLocation = - res.indexOf("", secretKeyScriptLocation); - String secretKeyScript = res - .substring(secretKeyScriptLocation, secretKeyScriptEndLocation) - .replaceAll("eval", ""); - String secretKeyDeobfuscatedScript = MBridge.evalJs(secretKeyScript); - int secretKeyStartLoc = secretKeyDeobfuscatedScript.indexOf("'"); - int secretKeyEndLoc = secretKeyDeobfuscatedScript.indexOf(";"); - - String secretKey = secretKeyDeobfuscatedScript.substring( - secretKeyStartLoc, secretKeyEndLoc); - int chapterIdStartLoc = res.indexOf("chapterid"); - String chapterId = res.substring( - chapterIdStartLoc + 11, res.indexOf(";", chapterIdStartLoc)); - String pageBase = url.substring(0, url.lastIndexOf("/")); - for (int i = 1; i <= manga.status; i++) { - String pageLink = - "$pageBase/chapterfun.ashx?cid=$chapterId&page=$i&key=$secretKey"; - String responseText = MBridge.stringParse("", 0); - for (int tr = 1; tr <= 3; tr++) { - if (responseText.isEmpty) { - final headers = { - "Referer": url, - "Accept": "*/*", - "Accept-Language": "en-US,en;q=0.9", - "Connection": "keep-alive", - "Host": "www.mangahere.cc", - "X-Requested-With": "XMLHttpRequest" - }; - final data = {"url": pageLink, "headers": headers}; - final response = await MBridge.http(json.encode(data), 0); - responseText = MBridge.stringParse(response, 0); - - if (responseText.isEmpty) { - secretKey = ""; - } - } - } - String deobfuscatedScript = - MBridge.evalJs(responseText.replaceAll("eval", "")); - - int baseLinkStartPos = deobfuscatedScript.indexOf("pix=") + 5; - int baseLinkEndPos = - deobfuscatedScript.indexOf(";", baseLinkStartPos) - 1; - String baseLink = - deobfuscatedScript.substring(baseLinkStartPos, baseLinkEndPos); - - int imageLinkStartPos = deobfuscatedScript.indexOf("pvalue=") + 9; - int imageLinkEndPos = deobfuscatedScript.indexOf("\"", imageLinkStartPos); - String imageLink = - deobfuscatedScript.substring(imageLinkStartPos, imageLinkEndPos); - pageUrls.add("https:$baseLink$imageLink"); - } - } - - return pageUrls; -} - -Map getHeader(String url) { - final headers = {'Referer': '$url/', "Cookie": "isAdult=1"}; - return headers; -} diff --git a/manga/src/en/mangahere/mangahere-v0.0.2.dart b/manga/src/en/mangahere/mangahere-v0.0.2.dart new file mode 100644 index 00000000..a0d3cce8 --- /dev/null +++ b/manga/src/en/mangahere/mangahere-v0.0.2.dart @@ -0,0 +1,157 @@ +import 'dart:convert'; +import 'package:bridge_lib/bridge_lib.dart'; + +searchManga(MangaModel manga) async { + final headers = getHeader(manga.baseUrl); + final url = "${manga.baseUrl}/search?title=${manga.query}&page=${manga.page}"; + + final data = {"url": url, "headers": headers}; + final res = await MBridge.http('POST', json.encode(data)); + if (res.isEmpty) { + return manga; + } + + manga.names = MBridge.xpath(res, '//*[contains(@class, "manga-list-4-list")]/li/a/@title'); + manga.images = + MBridge.xpath(res, '//*[contains(@class, "manga-list-4-list")]/li/a/img[@class="manga-list-4-cover"]/@src'); + manga.urls = MBridge.xpath(res, '//*[contains(@class, "manga-list-4-list")]/li/a/@href'); + return manga; +} + +getLatestUpdatesManga(MangaModel manga) async { + final headers = getHeader(manga.baseUrl); + final url = "${manga.baseUrl}/directory/${manga.page}.htm?latest"; + + final data = {"url": url, "headers": headers}; + final res = await MBridge.http('POST', json.encode(data)); + if (res.isEmpty) { + return manga; + } + + manga.names = MBridge.xpath(res, '//*[ contains(@class, "manga-list-1-list")]/li/a/@title'); + manga.images = + MBridge.xpath(res, '//*[ contains(@class, "manga-list-1-list")]/li/a/img[@class="manga-list-1-cover"]/@src'); + manga.urls = MBridge.xpath(res, '//*[ contains(@class, "manga-list-1-list")]/li/a/@href'); + return manga; +} + +getMangaDetail(MangaModel manga) async { + final statusList = [ + { + "Ongoing": 0, + "Completed": 1, + } + ]; + final headers = getHeader(manga.baseUrl); + final url = "${manga.baseUrl}/${manga.link}"; + final data = {"url": url, "headers": headers}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return manga; + } + manga.author = MBridge.xpath(res, '//*[@class="detail-info-right-say"]/a/text()').first; + manga.description = MBridge.xpath(res, '//*[@class="fullcontent"]/text()').first; + final status = MBridge.xpath(res, '//*[@class="detail-info-right-title-tip"]/text()').first; + manga.status = MBridge.parseStatus(status, statusList); + manga.genre = MBridge.xpath(res, '//*[@class="detail-info-right-tag-list"]/a/text()'); + manga.urls = MBridge.xpath(res, '//*[@class="detail-main-list"]/li/a/@href'); + manga.names = MBridge.xpath(res, '//*[@class="detail-main-list"]/li/a/div/p[@class="title3"]/text()'); + final chapterDates = MBridge.xpath(res, '//*[@class="detail-main-list"]/li/a/div/p[@class="title2"]/text()'); + + manga.chaptersDateUploads = MBridge.listParseDateTime(chapterDates, manga.dateFormat, manga.dateFormatLocale); + return manga; +} + +getPopularManga(MangaModel manga) async { + final headers = getHeader(manga.baseUrl); + final url = "${manga.baseUrl}/directory/${manga.page}.htm"; + + final data = {"url": url, "headers": headers}; + final res = await MBridge.http('POST', json.encode(data)); + if (res.isEmpty) { + return manga; + } + + manga.names = MBridge.xpath(res, '//*[ contains(@class, "manga-list-1-list")]/li/a/@title'); + manga.images = + MBridge.xpath(res, '//*[ contains(@class, "manga-list-1-list")]/li/a/img[@class="manga-list-1-cover"]/@src'); + manga.urls = MBridge.xpath(res, '//*[ contains(@class, "manga-list-1-list")]/li/a/@href'); + return manga; +} + +getChapterUrl(MangaModel manga) async { + final headers = getHeader(manga.baseUrl); + final url = "${manga.baseUrl}${manga.link}"; + final data = {"url": url, "headers": headers}; + final res = await MBridge.http('GET', json.encode(data)); + if (res.isEmpty) { + return []; + } + final pages = MBridge.xpath(res, "//body/div/div/span/a/text()"); + List pageUrls = []; + if (pages.isEmpty) { + final script = + MBridge.xpath(res, "//script[contains(text(),'function(p,a,c,k,e,d)')]/text()").first.replaceAll("eval", ""); + String deobfuscatedScript = MBridge.evalJs(script); + int a = deobfuscatedScript.indexOf("newImgs=['") + 10; + int b = deobfuscatedScript.indexOf("'];"); + List urls = MBridge.listParse(deobfuscatedScript.substring(a, b).split("','"), 0); + for (var url in urls) { + pageUrls.add("https:$url"); + } + } else { + final pagesNumberList = pages; + int pagesNumber = MBridge.intParse(pagesNumberList[pagesNumberList.length - 2]); + int secretKeyScriptLocation = res.indexOf("eval(function(p,a,c,k,e,d)"); + int secretKeyScriptEndLocation = res.indexOf("", secretKeyScriptLocation); + String secretKeyScript = res.substring(secretKeyScriptLocation, secretKeyScriptEndLocation).replaceAll("eval", ""); + String secretKeyDeobfuscatedScript = MBridge.evalJs(secretKeyScript); + int secretKeyStartLoc = secretKeyDeobfuscatedScript.indexOf("'"); + int secretKeyEndLoc = secretKeyDeobfuscatedScript.indexOf(";"); + + String secretKey = secretKeyDeobfuscatedScript.substring(secretKeyStartLoc, secretKeyEndLoc); + int chapterIdStartLoc = res.indexOf("chapterid"); + String chapterId = res.substring(chapterIdStartLoc + 11, res.indexOf(";", chapterIdStartLoc)); + String pageBase = url.substring(0, url.lastIndexOf("/")); + for (int i = 1; i <= pagesNumber; i++) { + String pageLink = "$pageBase/chapterfun.ashx?cid=$chapterId&page=$i&key=$secretKey"; + String responseText = MBridge.stringParse("", 0); + for (int tr = 1; tr <= 3; tr++) { + if (responseText.isEmpty) { + final headers = { + "Referer": url, + "Accept": "*/*", + "Accept-Language": "en-US,en;q=0.9", + "Connection": "keep-alive", + "Host": "www.mangahere.cc", + "X-Requested-With": "XMLHttpRequest" + }; + final data = {"url": pageLink, "headers": headers}; + final response = await MBridge.http('GET', json.encode(data)); + responseText = MBridge.stringParse(response, 0); + + if (responseText.isEmpty) { + secretKey = ""; + } + } + } + String deobfuscatedScript = MBridge.evalJs(responseText.replaceAll("eval", "")); + + int baseLinkStartPos = deobfuscatedScript.indexOf("pix=") + 5; + int baseLinkEndPos = deobfuscatedScript.indexOf(";", baseLinkStartPos) - 1; + String baseLink = deobfuscatedScript.substring(baseLinkStartPos, baseLinkEndPos); + + int imageLinkStartPos = deobfuscatedScript.indexOf("pvalue=") + 9; + int imageLinkEndPos = deobfuscatedScript.indexOf("\"", imageLinkStartPos); + String imageLink = deobfuscatedScript.substring(imageLinkStartPos, imageLinkEndPos); + pageUrls.add("https:$baseLink$imageLink"); + } + } + + return pageUrls; +} + +Map getHeader(String url) { + final headers = {'Referer': '$url/', "Cookie": "isAdult=1"}; + return headers; +} diff --git a/model/source.dart b/model/source.dart index 4d4c57f9..72d3c29c 100644 --- a/model/source.dart +++ b/model/source.dart @@ -47,7 +47,7 @@ class Source { this.version = "", this.isManga = true, this.isFullData = false, - this.appMinVerReq = "0.0.21"}); + this.appMinVerReq = "0.0.5"}); Map toJson() { return {