From 9b9150366f5316739ecf4e969a0ab8f91654282f Mon Sep 17 00:00:00 2001 From: RndDev123 Date: Fri, 29 Nov 2024 04:09:52 +0100 Subject: [PATCH 01/10] Aniworld: New Host & Language preference filters + lib update Aniworld: - New Host: Luluvdo - Language preference filters Lib: - New Host: Luluvdo --- javascript/anime/src/de/aniworld.js | 50 ++++++++++++++++++++++----- javascript/anime/src/es/animefenix.js | 16 ++++++++- javascript/anime/src/es/jkanime.js | 16 ++++++++- javascript/anime/src/es/tioanime.js | 16 ++++++++- javascript/anime/src/it/animeworld.js | 16 ++++++++- 5 files changed, 102 insertions(+), 12 deletions(-) diff --git a/javascript/anime/src/de/aniworld.js b/javascript/anime/src/de/aniworld.js index 2032e28..fd2e557 100644 --- a/javascript/anime/src/de/aniworld.js +++ b/javascript/anime/src/de/aniworld.js @@ -136,17 +136,20 @@ class DefaultExtension extends MProvider { let promises = []; const videos = []; + const preferences = new SharedPreferences(); + const hostFilter = preferences.get("host_filter"); + const langFilter = preferences.get("lang_filter"); + const redirectsElements = document.select("ul.row li"); - const hostFilter = new SharedPreferences().get("host_filter"); const dartClient = new Client({ 'useDartHttpClient': true, "followRedirects": false }); for (const element of redirectsElements) { + const langkey = element.attr("data-lang-key"); + const lang = (langkey == 1 || langkey == 3) ? 'Deutscher' : 'Englischer'; + const type = (langkey == 1) ? 'Dub' : 'Sub'; const host = element.selectFirst("a h4").text; - if (hostFilter.includes(host)) { - const langkey = element.attr("data-lang-key"); - const lang = (langkey == 1 || langkey == 3) ? 'Deutscher' : 'Englischer'; - const type = (langkey == 1) ? 'Dub' : 'Sub'; + if (/*hostFilter.includes(host) && */langFilter.includes(`${lang} ${type}`)) { const redirect = baseUrl + element.selectFirst("a.watchEpisode").attr("href"); promises.push((async (redirect, lang, type, host) => { const location = (await dartClient.get(redirect)).headers.location; @@ -166,7 +169,14 @@ class DefaultExtension extends MProvider { const languageValues = ['Deutscher', 'Englischer']; const types = ['Dub', 'Sub']; const resolutions = ['1080p', '720p', '480p']; - const hosts = ['Doodstream', 'Filemoon', 'SpeedFiles', 'Streamtape', 'Vidoza', 'VOE']; + const hosts = ['Doodstream', 'Filemoon', 'Luluvdo', 'SpeedFiles', 'Streamtape', 'Vidoza', 'VOE']; + const languageFilters = []; + + for (const lang of languageValues) { + for (const type of types) { + languageFilters.push(`${lang} ${type}`); + } + } return [ { @@ -209,11 +219,21 @@ class DefaultExtension extends MProvider { entryValues: hosts } }, + { + key: "lang_filter", + multiSelectListPreference: { + title: "Sprachen auswählen", + summary: "Wähle aus welche Sprachen dir angezeigt werden sollen. Weniger streams zu laden beschleunigt den Start der Videos.", + entries: languageFilters, + entryValues: languageFilters, + values: languageFilters + } + }, { key: "host_filter", multiSelectListPreference: { title: "Hoster auswählen", - summary: "Wähle aus welche Hoster dir angezeigt werden sollen. Weniger hoster zu laden beschleunigt den Start der Videos.", + summary: "Wähle aus welche Hoster dir angezeigt werden sollen. Weniger streams zu laden beschleunigt den Start der Videos.", entries: hosts, entryValues: hosts, values: hosts @@ -225,7 +245,7 @@ class DefaultExtension extends MProvider { /*************************************************************************************************** * -* mangayomi-js-helpers v1.1 +* mangayomi-js-helpers v1.2 * * # Video Extractors * - vidGuardExtractor @@ -237,6 +257,7 @@ class DefaultExtension extends MProvider { * - filemoonExtractor * - mixdropExtractor * - speedfilesExtractor +* - luluvdoExtractor * - burstcloudExtractor (not working, see description) * * # Video Extractor Wrappers @@ -426,6 +447,14 @@ async function speedfilesExtractor(url) { return [{url: videoUrl, originalUrl: videoUrl, quality: '', headers: null}]; } +async function luluvdoExtractor(url) { + const client = new Client(); + const match = url.match(/(.*?:\/\/.*?)\/.*\/(.*)/); + const headers = {'user-agent': 'Mangayomi'}; + const res = await client.get(`${match[1]}/dl?op=embed&file_code=${match[2]}`, headers); + return await jwplayerExtractor(res.body, headers); +} + /** Does not work: Client always sets 'charset=utf-8' in Content-Type. */ async function burstcloudExtractor(url) { let client = new Client(); @@ -527,6 +556,7 @@ extractAny.methods = { 'burstcloud': burstcloudExtractor, 'doodstream': doodExtractor, 'filemoon': filemoonExtractor, + 'luluvdo': luluvdoExtractor, 'mixdrop': mixdropExtractor, 'mp4upload': mp4UploadExtractor, 'okru': okruExtractor, @@ -578,6 +608,10 @@ async function m3u8Extractor(url, headers = null) { const res = await new Client().get(url, headers); const text = res.body; + if (res.statusCode != 200) { + return []; + } + // collect media for (const match of text.matchAll(/#EXT-X-MEDIA:(.*)/g)) { const info = match[1], medium = {}; diff --git a/javascript/anime/src/es/animefenix.js b/javascript/anime/src/es/animefenix.js index 2d6dc69..713823c 100644 --- a/javascript/anime/src/es/animefenix.js +++ b/javascript/anime/src/es/animefenix.js @@ -293,7 +293,7 @@ class DefaultExtension extends MProvider { /*************************************************************************************************** * -* mangayomi-js-helpers v1.1 +* mangayomi-js-helpers v1.2 * * # Video Extractors * - vidGuardExtractor @@ -305,6 +305,7 @@ class DefaultExtension extends MProvider { * - filemoonExtractor * - mixdropExtractor * - speedfilesExtractor +* - luluvdoExtractor * - burstcloudExtractor (not working, see description) * * # Video Extractor Wrappers @@ -494,6 +495,14 @@ async function speedfilesExtractor(url) { return [{url: videoUrl, originalUrl: videoUrl, quality: '', headers: null}]; } +async function luluvdoExtractor(url) { + const client = new Client(); + const match = url.match(/(.*?:\/\/.*?)\/.*\/(.*)/); + const headers = {'user-agent': 'Mangayomi'}; + const res = await client.get(`${match[1]}/dl?op=embed&file_code=${match[2]}`, headers); + return await jwplayerExtractor(res.body, headers); +} + /** Does not work: Client always sets 'charset=utf-8' in Content-Type. */ async function burstcloudExtractor(url) { let client = new Client(); @@ -595,6 +604,7 @@ extractAny.methods = { 'burstcloud': burstcloudExtractor, 'doodstream': doodExtractor, 'filemoon': filemoonExtractor, + 'luluvdo': luluvdoExtractor, 'mixdrop': mixdropExtractor, 'mp4upload': mp4UploadExtractor, 'okru': okruExtractor, @@ -646,6 +656,10 @@ async function m3u8Extractor(url, headers = null) { const res = await new Client().get(url, headers); const text = res.body; + if (res.statusCode != 200) { + return []; + } + // collect media for (const match of text.matchAll(/#EXT-X-MEDIA:(.*)/g)) { const info = match[1], medium = {}; diff --git a/javascript/anime/src/es/jkanime.js b/javascript/anime/src/es/jkanime.js index cc07039..0bd1f3c 100644 --- a/javascript/anime/src/es/jkanime.js +++ b/javascript/anime/src/es/jkanime.js @@ -388,7 +388,7 @@ class DefaultExtension extends MProvider { /*************************************************************************************************** * -* mangayomi-js-helpers v1.1 +* mangayomi-js-helpers v1.2 * * # Video Extractors * - vidGuardExtractor @@ -400,6 +400,7 @@ class DefaultExtension extends MProvider { * - filemoonExtractor * - mixdropExtractor * - speedfilesExtractor +* - luluvdoExtractor * - burstcloudExtractor (not working, see description) * * # Video Extractor Wrappers @@ -589,6 +590,14 @@ async function speedfilesExtractor(url) { return [{url: videoUrl, originalUrl: videoUrl, quality: '', headers: null}]; } +async function luluvdoExtractor(url) { + const client = new Client(); + const match = url.match(/(.*?:\/\/.*?)\/.*\/(.*)/); + const headers = {'user-agent': 'Mangayomi'}; + const res = await client.get(`${match[1]}/dl?op=embed&file_code=${match[2]}`, headers); + return await jwplayerExtractor(res.body, headers); +} + /** Does not work: Client always sets 'charset=utf-8' in Content-Type. */ async function burstcloudExtractor(url) { let client = new Client(); @@ -690,6 +699,7 @@ extractAny.methods = { 'burstcloud': burstcloudExtractor, 'doodstream': doodExtractor, 'filemoon': filemoonExtractor, + 'luluvdo': luluvdoExtractor, 'mixdrop': mixdropExtractor, 'mp4upload': mp4UploadExtractor, 'okru': okruExtractor, @@ -741,6 +751,10 @@ async function m3u8Extractor(url, headers = null) { const res = await new Client().get(url, headers); const text = res.body; + if (res.statusCode != 200) { + return []; + } + // collect media for (const match of text.matchAll(/#EXT-X-MEDIA:(.*)/g)) { const info = match[1], medium = {}; diff --git a/javascript/anime/src/es/tioanime.js b/javascript/anime/src/es/tioanime.js index 14beccb..80d082a 100644 --- a/javascript/anime/src/es/tioanime.js +++ b/javascript/anime/src/es/tioanime.js @@ -158,7 +158,7 @@ class DefaultExtension extends MProvider { /*************************************************************************************************** * -* mangayomi-js-helpers v1.1 +* mangayomi-js-helpers v1.2 * * # Video Extractors * - vidGuardExtractor @@ -170,6 +170,7 @@ class DefaultExtension extends MProvider { * - filemoonExtractor * - mixdropExtractor * - speedfilesExtractor +* - luluvdoExtractor * - burstcloudExtractor (not working, see description) * * # Video Extractor Wrappers @@ -359,6 +360,14 @@ async function speedfilesExtractor(url) { return [{url: videoUrl, originalUrl: videoUrl, quality: '', headers: null}]; } +async function luluvdoExtractor(url) { + const client = new Client(); + const match = url.match(/(.*?:\/\/.*?)\/.*\/(.*)/); + const headers = {'user-agent': 'Mangayomi'}; + const res = await client.get(`${match[1]}/dl?op=embed&file_code=${match[2]}`, headers); + return await jwplayerExtractor(res.body, headers); +} + /** Does not work: Client always sets 'charset=utf-8' in Content-Type. */ async function burstcloudExtractor(url) { let client = new Client(); @@ -460,6 +469,7 @@ extractAny.methods = { 'burstcloud': burstcloudExtractor, 'doodstream': doodExtractor, 'filemoon': filemoonExtractor, + 'luluvdo': luluvdoExtractor, 'mixdrop': mixdropExtractor, 'mp4upload': mp4UploadExtractor, 'okru': okruExtractor, @@ -511,6 +521,10 @@ async function m3u8Extractor(url, headers = null) { const res = await new Client().get(url, headers); const text = res.body; + if (res.statusCode != 200) { + return []; + } + // collect media for (const match of text.matchAll(/#EXT-X-MEDIA:(.*)/g)) { const info = match[1], medium = {}; diff --git a/javascript/anime/src/it/animeworld.js b/javascript/anime/src/it/animeworld.js index 47fedf3..b447bca 100644 --- a/javascript/anime/src/it/animeworld.js +++ b/javascript/anime/src/it/animeworld.js @@ -314,7 +314,7 @@ class DefaultExtension extends MProvider { /*************************************************************************************************** * -* mangayomi-js-helpers v1.1 +* mangayomi-js-helpers v1.2 * * # Video Extractors * - vidGuardExtractor @@ -326,6 +326,7 @@ class DefaultExtension extends MProvider { * - filemoonExtractor * - mixdropExtractor * - speedfilesExtractor +* - luluvdoExtractor * - burstcloudExtractor (not working, see description) * * # Video Extractor Wrappers @@ -515,6 +516,14 @@ async function speedfilesExtractor(url) { return [{url: videoUrl, originalUrl: videoUrl, quality: '', headers: null}]; } +async function luluvdoExtractor(url) { + const client = new Client(); + const match = url.match(/(.*?:\/\/.*?)\/.*\/(.*)/); + const headers = {'user-agent': 'Mangayomi'}; + const res = await client.get(`${match[1]}/dl?op=embed&file_code=${match[2]}`, headers); + return await jwplayerExtractor(res.body, headers); +} + /** Does not work: Client always sets 'charset=utf-8' in Content-Type. */ async function burstcloudExtractor(url) { let client = new Client(); @@ -616,6 +625,7 @@ extractAny.methods = { 'burstcloud': burstcloudExtractor, 'doodstream': doodExtractor, 'filemoon': filemoonExtractor, + 'luluvdo': luluvdoExtractor, 'mixdrop': mixdropExtractor, 'mp4upload': mp4UploadExtractor, 'okru': okruExtractor, @@ -667,6 +677,10 @@ async function m3u8Extractor(url, headers = null) { const res = await new Client().get(url, headers); const text = res.body; + if (res.statusCode != 200) { + return []; + } + // collect media for (const match of text.matchAll(/#EXT-X-MEDIA:(.*)/g)) { const info = match[1], medium = {}; -- 2.45.2 From 86922fff77a3c39b0a3aad4bd0c6b4955eb27ec9 Mon Sep 17 00:00:00 2001 From: RndDev123 Date: Fri, 29 Nov 2024 08:54:17 +0100 Subject: [PATCH 02/10] Fix Filemoon extractor on Android --- javascript/anime/src/de/aniworld.js | 8 ++++++-- javascript/anime/src/es/animefenix.js | 8 ++++++-- javascript/anime/src/es/jkanime.js | 8 ++++++-- javascript/anime/src/es/tioanime.js | 8 ++++++-- javascript/anime/src/it/animeworld.js | 8 ++++++-- 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/javascript/anime/src/de/aniworld.js b/javascript/anime/src/de/aniworld.js index fd2e557..7ad6027 100644 --- a/javascript/anime/src/de/aniworld.js +++ b/javascript/anime/src/de/aniworld.js @@ -384,15 +384,19 @@ async function vidHideExtractor(url) { } async function filemoonExtractor(url, headers) { + headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; + delete headers['user-agent']; + let res = await new Client().get(url, headers); const src = res.body.match(/iframe src="(.*?)"/)?.[1]; if (src) { res = await new Client().get(src, { 'Referer': url, - 'Accept-Language': 'de,en-US;q=0.7,en;q=0.3' + 'Accept-Language': 'de,en-US;q=0.7,en;q=0.3', + 'User-Agent': headers['User-Agent'] }); } - return await jwplayerExtractor(res.body); + return await jwplayerExtractor(res.body, headers); } async function mixdropExtractor(url) { diff --git a/javascript/anime/src/es/animefenix.js b/javascript/anime/src/es/animefenix.js index 713823c..ca8c749 100644 --- a/javascript/anime/src/es/animefenix.js +++ b/javascript/anime/src/es/animefenix.js @@ -432,15 +432,19 @@ async function vidHideExtractor(url) { } async function filemoonExtractor(url, headers) { + headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; + delete headers['user-agent']; + let res = await new Client().get(url, headers); const src = res.body.match(/iframe src="(.*?)"/)?.[1]; if (src) { res = await new Client().get(src, { 'Referer': url, - 'Accept-Language': 'de,en-US;q=0.7,en;q=0.3' + 'Accept-Language': 'de,en-US;q=0.7,en;q=0.3', + 'User-Agent': headers['User-Agent'] }); } - return await jwplayerExtractor(res.body); + return await jwplayerExtractor(res.body, headers); } async function mixdropExtractor(url) { diff --git a/javascript/anime/src/es/jkanime.js b/javascript/anime/src/es/jkanime.js index 0bd1f3c..8f05c47 100644 --- a/javascript/anime/src/es/jkanime.js +++ b/javascript/anime/src/es/jkanime.js @@ -527,15 +527,19 @@ async function vidHideExtractor(url) { } async function filemoonExtractor(url, headers) { + headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; + delete headers['user-agent']; + let res = await new Client().get(url, headers); const src = res.body.match(/iframe src="(.*?)"/)?.[1]; if (src) { res = await new Client().get(src, { 'Referer': url, - 'Accept-Language': 'de,en-US;q=0.7,en;q=0.3' + 'Accept-Language': 'de,en-US;q=0.7,en;q=0.3', + 'User-Agent': headers['User-Agent'] }); } - return await jwplayerExtractor(res.body); + return await jwplayerExtractor(res.body, headers); } async function mixdropExtractor(url) { diff --git a/javascript/anime/src/es/tioanime.js b/javascript/anime/src/es/tioanime.js index 80d082a..acbe411 100644 --- a/javascript/anime/src/es/tioanime.js +++ b/javascript/anime/src/es/tioanime.js @@ -297,15 +297,19 @@ async function vidHideExtractor(url) { } async function filemoonExtractor(url, headers) { + headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; + delete headers['user-agent']; + let res = await new Client().get(url, headers); const src = res.body.match(/iframe src="(.*?)"/)?.[1]; if (src) { res = await new Client().get(src, { 'Referer': url, - 'Accept-Language': 'de,en-US;q=0.7,en;q=0.3' + 'Accept-Language': 'de,en-US;q=0.7,en;q=0.3', + 'User-Agent': headers['User-Agent'] }); } - return await jwplayerExtractor(res.body); + return await jwplayerExtractor(res.body, headers); } async function mixdropExtractor(url) { diff --git a/javascript/anime/src/it/animeworld.js b/javascript/anime/src/it/animeworld.js index b447bca..11b7b33 100644 --- a/javascript/anime/src/it/animeworld.js +++ b/javascript/anime/src/it/animeworld.js @@ -453,15 +453,19 @@ async function vidHideExtractor(url) { } async function filemoonExtractor(url, headers) { + headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; + delete headers['user-agent']; + let res = await new Client().get(url, headers); const src = res.body.match(/iframe src="(.*?)"/)?.[1]; if (src) { res = await new Client().get(src, { 'Referer': url, - 'Accept-Language': 'de,en-US;q=0.7,en;q=0.3' + 'Accept-Language': 'de,en-US;q=0.7,en;q=0.3', + 'User-Agent': headers['User-Agent'] }); } - return await jwplayerExtractor(res.body); + return await jwplayerExtractor(res.body, headers); } async function mixdropExtractor(url) { -- 2.45.2 From 6bf8fa6018ec3718b2fd5d2f1e0ae2064f147357 Mon Sep 17 00:00:00 2001 From: RndDev123 Date: Fri, 29 Nov 2024 08:59:30 +0100 Subject: [PATCH 03/10] + --- javascript/anime/src/de/aniworld.js | 2 +- javascript/anime/src/es/animefenix.js | 2 +- javascript/anime/src/es/jkanime.js | 2 +- javascript/anime/src/es/tioanime.js | 2 +- javascript/anime/src/it/animeworld.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/javascript/anime/src/de/aniworld.js b/javascript/anime/src/de/aniworld.js index 7ad6027..c1944ac 100644 --- a/javascript/anime/src/de/aniworld.js +++ b/javascript/anime/src/de/aniworld.js @@ -7,7 +7,7 @@ const mangayomiSources = [{ "typeSource": "single", "isManga": false, "isNsfw": false, - "version": "0.3.0", + "version": "0.3.1", "dateFormat": "", "dateFormatLocale": "", "pkgPath": "anime/src/de/aniworld.js" diff --git a/javascript/anime/src/es/animefenix.js b/javascript/anime/src/es/animefenix.js index ca8c749..967343f 100644 --- a/javascript/anime/src/es/animefenix.js +++ b/javascript/anime/src/es/animefenix.js @@ -6,7 +6,7 @@ const mangayomiSources = [{ "iconUrl": "https://www3.animefenix.tv/themes/fenix-neo/images/AveFenix.png", "typeSource": "single", "isManga": false, - "version": "0.1.12", + "version": "0.1.13", "dateFormat": "", "dateFormatLocale": "", "pkgPath": "anime/src/es/animefenix.js" diff --git a/javascript/anime/src/es/jkanime.js b/javascript/anime/src/es/jkanime.js index 8f05c47..0101a48 100644 --- a/javascript/anime/src/es/jkanime.js +++ b/javascript/anime/src/es/jkanime.js @@ -6,7 +6,7 @@ const mangayomiSources = [{ "iconUrl": "https://cdn.jkanime.net/logo_jk.png", "typeSource": "single", "isManga": false, - "version": "0.1.12", + "version": "0.1.13", "dateFormat": "", "dateFormatLocale": "", "pkgPath": "anime/src/es/jkanime.js" diff --git a/javascript/anime/src/es/tioanime.js b/javascript/anime/src/es/tioanime.js index acbe411..67e41f4 100644 --- a/javascript/anime/src/es/tioanime.js +++ b/javascript/anime/src/es/tioanime.js @@ -6,7 +6,7 @@ const mangayomiSources = [{ "iconUrl": "https://tioanime.com/assets/img/tio_fb.jpg", "typeSource": "single", "isManga": false, - "version": "0.1.11", + "version": "0.1.12", "dateFormat": "", "dateFormatLocale": "", "pkgPath": "anime/src/es/tioanime.js" diff --git a/javascript/anime/src/it/animeworld.js b/javascript/anime/src/it/animeworld.js index 11b7b33..8657f46 100644 --- a/javascript/anime/src/it/animeworld.js +++ b/javascript/anime/src/it/animeworld.js @@ -6,7 +6,7 @@ const mangayomiSources = [{ "iconUrl": "https://i.postimg.cc/RFRGfBvP/FVLyB1I.png", "typeSource": "single", "isManga": false, - "version": "0.0.11", + "version": "0.0.12", "dateFormat": "", "dateFormatLocale": "", "pkgPath": "anime/src/it/animeworld.js" -- 2.45.2 From 3c5696e6a5317a5e0c3d5e5eb1cd2081c96fe8d3 Mon Sep 17 00:00:00 2001 From: RndDev123 Date: Fri, 29 Nov 2024 09:14:12 +0100 Subject: [PATCH 04/10] Filemoon init headers --- javascript/anime/src/de/aniworld.js | 1 + javascript/anime/src/es/animefenix.js | 1 + javascript/anime/src/es/jkanime.js | 1 + javascript/anime/src/es/tioanime.js | 1 + javascript/anime/src/it/animeworld.js | 1 + 5 files changed, 5 insertions(+) diff --git a/javascript/anime/src/de/aniworld.js b/javascript/anime/src/de/aniworld.js index c1944ac..41d0f5a 100644 --- a/javascript/anime/src/de/aniworld.js +++ b/javascript/anime/src/de/aniworld.js @@ -384,6 +384,7 @@ async function vidHideExtractor(url) { } async function filemoonExtractor(url, headers) { + headers = headers ?? {}; headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; delete headers['user-agent']; diff --git a/javascript/anime/src/es/animefenix.js b/javascript/anime/src/es/animefenix.js index 967343f..7965a0e 100644 --- a/javascript/anime/src/es/animefenix.js +++ b/javascript/anime/src/es/animefenix.js @@ -432,6 +432,7 @@ async function vidHideExtractor(url) { } async function filemoonExtractor(url, headers) { + headers = headers ?? {}; headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; delete headers['user-agent']; diff --git a/javascript/anime/src/es/jkanime.js b/javascript/anime/src/es/jkanime.js index 0101a48..4a16f28 100644 --- a/javascript/anime/src/es/jkanime.js +++ b/javascript/anime/src/es/jkanime.js @@ -527,6 +527,7 @@ async function vidHideExtractor(url) { } async function filemoonExtractor(url, headers) { + headers = headers ?? {}; headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; delete headers['user-agent']; diff --git a/javascript/anime/src/es/tioanime.js b/javascript/anime/src/es/tioanime.js index 67e41f4..ed8c715 100644 --- a/javascript/anime/src/es/tioanime.js +++ b/javascript/anime/src/es/tioanime.js @@ -297,6 +297,7 @@ async function vidHideExtractor(url) { } async function filemoonExtractor(url, headers) { + headers = headers ?? {}; headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; delete headers['user-agent']; diff --git a/javascript/anime/src/it/animeworld.js b/javascript/anime/src/it/animeworld.js index 8657f46..cce61e6 100644 --- a/javascript/anime/src/it/animeworld.js +++ b/javascript/anime/src/it/animeworld.js @@ -453,6 +453,7 @@ async function vidHideExtractor(url) { } async function filemoonExtractor(url, headers) { + headers = headers ?? {}; headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; delete headers['user-agent']; -- 2.45.2 From e0901a7154b324ff125028c375774139d932cb98 Mon Sep 17 00:00:00 2001 From: RndDev123 Date: Fri, 29 Nov 2024 09:58:02 +0100 Subject: [PATCH 05/10] Update aniworld.js --- javascript/anime/src/de/aniworld.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/anime/src/de/aniworld.js b/javascript/anime/src/de/aniworld.js index 41d0f5a..6594cf2 100644 --- a/javascript/anime/src/de/aniworld.js +++ b/javascript/anime/src/de/aniworld.js @@ -149,7 +149,7 @@ class DefaultExtension extends MProvider { const type = (langkey == 1) ? 'Dub' : 'Sub'; const host = element.selectFirst("a h4").text; - if (/*hostFilter.includes(host) && */langFilter.includes(`${lang} ${type}`)) { + if (hostFilter.includes(host) && langFilter.includes(`${lang} ${type}`)) { const redirect = baseUrl + element.selectFirst("a.watchEpisode").attr("href"); promises.push((async (redirect, lang, type, host) => { const location = (await dartClient.get(redirect)).headers.location; -- 2.45.2 From 1b496ac313b705b62fe7098ec1788fadb1eb942e Mon Sep 17 00:00:00 2001 From: RndDev123 Date: Sat, 30 Nov 2024 05:53:01 +0100 Subject: [PATCH 06/10] Another Filemoon fix --- javascript/anime/src/de/aniworld.js | 2 +- javascript/anime/src/es/animefenix.js | 2 +- javascript/anime/src/es/jkanime.js | 2 +- javascript/anime/src/es/tioanime.js | 2 +- javascript/anime/src/it/animeworld.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/javascript/anime/src/de/aniworld.js b/javascript/anime/src/de/aniworld.js index 6594cf2..ae60b0e 100644 --- a/javascript/anime/src/de/aniworld.js +++ b/javascript/anime/src/de/aniworld.js @@ -385,7 +385,7 @@ async function vidHideExtractor(url) { async function filemoonExtractor(url, headers) { headers = headers ?? {}; - headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; + headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'; delete headers['user-agent']; let res = await new Client().get(url, headers); diff --git a/javascript/anime/src/es/animefenix.js b/javascript/anime/src/es/animefenix.js index 7965a0e..659dd57 100644 --- a/javascript/anime/src/es/animefenix.js +++ b/javascript/anime/src/es/animefenix.js @@ -433,7 +433,7 @@ async function vidHideExtractor(url) { async function filemoonExtractor(url, headers) { headers = headers ?? {}; - headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; + headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'; delete headers['user-agent']; let res = await new Client().get(url, headers); diff --git a/javascript/anime/src/es/jkanime.js b/javascript/anime/src/es/jkanime.js index 4a16f28..0806650 100644 --- a/javascript/anime/src/es/jkanime.js +++ b/javascript/anime/src/es/jkanime.js @@ -528,7 +528,7 @@ async function vidHideExtractor(url) { async function filemoonExtractor(url, headers) { headers = headers ?? {}; - headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; + headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'; delete headers['user-agent']; let res = await new Client().get(url, headers); diff --git a/javascript/anime/src/es/tioanime.js b/javascript/anime/src/es/tioanime.js index ed8c715..dfdf059 100644 --- a/javascript/anime/src/es/tioanime.js +++ b/javascript/anime/src/es/tioanime.js @@ -298,7 +298,7 @@ async function vidHideExtractor(url) { async function filemoonExtractor(url, headers) { headers = headers ?? {}; - headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; + headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'; delete headers['user-agent']; let res = await new Client().get(url, headers); diff --git a/javascript/anime/src/it/animeworld.js b/javascript/anime/src/it/animeworld.js index cce61e6..a73df28 100644 --- a/javascript/anime/src/it/animeworld.js +++ b/javascript/anime/src/it/animeworld.js @@ -454,7 +454,7 @@ async function vidHideExtractor(url) { async function filemoonExtractor(url, headers) { headers = headers ?? {}; - headers['User-Agent'] = headers['User-Agent'] ?? 'Mangayomi'; + headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'; delete headers['user-agent']; let res = await new Client().get(url, headers); -- 2.45.2 From a51943bac4172577580e97dacd6f1f0efccc15cd Mon Sep 17 00:00:00 2001 From: RndDev123 Date: Sat, 30 Nov 2024 15:16:06 +0100 Subject: [PATCH 07/10] New Source: Mangalib (RU) --- javascript/manga/src/ru/mangalib.js | 371 ++++++++++++++++++++++++++++ 1 file changed, 371 insertions(+) create mode 100644 javascript/manga/src/ru/mangalib.js diff --git a/javascript/manga/src/ru/mangalib.js b/javascript/manga/src/ru/mangalib.js new file mode 100644 index 0000000..28e01ce --- /dev/null +++ b/javascript/manga/src/ru/mangalib.js @@ -0,0 +1,371 @@ +const mangayomiSources = [{ + "name": "Mangalib", + "lang": 'ru', + "baseUrl": "https://mangalib.org/ru", + "apiUrl": "https://api.mangalib.me/api", + "iconUrl": "https://mangalib.org/static/images/logo/ml/icon-180.png", + "typeSource": "single", + "isManga": true, + "isNsfw": true, + "version": "0.0.1", + "dateFormat": "", + "dateFormatLocale": "", + "pkgPath": "manga/src/ru/mangalib.js" +}]; + +// filters: https://api.mangalib.me/api/constants?fields[]=genres&fields[]=tags&fields[]=types&fields[]=scanlateStatus&fields[]=status&fields[]=format&fields[]=ageRestriction +// directory: https://api.mangalib.me/api/manga?q=encodeURIComponent(query)&sort_by=(|chap_count|views|rate_avg|releaseDate|last_chapter_at|created_at|name|rus_name)&sort_type=(|asc)&page=2 +// details: https://api.mangalib.me/api/manga/34466--jeonjijeog-dogja-sijeom_?fields[]=chap_count&fields[]=summary&fields[]=genres&fields[]=authors&fields[]=artists +// chapters: https://api.mangalib.me/api/manga/34466--jeonjijeog-dogja-sijeom_/chapters +// pages: https://api.mangalib.me/api/manga/34466--jeonjijeog-dogja-sijeom_/chapter?number=147&volume=1 +// image servers: https://api.mangalib.me/api/constants?fields[]=imageServers +class DefaultExtension extends MProvider { + constructor () { + super(); + this.client = new Client(); + this.apiHeaders = { + 'accept': '*/*', + 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'}; + this.getFilterUrl = this.source.apiUrl + '/constants?fields[]=genres&fields[]=tags&fields[]=types&fields[]=scanlateStatus&fields[]=status&fields[]=format&fields[]=ageRestriction'; + } + parseStatus(status) { + return { + 'In corso': 0, + 'Finito': 1, + 'In pausa': 2, + 'Droppato': 3, + 'Cancellato': 3 + }[status] ?? 5; + } + async parseMangaList(url) { + const res = await this.client.get(url, this.apiHeaders); + const json = JSON.parse(res.body); + let mangas = json.data.map(manga => ({ + name: manga.rus_name, + imageUrl: manga.cover.default, + link: manga.slug_url + })); + return { "list": mangas, "hasNextPage": json.meta.has_next_page }; + } + async getPopular(page) { + return await this.parseMangaList(this.source.apiUrl + `/manga?page=${page}`); + } + async getLatestUpdates(page) { + return await this.parseMangaList(this.source.apiUrl + `/manga?page=${page}&sort_by=last_chapter_at`); + } + async search(query, page, filters) { + let url = `${this.source.apiUrl}/manga?q=${encodeURIComponent(query)}` + // Search sometimes failed because filters were empty. I experienced this mostly on android... + if (!filters || filters.length == 0) { + return await this.parseMangaList(url + `&page=${page}`); + } + for (const filter of filters[0].state) { + if (filter.state == true) + url += `&types[]=${filter.value}`; + } + for (const filter of filters[1].state) { + if (filter.state == true) + url += `&caution[]=${filter.value}`; + } + + const minChapF = filters[2].state[0]; + const maxChapF = filters[2].state[1]; + const minChap = minChapF.values[minChapF.state].value; + const maxChap = maxChapF.values[maxChapF.state].value; + url += minChap ? `&chap_count_min=${minChap}` : ''; + url += maxChap ? `&chap_count_max=${maxChap}` : ''; + + const minYearF = filters[3].state[0]; + const maxYearF = filters[3].state[1]; + const minYear = minYearF.values[minYearF.state].value; + const maxYear = maxYearF.values[maxYearF.state].value; + url += minYear ? `&year_min=${minYear}` : ''; + url += maxYear ? `&year_max=${maxYear}` : ''; + + for (const filter of filters[4].state) { + if (filter.state == 1) + url += `&genres[]=${filter.value}`; + else if (filter.state == 2) + url += `&genres_exclude[]=${filter.value}`; + } + for (const filter of filters[5].state) { + if (filter.state == true) + url += `&status[]=${filter.value}`; + } + for (const filter of filters[6].state) { + if (filter.state == true) + url += `&scanlate_status[]=${filter.value}`; + } + for (const filter of filters[7].state) { + if (filter.state == 1) + url += `&format[]=${filter.value}`; + else if (filter.state == 2) + url += `&format_exclude[]=${filter.value}`; + } + const sortVal = filters[8].values[filters[8].state.index].value; + const sortType = filters[8].state.ascending ? 'asc' : ''; + url += sortVal ? `&sort_by=${sortVal}` : ''; + url += sortType ? `&sort_type=${sortType}` : ''; + + return await this.parseMangaList(url + `&page=${page}`); + } + async getDetail(url) { + const infoRes = await this.client.get(`${this.source.apiUrl}/manga/${url}?fields[]=chap_count&fields[]=summary&fields[]=genres&fields[]=authors&fields[]=artists`, this.apiHeaders); + const chapterRes = await this.client.get(`${this.source.apiUrl}/manga/${url}/chapters`, this.apiHeaders); + + const info = JSON.parse(infoRes.body).data; + const chapters = JSON.parse(chapterRes.body).data; + const chapterBaseUrl = `${this.source.apiUrl}/manga/${url}/chapter`; + + return { + name: info.name, + imageUrl: info.cover.default, + author: info.authors.map(x => x.name).join(', '), + artist: info.artists.map(x => x.name).join(', '), + status: this.parseStatus(info.status.label), + description: info.summary, + genre: info.genres.map(x => x.name), + chapters: chapters.map(c => ({ + name: `Том ${c.volume} Глава ${c.number}` + (c.name ? `: ${c.name}` : ''), + url: `${chapterBaseUrl}?number=${c.number}&volume=${c.volume}`, + dateUpload: new Date(c.branches[0].created_at).valueOf().toString(), + scanlator: c.branches[0].teams.map(x => x.name).join(', ') + })).reverse() + }; + } + // For manga chapter pages + async getPageList(url) { + const serverId = new SharedPreferences().get('imageServer'); + + let res = await this.client.get(`${this.source.apiUrl}/constants?fields[]=imageServers`, this.apiHeaders); + const imageServers = JSON.parse(res.body).data.imageServers; + const imageServer = imageServers.find(x => x.id == serverId).url; + + res = await this.client.get(url, this.apiHeaders); + const chapter = JSON.parse(res.body).data; + return chapter.pages.map(img => ({url: imageServer + img.url, headers: this.apiHeaders})); + } + getFilterList() { + const chapterCounts = ['1','5','10','20','30','40','50','100','200','500','1000','2000','5000','10000'].map(x => [x, x]); + const years = [...range(1980, new Date().getFullYear() + 1, -1), ...range(1930, 1971, -10)].map(x => { + x = x.toString(); + return [x, x]; + }); + return [ + { + type_name: "GroupFilter", + type: "type", + name: "Тип", + state: [ + ["Манга", 1], + ["OEL-манга", 4], + ["Манхва", 5], + ["Маньхуа", 6], + ["Руманга", 8], + ["Комикс", 9] + ].map(x => ({ type_name: 'CheckBox', name: x[0], value: `${x[1]}` })) + }, + { + type_name: "GroupFilter", + type: "age_restriction", + name: "возрастной рейтинг", + state: [ + ["Нет", 0], + ["6+", 1], + ["12+", 2], + ["16+", 3], + ["18+", 4] + ].map(x => ({ type_name: 'CheckBox', name: x[0], value: `${x[1]}` })) + }, + { + type_name: "GroupFilter", + type: "chapter_count", + name: "Количество глав", + state: [ + { + type_name: "SelectFilter", + type: "chap_count_min", + name: "от", + state: 0, + values: [['от', ''], ...chapterCounts].map(x => ({ type_name: 'SelectOption', name: x[0], value: x[1] })) + }, + { + type_name: "SelectFilter", + type: "chap_count_max", + name: "до", + state: 0, + values: [['до', ''], ...chapterCounts].map(x => ({ type_name: 'SelectOption', name: x[0], value: x[1] })) + } + ] + }, + { + type_name: "GroupFilter", + type: "years", + name: "Год выпуска", + state: [ + { + type_name: "SelectFilter", + type: "year_min", + name: "от", + state: 0, + values: [['от', ''], ...years].map(x => ({ type_name: 'SelectOption', name: x[0], value: x[1] })) + }, + { + type_name: "SelectFilter", + type: "year_max", + name: "до", + state: 0, + values: [['до', ''], ...years].map(x => ({ type_name: 'SelectOption', name: x[0], value: x[1] })) + } + ] + }, + { + type_name: "GroupFilter", + type: "genre", + name: "Жанры", + state: [ + ["Арт", 32, false], + ["Безумие", 91, false], + ["Боевик", 34, false], + ["Боевые искусства", 35, false], + ["Вампиры", 36, false], + ["Военное", 89, false], + ["Гарем", 37, false], + ["Гендерная интрига", 38, false], + ["Героическое фэнтези", 39, false], + ["Демоны", 81, false], + ["Детектив", 40, false], + ["Детское", 88, false], + ["Драма", 43, false], + ["Игра", 44, false], + ["Исекай", 79, false], + ["История", 45, false], + ["Киберпанк", 46, false], + ["Кодомо", 76, false], + ["Комедия", 47, false], + ["Космос", 83, false], + ["Магия", 85, false], + ["Махо-сёдзё", 48, false], + ["Машины", 90, false], + ["Меха", 49, false], + ["Мистика", 50, false], + ["Музыка", 80, false], + ["Научная фантастика", 51, false], + ["Омегаверс", 77, false], + ["Пародия", 86, false], + ["Повседневность", 52, false], + ["Полиция", 82, false], + ["Постапокалиптика", 53, false], + ["Приключения", 54, false], + ["Психология", 55, false], + ["Романтика", 56, false], + ["Самурайский боевик", 57, false], + ["Сверхъестественное", 58, false], + ["Сёдзё", 59, false], + ["Сёдзё-ай", 60, false], + ["Сёнэн-ай", 62, true], + ["Спорт", 63, false], + ["Супер сила", 87, false], + ["Сэйнэн", 64, false], + ["Трагедия", 65, false], + ["Триллер", 66, false], + ["Ужасы", 67, false], + ["Фантастика", 68, false], + ["Фэнтези", 69, false], + ["Хентай", 84, false], + ["Эротика", 71, true], + ["Этти", 72, false] + ].map(x => ({ type_name: 'TriState', name: x[0], value: `${x[1]}` })) + }, + { + type_name: "GroupFilter", + type: "status", + name: "Статус титула", + state: [ + ["Онгоинг", 1], + ["Завершён", 2], + ["Анонс", 3], + ["Приостановлен", 4], + ["Выпуск прекращён", 5] + ].map(x => ({ type_name: 'CheckBox', name: x[0], value: `${x[1]}` })) + }, + { + type_name: "GroupFilter", + type: "translation_status", + name: "Статус перевода", + state: [ + ["Продолжается", 1], + ["Завершён", 2], + ["Заморожен", 3], + ["Заброшен", 4] + ].map(x => ({ type_name: 'CheckBox', name: x[0], value: `${x[1]}` })) + }, + { + type_name: "GroupFilter", + type: "format", + name: "Формат выпуска", + state: [ + ["4-кома (Ёнкома)", 1], + ["Сборник", 2], + ["Додзинси", 3], + ["В цвете", 4], + ["Сингл", 5], + ["Веб", 6], + ["Вебтун", 7] + ].map(x => ({ type_name: 'TriState', name: x[0], value: `${x[1]}` })) + }, + { + type_name: "SortFilter", + type: "sort", + name: "Сортировать", + state: { + type_name: "SortState", + index: 0, + ascending: false + }, + values: [ + ['По популярности', ''], + ['По рейтингу', 'rate_avg'], + ['По просмотрам', 'views'], + ['Количество глав', 'chap_count'], + ['дата релиза', 'releaseDate'], + ['дата обновления', 'last_chapter_at'], + ['дата добавления', 'created_at'], + ['По названию (A-Z)', 'name'], + ['По названию (A-Я)', 'rus_name'] + ].map(x => ({ type_name: 'SelectOption', name: x[0], value: x[1] })) + } + ]; + } + getSourcePreferences() { + const imageServers = ['Первый', 'Второй', 'Сжатия', 'Скачивание', 'Crop pages']; + const imageServerValuess = ['main', 'secondary', 'compress', 'download', 'crop']; + return [ + { + key: 'imageServer', + listPreference: { + title: 'Image Server', + summary: '', + valueIndex: 2, + entries: imageServers, + entryValues: imageServerValuess + } + } + ]; + } +} + +function range (first, last, step) { + if (last <= first) + return []; + if (!step) { + step = 1; + } + if (!last) { + last = first; + first = 0; + } + const start = step > 0 ? first : last - 1; + let length = Math.ceil((last - first) / Math.abs(step)); + return Array.from(new Array(length), (x, i) => start + i * step); +} \ No newline at end of file -- 2.45.2 From 2c2c04a897492283b36a65cdfd51c69e267de38e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 30 Nov 2024 14:20:57 +0000 Subject: [PATCH 08/10] Update extensions --- anime_index.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/anime_index.json b/anime_index.json index 93ebcc1..bcd1435 100644 --- a/anime_index.json +++ b/anime_index.json @@ -1 +1 @@ -[{"name":"Gogoanime","id":1061885186,"baseUrl":"https://anitaku.to","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/gogoanime/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/gogoanime/gogoanime.dart","apiUrl":"","version":"0.1.15","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"FrAnime","id":870016579,"baseUrl":"https://franime.fr","lang":"fr","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/franime/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/franime/franime.dart","apiUrl":"https://api.franime.fr","version":"0.0.75","isManga":false,"isFullData":true,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"OtakuFr","id":828939690,"baseUrl":"https://otakufr.cc","lang":"fr","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/otakufr/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/otakufr/otakufr.dart","apiUrl":"","version":"0.0.95","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimesUltra","id":1050779985,"baseUrl":"https://w2.animesultra.net","lang":"fr","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/animesultra/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/animesultra/animesultra.dart","apiUrl":"","version":"0.0.75","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"HiAnime","id":814067600,"baseUrl":"https://hianime.to","lang":"en","typeSource":"zorotheme","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/zorotheme/src/hianime/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/zorotheme/zorotheme.dart","apiUrl":"","version":"0.0.95","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Kaido.to","id":961999573,"baseUrl":"https://kaido.to","lang":"en","typeSource":"zorotheme","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/zorotheme/src/kaido/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/zorotheme/zorotheme.dart","apiUrl":"","version":"0.0.95","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"KissKH","id":614402273,"baseUrl":"https://kisskh.co","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/kisskh/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/kisskh/kisskh.dart","apiUrl":"","version":"0.0.6","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Okanime","id":816422873,"baseUrl":"https://www.okanime.xyz","lang":"ar","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/ar/okanime/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/ar/okanime/okanime.dart","apiUrl":"","version":"0.0.55","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"OtakuDesu","id":857966631,"baseUrl":"https://otakudesu.cloud","lang":"id","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/id/otakudesu/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/id/otakudesu/otakudesu.dart","apiUrl":"","version":"0.0.55","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"NimeGami","id":228390212,"baseUrl":"https://nimegami.id","lang":"id","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/id/nimegami/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/id/nimegami/nimegami.dart","apiUrl":"","version":"0.0.55","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Oploverz","id":354763978,"baseUrl":"https://oploverz.gold","lang":"id","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/id/oploverz/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/id/oploverz/oploverz.dart","apiUrl":"","version":"0.0.5","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"DopeBox","id":640189912,"baseUrl":"https://dopebox.to","lang":"en","typeSource":"dopeflix","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/dopeflix/src/dopebox/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/dopeflix/dopeflix.dart","apiUrl":"","version":"0.0.55","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"SFlix","id":372182741,"baseUrl":"https://sflix.to","lang":"en","typeSource":"dopeflix","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/dopeflix/src/sflix/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/dopeflix/dopeflix.dart","apiUrl":"","version":"0.0.55","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeSaturn","id":817602961,"baseUrl":"https://www.animesaturn.cx","lang":"it","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/it/animesaturn/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/it/animesaturn/animesaturn.dart","apiUrl":"","version":"0.0.4","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"UHD Movies","id":412887556,"baseUrl":"https://uhdmovies.fans","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/uhdmovies/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/uhdmovies/uhdmovies.dart","apiUrl":"","version":"0.0.45","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"French Anime","id":419375321,"baseUrl":"https://french-anime.com","lang":"fr","typeSource":"datalifeengine","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/datalifeengine/src/frenchanime/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/datalifeengine/datalifeengine.dart","apiUrl":"","version":"0.0.6","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Wiflix","id":1054910447,"baseUrl":"https://wiflix-hd.vip","lang":"fr","typeSource":"datalifeengine","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/datalifeengine/src/wiflix/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/datalifeengine/datalifeengine.dart","apiUrl":"","version":"0.0.6","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Filma24","id":892266880,"baseUrl":"https://www.filma24.pl","lang":"sq","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/sq/filma24/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/sq/filma24/filma24.dart","apiUrl":"","version":"0.0.35","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"DramaCool","id":331292187,"baseUrl":"https://dramacool.pa","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/dramacool/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/dramacool/dramacool.dart","apiUrl":"","version":"0.0.25","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"YoMovies","id":537166091,"baseUrl":"https://yomovies.boo","lang":"hi","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/hi/yomovies/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/hi/yomovies/yomovies.dart","apiUrl":"","version":"0.0.25","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Anime-Sama","id":32228290,"baseUrl":"https://anime-sama.fr","lang":"fr","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/animesama/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/animesama/animesama.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"9AnimeTv","id":957331416,"baseUrl":"https://9animetv.to","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/nineanimetv/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/nineanimetv/nineanimetv.dart","apiUrl":"","version":"0.0.4","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":529552861,"baseUrl":"https://anime-world.in","lang":"all","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":298117146,"baseUrl":"https://anime-world.in","lang":"en","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":953375665,"baseUrl":"https://anime-world.in","lang":"bn","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":788028349,"baseUrl":"https://anime-world.in","lang":"hi","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":486955727,"baseUrl":"https://anime-world.in","lang":"ja","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":571428165,"baseUrl":"https://anime-world.in","lang":"ml","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":976578551,"baseUrl":"https://anime-world.in","lang":"mr","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":908421454,"baseUrl":"https://anime-world.in","lang":"ta","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":619885111,"baseUrl":"https://anime-world.in","lang":"te","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Nyaa","id":204272987,"baseUrl":"https://nyaa.si","lang":"all","typeSource":"torrent","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/nyaa/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/nyaa/nyaa.dart","apiUrl":"","version":"0.0.2","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimePahe","id":534387145,"baseUrl":"https://www.animepahe.ru","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/animepahe/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/animepahe/animepahe.dart","apiUrl":"","version":"0.0.4","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeToast","id":922522471,"baseUrl":"https://animetoast.cc","lang":"de","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/de/animetoast/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/de/animetoast/animetoast.dart","apiUrl":"","version":"0.0.2","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimesVision","id":182512102,"baseUrl":"https://animes.vision","lang":"pt-br","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/pt/animesvision/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/pt/animesvision/animesvision.dart","apiUrl":"","version":"0.0.15","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"diziWatch","id":585912766,"baseUrl":"https://diziwatch.net","lang":"tr","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/tr/diziwatch/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/tr/diziwatch/diziwatch.dart","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AniZone","id":525728745,"baseUrl":"https://v1.animesz.xyz","lang":"fr","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/anizone/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/anizone/anizone.dart","apiUrl":"","version":"0.0.2","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeOnline.Ninja","id":802700084,"baseUrl":"https://ww3.animeonline.ninja","lang":"es","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/es/animeonlineninja/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/es/animeonlineninja/animeonlineninja.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld","id":368490446,"baseUrl":"https://www.animeworld.so","lang":"it","typeSource":"single","iconUrl":"https://i.postimg.cc/RFRGfBvP/FVLyB1I.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/it/animeworld.js","apiUrl":"","version":"0.0.11","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"SerienStream","id":178264452,"baseUrl":"https://s.to","lang":"de","typeSource":"single","iconUrl":"https://s.to/favicon.ico","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/de/serienstream.js","apiUrl":"","version":"0.0.2","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"AniWorld","id":746621198,"baseUrl":"https://aniworld.to","lang":"de","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/icon/de.aniworld.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/de/aniworld.js","apiUrl":"","version":"0.3.0","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"AnimeFénix","id":750391210,"baseUrl":"https://www3.animefenix.tv","lang":"es","typeSource":"single","iconUrl":"https://www3.animefenix.tv/themes/fenix-neo/images/AveFenix.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/es/animefenix.js","apiUrl":"","version":"0.1.12","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"AnimeFLV","id":32554550,"baseUrl":"https://www3.animeflv.net","lang":"es","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/icon/es.animeflv.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/es/animeflv.js","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"JKAnime","id":1018721463,"baseUrl":"https://jkanime.net","lang":"es","typeSource":"single","iconUrl":"https://cdn.jkanime.net/logo_jk.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/es/jkanime.js","apiUrl":"","version":"0.1.12","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"TioAnime","id":156757473,"baseUrl":"https://tioanime.com","lang":"es","typeSource":"single","iconUrl":"https://tioanime.com/assets/img/tio_fb.jpg","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/es/tioanime.js","apiUrl":"","version":"0.1.11","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"非凡资源","id":797525486,"baseUrl":"http://ffzy.tv","lang":"zh","typeSource":"single","iconUrl":"http://ffzy.tv/template/default/img/favicon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/ffzy.js","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"樱花动漫","id":781484038,"baseUrl":"http://www.iyinghua.io","lang":"zh","typeSource":"single","iconUrl":"http://www.iyinghua.io/js/20180601/favicon.ico","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/yhdm.js","apiUrl":"","version":"0.0.15","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"360资源","id":750729164,"baseUrl":"https://360zy.com","lang":"zh","typeSource":"single","iconUrl":"https://360zy.com/favicon.ico","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/360zy.js","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"极速资源","id":593630482,"baseUrl":"https://wwww.jisuzy.com","lang":"zh","typeSource":"single","iconUrl":"https://www.jisuzy.com/template/default/images/site_logo.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/jisuzy.js","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"天空资源网","id":967317255,"baseUrl":"https://tiankongzy.com","lang":"zh","typeSource":"single","iconUrl":"https://api.tiankongapi.com/template/v10012/images/logo.jpg","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/tiankongzy.js","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"玩偶哥哥","id":14810567,"baseUrl":"https://www.wogg.net","lang":"zh","typeSource":"single","iconUrl":"https://imgsrc.baidu.com/forum/pic/item/4b90f603738da977d5da660af651f8198618e31f.jpg","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/wogg.js","apiUrl":"","version":"0.0.2","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"多多影音","id":400189518,"baseUrl":"https://tv.yydsys.top","lang":"zh","typeSource":"single","iconUrl":"https://tv.yydsys.top/template/DYXS2/static/picture/logo.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/yydsys.js","apiUrl":"","version":"0.0.2","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"华为吧资源","id":790593517,"baseUrl":"https://huaweiba.live","lang":"zh","typeSource":"single","iconUrl":"https://huaweiba.live/template/ziyuan/images/logo2.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/huaweiba.js","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"蜜柑计划","id":1032743453,"baseUrl":"https://mikanime.tv","lang":"zh","typeSource":"torrent","iconUrl":"https://mikanime.tv/images/mikan-pic.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/mikan.js","apiUrl":"","version":"0.0.15","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"AllAnime","id":558217176,"baseUrl":"https://allanime.to","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/icon/en.allanime.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/en/allanime.js","apiUrl":"https://api.allanime.day/api","version":"0.0.35","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"NetflixMirror","id":446414301,"baseUrl":"https://iosmirror.cc","lang":"all","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/icon/all.netflixmirror.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/all/netflixmirror.js","apiUrl":"","version":"0.0.45","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1}] \ No newline at end of file +[{"name":"Gogoanime","id":1061885186,"baseUrl":"https://anitaku.to","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/gogoanime/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/gogoanime/gogoanime.dart","apiUrl":"","version":"0.1.15","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"FrAnime","id":870016579,"baseUrl":"https://franime.fr","lang":"fr","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/franime/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/franime/franime.dart","apiUrl":"https://api.franime.fr","version":"0.0.75","isManga":false,"isFullData":true,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"OtakuFr","id":828939690,"baseUrl":"https://otakufr.cc","lang":"fr","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/otakufr/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/otakufr/otakufr.dart","apiUrl":"","version":"0.0.95","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimesUltra","id":1050779985,"baseUrl":"https://w2.animesultra.net","lang":"fr","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/animesultra/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/animesultra/animesultra.dart","apiUrl":"","version":"0.0.75","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"HiAnime","id":814067600,"baseUrl":"https://hianime.to","lang":"en","typeSource":"zorotheme","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/zorotheme/src/hianime/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/zorotheme/zorotheme.dart","apiUrl":"","version":"0.0.95","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Kaido.to","id":961999573,"baseUrl":"https://kaido.to","lang":"en","typeSource":"zorotheme","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/zorotheme/src/kaido/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/zorotheme/zorotheme.dart","apiUrl":"","version":"0.0.95","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"KissKH","id":614402273,"baseUrl":"https://kisskh.co","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/kisskh/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/kisskh/kisskh.dart","apiUrl":"","version":"0.0.6","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Okanime","id":816422873,"baseUrl":"https://www.okanime.xyz","lang":"ar","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/ar/okanime/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/ar/okanime/okanime.dart","apiUrl":"","version":"0.0.55","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"OtakuDesu","id":857966631,"baseUrl":"https://otakudesu.cloud","lang":"id","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/id/otakudesu/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/id/otakudesu/otakudesu.dart","apiUrl":"","version":"0.0.55","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"NimeGami","id":228390212,"baseUrl":"https://nimegami.id","lang":"id","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/id/nimegami/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/id/nimegami/nimegami.dart","apiUrl":"","version":"0.0.55","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Oploverz","id":354763978,"baseUrl":"https://oploverz.gold","lang":"id","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/id/oploverz/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/id/oploverz/oploverz.dart","apiUrl":"","version":"0.0.5","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"DopeBox","id":640189912,"baseUrl":"https://dopebox.to","lang":"en","typeSource":"dopeflix","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/dopeflix/src/dopebox/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/dopeflix/dopeflix.dart","apiUrl":"","version":"0.0.55","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"SFlix","id":372182741,"baseUrl":"https://sflix.to","lang":"en","typeSource":"dopeflix","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/dopeflix/src/sflix/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/dopeflix/dopeflix.dart","apiUrl":"","version":"0.0.55","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeSaturn","id":817602961,"baseUrl":"https://www.animesaturn.cx","lang":"it","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/it/animesaturn/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/it/animesaturn/animesaturn.dart","apiUrl":"","version":"0.0.4","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"UHD Movies","id":412887556,"baseUrl":"https://uhdmovies.fans","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/uhdmovies/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/uhdmovies/uhdmovies.dart","apiUrl":"","version":"0.0.45","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"French Anime","id":419375321,"baseUrl":"https://french-anime.com","lang":"fr","typeSource":"datalifeengine","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/datalifeengine/src/frenchanime/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/datalifeengine/datalifeengine.dart","apiUrl":"","version":"0.0.6","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Wiflix","id":1054910447,"baseUrl":"https://wiflix-hd.vip","lang":"fr","typeSource":"datalifeengine","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/datalifeengine/src/wiflix/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/multisrc/datalifeengine/datalifeengine.dart","apiUrl":"","version":"0.0.6","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Filma24","id":892266880,"baseUrl":"https://www.filma24.pl","lang":"sq","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/sq/filma24/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/sq/filma24/filma24.dart","apiUrl":"","version":"0.0.35","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"DramaCool","id":331292187,"baseUrl":"https://dramacool.pa","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/dramacool/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/dramacool/dramacool.dart","apiUrl":"","version":"0.0.25","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"YoMovies","id":537166091,"baseUrl":"https://yomovies.boo","lang":"hi","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/hi/yomovies/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/hi/yomovies/yomovies.dart","apiUrl":"","version":"0.0.25","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Anime-Sama","id":32228290,"baseUrl":"https://anime-sama.fr","lang":"fr","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/animesama/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/animesama/animesama.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"9AnimeTv","id":957331416,"baseUrl":"https://9animetv.to","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/nineanimetv/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/nineanimetv/nineanimetv.dart","apiUrl":"","version":"0.0.4","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":529552861,"baseUrl":"https://anime-world.in","lang":"all","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":298117146,"baseUrl":"https://anime-world.in","lang":"en","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":953375665,"baseUrl":"https://anime-world.in","lang":"bn","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":788028349,"baseUrl":"https://anime-world.in","lang":"hi","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":486955727,"baseUrl":"https://anime-world.in","lang":"ja","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":571428165,"baseUrl":"https://anime-world.in","lang":"ml","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":976578551,"baseUrl":"https://anime-world.in","lang":"mr","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":908421454,"baseUrl":"https://anime-world.in","lang":"ta","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld India","id":619885111,"baseUrl":"https://anime-world.in","lang":"te","typeSource":"multiple","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/animeworldindia/animeworldindia.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"Nyaa","id":204272987,"baseUrl":"https://nyaa.si","lang":"all","typeSource":"torrent","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/nyaa/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/all/nyaa/nyaa.dart","apiUrl":"","version":"0.0.2","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimePahe","id":534387145,"baseUrl":"https://www.animepahe.ru","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/animepahe/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/en/animepahe/animepahe.dart","apiUrl":"","version":"0.0.4","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeToast","id":922522471,"baseUrl":"https://animetoast.cc","lang":"de","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/de/animetoast/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/de/animetoast/animetoast.dart","apiUrl":"","version":"0.0.2","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimesVision","id":182512102,"baseUrl":"https://animes.vision","lang":"pt-br","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/pt/animesvision/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/pt/animesvision/animesvision.dart","apiUrl":"","version":"0.0.15","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"diziWatch","id":585912766,"baseUrl":"https://diziwatch.net","lang":"tr","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/tr/diziwatch/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/tr/diziwatch/diziwatch.dart","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AniZone","id":525728745,"baseUrl":"https://v1.animesz.xyz","lang":"fr","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/anizone/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/fr/anizone/anizone.dart","apiUrl":"","version":"0.0.2","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeOnline.Ninja","id":802700084,"baseUrl":"https://ww3.animeonline.ninja","lang":"es","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/es/animeonlineninja/icon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/dart/anime/src/es/animeonlineninja/animeonlineninja.dart","apiUrl":"","version":"0.0.3","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":0},{"name":"AnimeWorld","id":368490446,"baseUrl":"https://www.animeworld.so","lang":"it","typeSource":"single","iconUrl":"https://i.postimg.cc/RFRGfBvP/FVLyB1I.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/it/animeworld.js","apiUrl":"","version":"0.0.12","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"SerienStream","id":178264452,"baseUrl":"https://s.to","lang":"de","typeSource":"single","iconUrl":"https://s.to/favicon.ico","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/de/serienstream.js","apiUrl":"","version":"0.0.2","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"AniWorld","id":746621198,"baseUrl":"https://aniworld.to","lang":"de","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/icon/de.aniworld.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/de/aniworld.js","apiUrl":"","version":"0.3.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"AnimeFénix","id":750391210,"baseUrl":"https://www3.animefenix.tv","lang":"es","typeSource":"single","iconUrl":"https://www3.animefenix.tv/themes/fenix-neo/images/AveFenix.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/es/animefenix.js","apiUrl":"","version":"0.1.13","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"AnimeFLV","id":32554550,"baseUrl":"https://www3.animeflv.net","lang":"es","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/icon/es.animeflv.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/es/animeflv.js","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"JKAnime","id":1018721463,"baseUrl":"https://jkanime.net","lang":"es","typeSource":"single","iconUrl":"https://cdn.jkanime.net/logo_jk.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/es/jkanime.js","apiUrl":"","version":"0.1.13","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"TioAnime","id":156757473,"baseUrl":"https://tioanime.com","lang":"es","typeSource":"single","iconUrl":"https://tioanime.com/assets/img/tio_fb.jpg","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/es/tioanime.js","apiUrl":"","version":"0.1.12","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"非凡资源","id":797525486,"baseUrl":"http://ffzy.tv","lang":"zh","typeSource":"single","iconUrl":"http://ffzy.tv/template/default/img/favicon.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/ffzy.js","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"樱花动漫","id":781484038,"baseUrl":"http://www.iyinghua.io","lang":"zh","typeSource":"single","iconUrl":"http://www.iyinghua.io/js/20180601/favicon.ico","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/yhdm.js","apiUrl":"","version":"0.0.15","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"360资源","id":750729164,"baseUrl":"https://360zy.com","lang":"zh","typeSource":"single","iconUrl":"https://360zy.com/favicon.ico","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/360zy.js","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"极速资源","id":593630482,"baseUrl":"https://wwww.jisuzy.com","lang":"zh","typeSource":"single","iconUrl":"https://www.jisuzy.com/template/default/images/site_logo.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/jisuzy.js","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"天空资源网","id":967317255,"baseUrl":"https://tiankongzy.com","lang":"zh","typeSource":"single","iconUrl":"https://api.tiankongapi.com/template/v10012/images/logo.jpg","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/tiankongzy.js","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"玩偶哥哥","id":14810567,"baseUrl":"https://www.wogg.net","lang":"zh","typeSource":"single","iconUrl":"https://imgsrc.baidu.com/forum/pic/item/4b90f603738da977d5da660af651f8198618e31f.jpg","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/wogg.js","apiUrl":"","version":"0.0.2","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"多多影音","id":400189518,"baseUrl":"https://tv.yydsys.top","lang":"zh","typeSource":"single","iconUrl":"https://tv.yydsys.top/template/DYXS2/static/picture/logo.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/yydsys.js","apiUrl":"","version":"0.0.2","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"华为吧资源","id":790593517,"baseUrl":"https://huaweiba.live","lang":"zh","typeSource":"single","iconUrl":"https://huaweiba.live/template/ziyuan/images/logo2.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/huaweiba.js","apiUrl":"","version":"0.0.1","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"蜜柑计划","id":1032743453,"baseUrl":"https://mikanime.tv","lang":"zh","typeSource":"torrent","iconUrl":"https://mikanime.tv/images/mikan-pic.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/zh/mikan.js","apiUrl":"","version":"0.0.15","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"AllAnime","id":558217176,"baseUrl":"https://allanime.to","lang":"en","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/icon/en.allanime.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/en/allanime.js","apiUrl":"https://api.allanime.day/api","version":"0.0.35","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1},{"name":"NetflixMirror","id":446414301,"baseUrl":"https://iosmirror.cc","lang":"all","typeSource":"single","iconUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/icon/all.netflixmirror.png","dateFormat":"","dateFormatLocale":"","isNsfw":false,"hasCloudflare":false,"sourceCodeUrl":"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/anime/src/all/netflixmirror.js","apiUrl":"","version":"0.0.45","isManga":false,"isFullData":false,"appMinVerReq":"0.2.0","additionalParams":"","sourceCodeLanguage":1}] \ No newline at end of file -- 2.45.2 From 9942e332a7a11db3d7f83e2acc55d1dae37c6db7 Mon Sep 17 00:00:00 2001 From: RndDev123 Date: Sat, 30 Nov 2024 15:25:38 +0100 Subject: [PATCH 09/10] Mangalib: Fix status --- javascript/manga/src/ru/mangalib.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/javascript/manga/src/ru/mangalib.js b/javascript/manga/src/ru/mangalib.js index 28e01ce..3b400f4 100644 --- a/javascript/manga/src/ru/mangalib.js +++ b/javascript/manga/src/ru/mangalib.js @@ -30,11 +30,11 @@ class DefaultExtension extends MProvider { } parseStatus(status) { return { - 'In corso': 0, - 'Finito': 1, - 'In pausa': 2, - 'Droppato': 3, - 'Cancellato': 3 + "Онгоинг": 0, + "Завершён": 1, + "Приостановлен": 2, + "Выпуск прекращён": 3, + "Анонс": 4 }[status] ?? 5; } async parseMangaList(url) { -- 2.45.2 From 5e6f35dd221fa515b44cdefda24481ab298058d1 Mon Sep 17 00:00:00 2001 From: RndDev123 Date: Sat, 30 Nov 2024 15:34:06 +0100 Subject: [PATCH 10/10] Mangalib: Change default image server --- javascript/manga/src/ru/mangalib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/manga/src/ru/mangalib.js b/javascript/manga/src/ru/mangalib.js index 3b400f4..d3fd688 100644 --- a/javascript/manga/src/ru/mangalib.js +++ b/javascript/manga/src/ru/mangalib.js @@ -346,7 +346,7 @@ class DefaultExtension extends MProvider { listPreference: { title: 'Image Server', summary: '', - valueIndex: 2, + valueIndex: 0, entries: imageServers, entryValues: imageServerValuess } -- 2.45.2