From 68f7fe16c489db965453be0614ffa670c11939db Mon Sep 17 00:00:00 2001 From: Mike <51273546+SnakeDoc83@users.noreply.github.com> Date: Wed, 12 Aug 2020 06:08:09 -0400 Subject: [PATCH] MMRCMS - add MangaID, nsfw annotation (#4087) --- src/all/mmrcms/build.gradle | 3 +- .../extension/all/mmrcms/GeneratedSources.kt | 79 +++---- .../extension/all/mmrcms/Generator.kt | 202 +++++++++--------- .../all/mmrcms/MyMangaReaderCMSSource.kt | 43 +++- .../all/mmrcms/MyMangaReaderCMSSources.kt | 17 +- 5 files changed, 194 insertions(+), 150 deletions(-) diff --git a/src/all/mmrcms/build.gradle b/src/all/mmrcms/build.gradle index b9a828459..377c6992c 100644 --- a/src/all/mmrcms/build.gradle +++ b/src/all/mmrcms/build.gradle @@ -5,8 +5,9 @@ ext { extName = 'My Manga Reader CMS (Many sources)' pkgNameSuffix = 'all.mmrcms' extClass = '.MyMangaReaderCMSSources' - extVersionCode = 47 + extVersionCode = 48 libVersion = '1.2' + containsNsfw = true } apply from: "$rootDir/common.gradle" diff --git a/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/GeneratedSources.kt b/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/GeneratedSources.kt index 6bcd7bfd9..ee6ff773b 100644 --- a/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/GeneratedSources.kt +++ b/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/GeneratedSources.kt @@ -1,43 +1,44 @@ package eu.kanade.tachiyomi.extension.all.mmrcms // GENERATED FILE, DO NOT MODIFY! -// Generated Fri, 7 Aug 2020 15:39:57 -0400 +// Generated Wed, 12 Aug 2020 02:03:06 -0400 -private const val MMRSOURCE_1 = """{"language":"ar","name":"مانجا اون لاين","base_url":"https://onma.me","supports_latest":false,"item_url":"\u003c!doctype html\u003e\n\u003chtml lang\u003d\"en-US\"\u003e\n \u003chead\u003e \n \u003cmeta charset\u003d\"UTF-8\"\u003e \n \u003cmeta http-equiv\u003d\"Content-Type\" content\u003d\"text/html; charset\u003dUTF-8\"\u003e \n \u003cmeta http-equiv\u003d\"X-UA-Compatible\" content\u003d\"IE\u003dEdge,chrome\u003d1\"\u003e \n \u003cmeta name\u003d\"robots\" content\u003d\"noindex, nofollow\"\u003e \n \u003cmeta name\u003d\"viewport\" content\u003d\"width\u003ddevice-width,initial-scale\u003d1\"\u003e \n \u003cmeta http-equiv\u003d\"refresh\" content\u003d\"12\"\u003e \n \u003ctitle\u003eJust a moment...\u003c/title\u003e \n \u003cstyle type\u003d\"text/css\"\u003e\n html, body {width: 100%; height: 100%; margin: 0; padding: 0;}\n body {background-color: #ffffff; color: #000000; font-family:-apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, \"Helvetica Neue\",Arial, sans-serif; font-size: 16px; line-height: 1.7em;-webkit-font-smoothing: antialiased;}\n h1 { text-align: center; font-weight:700; margin: 16px 0; font-size: 32px; color:#000000; line-height: 1.25;}\n p {font-size: 20px; font-weight: 400; margin: 8px 0;}\n p, .attribution, {text-align: center;}\n #spinner {margin: 0 auto 30px auto; display: block;}\n .attribution {margin-top: 32px;}\n @keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }\n @-webkit-keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }\n #cf-bubbles \u003e .bubbles { animation: fader 1.6s infinite;}\n #cf-bubbles \u003e .bubbles:nth-child(2) { animation-delay: .2s;}\n #cf-bubbles \u003e .bubbles:nth-child(3) { animation-delay: .4s;}\n .bubbles { background-color: #f58220; width:20px; height: 20px; margin:2px; border-radius:100%; display:inline-block; }\n a { color: #2c7cb0; text-decoration: none; -moz-transition: color 0.15s ease; -o-transition: color 0.15s ease; -webkit-transition: color 0.15s ease; transition: color 0.15s ease; }\n a:hover{color: #f4a15d}\n .attribution{font-size: 16px; line-height: 1.5;}\n .ray_id{display: block; margin-top: 8px;}\n #cf-wrapper #challenge-form { padding-top:25px; padding-bottom:25px; }\n #cf-hcaptcha-container { text-align:center;}\n #cf-hcaptcha-container iframe { display: inline-block;}\n \u003c/style\u003e \n \u003cscript type\u003d\"text/javascript\"\u003e\n //\u003c![CDATA[\n (function(){\n \n window._cf_chl_opt\u003d{\n cvId: \"1\",\n cType: \"non-interactive\",\n cNounce: \"56320\",\n cRay: \"5bf377930b26ea66\",\n cHash: \"cc73ec0e3b38819\",\n cRq: {\n d: \"AZp9Q/jyb1JpPd0qCkcb0wgdAKbA9O5puwQlLZfLnaMtDwzh2snGE8YEcqRuOjR3q9Yodga1cSzbxWtSsEOq6tX1OSn688eOZ/GJl+icyuZhTkwWyiDG8rUNybvXPOJTLVt3NZoFO5tld2xuVOZmIFSSFOPQj4BiKiY/6NVjz0ZgzXEyT2uUZvCDQMMdyn+9lSl2TWbtJwwbbc+oHGF6Fp1fi6TAVu3ZY3LQe9UfzS2pCGyOj7VZgFvcWaB0ZQZwNiHW6g1H5zrjALl8Myio4+T4YudlUHfdwSSkOJc7M3JwKY2+gciDuYpYTVmiMLR1SDyxKbEOW9nKzDC3zo80JXxx3jBwAlnUlQKeCKujrR12fKh25w8ujxrGXM6QANw1RK/1gKQd1jSW6SvLuzsXhg\u003d\u003d\",\n t: \"MTU5NjgyOTIwMi40MTcwMDA\u003d\",\n m: \"zTdvBn7+OsISRxYWZhfqKVMBMP6Mm06FzUE3NnzBKBU\u003d\",\n i1: \"l5o1eiP2A/rC/DwF3OJPjg\u003d\u003d\",\n i2: \"CB7gbayZhSNn2lOuVCAfvg\u003d\u003d\",\n }\n }\n window._cf_chl_enter \u003d function(){window._cf_chl_opt.p\u003d1};\n \n var a \u003d function() {try{return !!window.addEventListener} catch(e) {return !1} },\n b \u003d function(b, c) {a() ? document.addEventListener(\"DOMContentLoaded\", b, c) : document.attachEvent(\"onreadystatechange\", b)};\n b(function(){\n var cookiesEnabled\u003d(navigator.cookieEnabled)? true : false;\n var cookieSupportInfix\u003dcookiesEnabled?\u0027/nocookie\u0027:\u0027/cookie\u0027;\n var a \u003d document.getElementById(\u0027cf-content\u0027);a.style.display \u003d \u0027block\u0027;\n var isIE \u003d /(MSIE|Trident\\/|Edge\\/)/i.test(window.navigator.userAgent);\n var trkjs \u003d isIE ? new Image() : document.createElement(\u0027img\u0027);\n trkjs.setAttribute(\"src\", \"/cdn-cgi/images/trace/jschal/js\"+cookieSupportInfix+\"/transparent.gif?ray\u003d5bf377930b26ea66\");\n trkjs.id \u003d \"trk_jschal_js\";\n trkjs.setAttribute(\"alt\", \"\");\n document.body.appendChild(trkjs);\n \n document.body.appendChild(trkjs);\n var cpo \u003d document.createElement(\u0027script\u0027);\n cpo.type \u003d \u0027text/javascript\u0027;\n cpo.src \u003d \"/cdn-cgi/challenge-platform/orchestrate/jsch/v1\";\n var done \u003d false;\n cpo.onload \u003d cpo.onreadystatechange \u003d function() {\n if (!done \u0026\u0026 (!this.readyState || this.readyState \u003d\u003d\u003d \"loaded\" || this.readyState \u003d\u003d\u003d \"complete\")) {\n done \u003d true;\n cpo.onload \u003d cpo.onreadystatechange \u003d null;\n window._cf_chl_enter()\n }\n };\n document.getElementsByTagName(\u0027head\u0027)[0].appendChild(cpo);\n \n }, false);\n })();\n //]]\u003e\n\u003c/script\u003e \n \u003c/head\u003e \n \u003cbody\u003e \n \u003ctable width\u003d\"100%\" height\u003d\"100%\" cellpadding\u003d\"20\"\u003e \n \u003ctbody\u003e\n \u003ctr\u003e \n \u003ctd align\u003d\"center\" valign\u003d\"middle\"\u003e \n \u003cdiv class\u003d\"cf-browser-verification cf-im-under-attack\"\u003e \n \u003cnoscript\u003e \n \u003ch1 data-translate\u003d\"turn_on_js\" style\u003d\"color:#bd2426;\"\u003ePlease turn JavaScript on and reload the page.\u003c/h1\u003e \n \u003c/noscript\u003e \n \u003cdiv id\u003d\"cf-content\" style\u003d\"display:none\"\u003e \n \u003ca href\u003d\"https://robinsonsdrlg.com/direct.php?tag\u003d7\" style\u003d\"display: none;\"\u003etable\u003c/a\u003e \n \u003cdiv id\u003d\"cf-bubbles\"\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003c/div\u003e \n \u003ch1\u003e\u003cspan data-translate\u003d\"checking_browser\"\u003eChecking your browser before accessing\u003c/span\u003e onma.me.\u003c/h1\u003e \n \u003cdiv id\u003d\"no-cookie-warning\" data-translate\u003d\"turn_on_cookies\" style\u003d\"display:none\"\u003e \n \u003cp data-translate\u003d\"turn_on_cookies\" style\u003d\"color:#bd2426;\"\u003ePlease enable Cookies and reload the page.\u003c/p\u003e \n \u003c/div\u003e \n \u003cp data-translate\u003d\"process_is_automatic\"\u003eThis process is automatic. Your browser will redirect to your requested content shortly.\u003c/p\u003e \n \u003cp data-translate\u003d\"allow_5_secs\"\u003ePlease allow up to 5 seconds…\u003c/p\u003e \n \u003c/div\u003e \n \u003cform class\u003d\"challenge-form\" id\u003d\"challenge-form\" action\u003d\"/?__cf_chl_jschl_tk__\u003d92e5399a36488ba3a1836bde79cdf3a1b1d626f1-1596829202-0-AcjHBc4SZpcNcy15KV9VfWJvtHnyFnnHKYXl9EcgAj3pYLefeQzUnt59QD9gHM9Yfvu4ncYWda0W4-GdV1m-MNojHl_Drc6FbY1mC8iZYvBFPv7hbIdoxrAJ6j4tHB53CZc6prbu6gR83glSXAKCbjIGI7FOAp7Um_wM2TSg65bt6WBrQbJWT9cMpO7jcTqH7x-0DGCATNRrVGAR08bieShHR-hBtAmZqFOh1W-SIZyRo55QdF5KGQwEQbW6B8fZtTI86zhWQRueurIvNH5Y8hw\" method\u003d\"POST\" enctype\u003d\"application/x-www-form-urlencoded\"\u003e \n \u003cinput type\u003d\"hidden\" name\u003d\"r\" value\u003d\"8e8fd137e87f1c6a7fc7ddacb843eb0c03af2397-1596829202-0-Adg9yFQTon9MQ1gDqwgdtIukMw1FABiwMIIj0NCzsRG0JvrXmXr5qM65f0VvU4A9raQGaf9LJ6ORSSTBShIu/72+rClesGTrM2vT5pP0SrSrjKu64H4z/HnTslakgVa9sFRVk6ufvZJGvfKhzMSp6YoDFRxmWfi05MCVI26aJS8GcRx8pLFice9SxMayRiIBspTtMvLntwqZbWAgl+geOH1YAYtP8zIkWLQTm33lpL/A84f1Mlu/7iE0pehadbpm65m+/2IuEOR/E34Kf2YSbj5gD5RhuEHjYVmNBCiquHaIIJwiIdWfEBzKj8MKqFloo9uve9npospJWJrzpo3qqup60xrsmarFNqEZzmHPkiqv2szvfKMeuo0iWLOw25El7EVb2m7cItlqCo8I4TAyxAFLntDTPN1aVDnAeWi7UpNNAhGCYzTE4pLqidXLVl9tZM/R0UhecqpuWrj64yE8NGO7qHzbDxOq4v+llaW3/shMonVgcB/C4tKm1dpALT2I8T+SRzsdH/LCB8/jCXbLXH9cE8XLzi8nMcsrzFCu60S3XuMwj8R14WJ6RD57JyApdndni4bIx4Xp4aiPrERWvYaKOTG3XB39/RzQ3yUsWhQfnWGE0mwaE4ytFDHzWr76fHTXpj/cnkgynUU4eVytAvbz5feYZuEj7HDgC0HuWKisx63zbML2wz25PqGoj0n3uZc+zl1zWchqW2WauYP3rvnF/k94myeuGZ2ykoil6rS4hIC+VbqAU61REeoUCQd0IVQZOc9YoF1tEBwpg9Y2WQBl1cks7kxF52NnfvHuaiOUoe1f7nmJDGxpPDVfMQPy0jlikm6i0Jna1cxmzIGoKpGlS6hS1pVoHb6UZ+q832oyh0e8I2zvYQkxh0Jq7e5tHzV/CX3yVNE0J8+/b0w4O3/z+NMg7yGhn5wrkS6eK7h9G+W4w6XedOvUiDrOwU8pRLObj/HAGrHHWBGmyJ5j4Z6VCMxD1BCqES7Jgb0l8nO6VYM9XHJoNXU/IFYfEtUdXyKv1BjGRBIpdbiyCkLIlT9Eig54w265QziCNbY6eXW7vKWldQnX0+IpI5MKxjRKuATXcbfp3XsuyE2mjuWtXUD55JFcAGT6UlOrzihF/qmsdbB4SkmpkQdOvo4nL8sQ2g\u003d\u003d\"\u003e \n \u003cinput type\u003d\"hidden\" value\u003d\"baec1c0e66e86a5b9b7e3cdd6d427d7f\" id\u003d\"jschl-vc\" name\u003d\"jschl_vc\"\u003e \n \u003c!-- \u003cinput type\u003d\"hidden\" value\u003d\"\" id\u003d\"jschl-vc\" name\u003d\"jschl_vc\"/\u003e --\u003e \n \u003cinput type\u003d\"hidden\" name\u003d\"pass\" value\u003d\"1596829206.417-mWrjZT0ZG5\"\u003e \n \u003cinput type\u003d\"hidden\" id\u003d\"jschl-answer\" name\u003d\"jschl_answer\"\u003e \n \u003c/form\u003e \n \u003cdiv id\u003d\"trk_jschal_nojs\" style\u003d\"background-image:url(\u0027/cdn-cgi/images/trace/jschal/nojs/transparent.gif?ray\u003d5bf377930b26ea66\u0027)\"\u003e \n \u003c/div\u003e \n \u003c/div\u003e \n \u003cdiv class\u003d\"attribution\"\u003e\n DDoS protection by \n \u003ca href\u003d\"https://www.cloudflare.com/5xx-error-landing?utm_source\u003diuam\" target\u003d\"_blank\"\u003eCloudflare\u003c/a\u003e \n \u003cbr\u003e \n \u003cspan class\u003d\"ray_id\"\u003eRay ID: \u003ccode\u003e5bf377930b26ea66\u003c/code\u003e\u003c/span\u003e \n \u003c/div\u003e \u003c/td\u003e \n \u003c/tr\u003e \n \u003c/tbody\u003e\n \u003c/table\u003e \n \u003c/body\u003e\n\u003c/html\u003e/","categories":[],"tags":"null"}""" -private const val MMRSOURCE_2 = """{"language":"en","name":"Read Comics Online","base_url":"https://readcomicsonline.ru","supports_latest":true,"item_url":"https://readcomicsonline.ru/comic/","categories":[{"id":"1","name":"One Shots \u0026 TPBs"},{"id":"2","name":"DC Comics"},{"id":"3","name":"Marvel Comics"},{"id":"4","name":"Boom Studios"},{"id":"5","name":"Dynamite"},{"id":"6","name":"Rebellion"},{"id":"7","name":"Dark Horse"},{"id":"8","name":"IDW"},{"id":"9","name":"Archie"},{"id":"10","name":"Graphic India"},{"id":"11","name":"Darby Pop"},{"id":"12","name":"Oni Press"},{"id":"13","name":"Icon Comics"},{"id":"14","name":"United Plankton"},{"id":"15","name":"Udon"},{"id":"16","name":"Image Comics"},{"id":"17","name":"Valiant"},{"id":"18","name":"Vertigo"},{"id":"19","name":"Devils Due"},{"id":"20","name":"Aftershock Comics"},{"id":"21","name":"Antartic Press"},{"id":"22","name":"Action Lab"},{"id":"23","name":"American Mythology"},{"id":"24","name":"Zenescope"},{"id":"25","name":"Top Cow"},{"id":"26","name":"Hermes Press"},{"id":"27","name":"451"},{"id":"28","name":"Black Mask"},{"id":"29","name":"Chapterhouse Comics"},{"id":"30","name":"Red 5"},{"id":"31","name":"Heavy Metal"},{"id":"32","name":"Bongo"},{"id":"33","name":"Top Shelf"},{"id":"34","name":"Bubble"},{"id":"35","name":"Boundless"},{"id":"36","name":"Avatar Press"},{"id":"37","name":"Space Goat Productions"},{"id":"38","name":"BroadSword Comics"},{"id":"39","name":"AAM-Markosia"},{"id":"40","name":"Fantagraphics"},{"id":"41","name":"Aspen"},{"id":"42","name":"American Gothic Press"},{"id":"43","name":"Vault"},{"id":"44","name":"215 Ink"},{"id":"45","name":"Abstract Studio"},{"id":"46","name":"Albatross"},{"id":"47","name":"ARH Comix"},{"id":"48","name":"Legendary Comics"},{"id":"49","name":"Monkeybrain"},{"id":"50","name":"Joe Books"},{"id":"51","name":"MAD"},{"id":"52","name":"Comics Experience"},{"id":"53","name":"Alterna Comics"},{"id":"54","name":"Lion Forge"},{"id":"55","name":"Benitez"},{"id":"56","name":"Storm King"},{"id":"57","name":"Sucker"},{"id":"58","name":"Amryl Entertainment"},{"id":"59","name":"Ahoy Comics"},{"id":"60","name":"Mad Cave"},{"id":"61","name":"Coffin Comics"},{"id":"62","name":"Magnetic Press"},{"id":"63","name":"Ablaze"},{"id":"64","name":"Europe Comics"},{"id":"65","name":"Humanoids"},{"id":"66","name":"TKO"},{"id":"67","name":"Soleil"},{"id":"68","name":"SAF Comics"},{"id":"69","name":"Scholastic"},{"id":"70","name":"Upshot"},{"id":"71","name":"Stranger Comics"},{"id":"72","name":"Inverse"},{"id":"73","name":"Virus"}],"tags":"null"}""" -private const val MMRSOURCE_3 = """{"language":"en","name":"Biamam Scans","base_url":"https://biamam.com","supports_latest":true,"item_url":"http://biamam.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"4-Koma"},{"id":"34","name":"Cooking"},{"id":"35","name":"Isekai"}],"tags":"null"}""" -private const val MMRSOURCE_4 = """{"language":"en","name":"Fallen Angels","base_url":"https://manga.fascans.com","supports_latest":true,"item_url":"https://manga.fascans.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"4-Koma"},{"id":"34","name":"Cooking"}],"tags":"null"}""" -private const val MMRSOURCE_5 = """{"language":"en","name":"White Cloud Pavilion","base_url":"https://www.whitecloudpavilion.com/manga/free","supports_latest":true,"item_url":"https://www.whitecloudpavilion.com/manga/free/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" -private const val MMRSOURCE_6 = """{"language":"fr","name":"Scan FR","base_url":"https://www.scan-fr.co","supports_latest":true,"item_url":"https://www.scan-fr.co/manga/","categories":[{"id":"1","name":"Comedy"},{"id":"2","name":"Doujinshi"},{"id":"3","name":"Drama"},{"id":"4","name":"Ecchi"},{"id":"5","name":"Fantasy"},{"id":"6","name":"Gender Bender"},{"id":"7","name":"Josei"},{"id":"8","name":"Mature"},{"id":"9","name":"Mecha"},{"id":"10","name":"Mystery"},{"id":"11","name":"One Shot"},{"id":"12","name":"Psychological"},{"id":"13","name":"Romance"},{"id":"14","name":"School Life"},{"id":"15","name":"Sci-fi"},{"id":"16","name":"Seinen"},{"id":"17","name":"Shoujo"},{"id":"18","name":"Shoujo Ai"},{"id":"19","name":"Shounen"},{"id":"20","name":"Shounen Ai"},{"id":"21","name":"Slice of Life"},{"id":"22","name":"Sports"},{"id":"23","name":"Supernatural"},{"id":"24","name":"Tragedy"},{"id":"25","name":"Yaoi"},{"id":"26","name":"Yuri"},{"id":"27","name":"Comics"},{"id":"28","name":"Autre"},{"id":"29","name":"BD Occidentale"},{"id":"30","name":"Manhwa"},{"id":"31","name":"Action"},{"id":"32","name":"Aventure"}],"tags":"null"}""" -private const val MMRSOURCE_7 = """{"language":"fr","name":"Scan VF","base_url":"https://www.scan-vf.net","supports_latest":true,"item_url":"https://www.scan-vf.net/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" -private const val MMRSOURCE_8 = """{"language":"fr","name":"Scan OP","base_url":"https://scan-op.com","supports_latest":true,"item_url":"http://scan-op.com/manga/","categories":[{"id":"1","name":"Comedy"},{"id":"2","name":"Doujinshi"},{"id":"3","name":"Drama"},{"id":"4","name":"Ecchi"},{"id":"5","name":"Fantasy"},{"id":"6","name":"Gender Bender"},{"id":"7","name":"Josei"},{"id":"8","name":"Mature"},{"id":"9","name":"Mecha"},{"id":"10","name":"Mystery"},{"id":"11","name":"One Shot"},{"id":"12","name":"Psychological"},{"id":"13","name":"Romance"},{"id":"14","name":"School Life"},{"id":"15","name":"Sci-fi"},{"id":"16","name":"Seinen"},{"id":"17","name":"Shoujo"},{"id":"18","name":"Shoujo Ai"},{"id":"19","name":"Shounen"},{"id":"20","name":"Shounen Ai"},{"id":"21","name":"Slice of Life"},{"id":"22","name":"Sports"},{"id":"23","name":"Supernatural"},{"id":"24","name":"Tragedy"},{"id":"25","name":"Yaoi"},{"id":"26","name":"Yuri"},{"id":"27","name":"Comics"},{"id":"28","name":"Autre"}],"tags":"null"}""" -private const val MMRSOURCE_9 = """{"language":"id","name":"Komikid","base_url":"https://www.komikid.com","supports_latest":true,"item_url":"https://www.komikid.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Fantasy"},{"id":"7","name":"Gender Bender"},{"id":"8","name":"Historical"},{"id":"9","name":"Horror"},{"id":"10","name":"Josei"},{"id":"11","name":"Martial Arts"},{"id":"12","name":"Mature"},{"id":"13","name":"Mecha"},{"id":"14","name":"Mystery"},{"id":"15","name":"One Shot"},{"id":"16","name":"Psychological"},{"id":"17","name":"Romance"},{"id":"18","name":"School Life"},{"id":"19","name":"Sci-fi"},{"id":"20","name":"Seinen"},{"id":"21","name":"Shoujo"},{"id":"22","name":"Shoujo Ai"},{"id":"23","name":"Shounen"},{"id":"24","name":"Shounen Ai"},{"id":"25","name":"Slice of Life"},{"id":"26","name":"Sports"},{"id":"27","name":"Supernatural"},{"id":"28","name":"Tragedy"},{"id":"29","name":"Yaoi"},{"id":"30","name":"Yuri"}],"tags":"null"}""" -private const val MMRSOURCE_10 = """{"language":"pl","name":"ToraScans","base_url":"http://torascans.pl","supports_latest":true,"item_url":"http://torascans.pl/manga/","categories":[{"id":"1","name":"Akcja"},{"id":"2","name":"Przygodowe"},{"id":"3","name":"Komedia"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Dramat"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Zamiana płci"},{"id":"9","name":"Harem"},{"id":"10","name":"Historyczne"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Sztuki walki"},{"id":"14","name":"Dla dorosłych"},{"id":"15","name":"Mecha"},{"id":"16","name":"Tajemnica"},{"id":"17","name":"Psychologiczne"},{"id":"18","name":"Romans"},{"id":"19","name":"Szkolne życie"},{"id":"20","name":"S-F"},{"id":"21","name":"Seinen"},{"id":"22","name":"Shoujo"},{"id":"23","name":"Shoujo Ai"},{"id":"24","name":"Shounen"},{"id":"25","name":"Shounen Ai"},{"id":"26","name":"Okruchy życia"},{"id":"27","name":"Sportowe"},{"id":"28","name":"Supermoce"},{"id":"29","name":"Tragedia"},{"id":"30","name":"Yaoi"},{"id":"31","name":"Yuri"},{"id":"32","name":"Smut"},{"id":"33","name":"Isekai"}],"tags":[{"id":"akcja","name":"Akcja"},{"id":"doujinshi","name":"Doujinshi"},{"id":"dramat","name":"Dramat"},{"id":"fantasy","name":"Fantasy"},{"id":"harem","name":"Harem"},{"id":"historyczne","name":"Historyczne"},{"id":"horror","name":"Horror"},{"id":"isekai","name":"Isekai"},{"id":"josei","name":"Josei"},{"id":"komedia","name":"Komedia"},{"id":"okruchy-zycia","name":"Okruchy życia"},{"id":"przygodowe","name":"Przygodowe"},{"id":"psychologiczne","name":"Psychologiczne"},{"id":"romans","name":"Romans"},{"id":"s-f","name":"S-F"},{"id":"seinen","name":"Seinen"},{"id":"shoujo-ai","name":"Shoujo Ai"},{"id":"shoujou","name":"Shoujou"},{"id":"shounen","name":"Shounen"},{"id":"smut","name":"Smut"},{"id":"sportowe","name":"Sportowe"},{"id":"supermoce","name":"Supermoce"},{"id":"szkolne-zycie","name":"Szkolne życie"},{"id":"sztuki-walki","name":"Sztuki walki"},{"id":"tajemnica","name":"Tajemnica"},{"id":"tragedia","name":"Tragedia"},{"id":"yaoi","name":"Yaoi"},{"id":"yuri","name":"Yuri"},{"id":"zamiana-pci","name":"Zamiana płci"}]}""" -private const val MMRSOURCE_11 = """{"language":"pt-BR","name":"Comic Space","base_url":"https://www.comicspace.com.br","supports_latest":false,"item_url":"https://acomic.space/manga/","categories":[],"tags":"null"}""" -private const val MMRSOURCE_12 = """{"language":"pt-BR","name":"Mangás Yuri","base_url":"https://mangasyuri.net","supports_latest":true,"item_url":"https://mangasyuri.net/manga/","categories":[{"id":"1","name":"Ação"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comédia"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasia"},{"id":"8","name":"Gênero Trocado"},{"id":"9","name":"Harém"},{"id":"10","name":"Histórico"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Artes Marciais"},{"id":"14","name":"Maduro"},{"id":"15","name":"Robô"},{"id":"16","name":"Mistério"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psicológico"},{"id":"19","name":"Romance"},{"id":"20","name":"Vida Escolar"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Cotidiano"},{"id":"26","name":"Esportes"},{"id":"27","name":"Sobrenatural"},{"id":"28","name":"Tragédia"},{"id":"29","name":"Yuri"},{"id":"30","name":"Adulto"},{"id":"31","name":"Shounen"}],"tags":"null"}""" -private const val MMRSOURCE_13 = """{"language":"pl","name":"Dracaena","base_url":"https://dracaena.webd.pl/czytnik","supports_latest":true,"item_url":"https://dracaena.webd.pl/czytnik/manga/","categories":[{"id":"1","name":"Dramat"},{"id":"2","name":"Fantasy"},{"id":"3","name":"Historyczny"},{"id":"4","name":"Komedia"},{"id":"5","name":"Okruchy Życia"},{"id":"6","name":"Romans"},{"id":"7","name":"Shoujo"},{"id":"8","name":"Shounen-ai"},{"id":"9","name":"Sport"},{"id":"10","name":"Tragedia"},{"id":"11","name":"Yaoi"},{"id":"12","name":"Szkolne Życie"},{"id":"13","name":"Nadprzyrodzone moce"},{"id":"14","name":"Psychologiczne"},{"id":"15","name":"Science Fiction"},{"id":"16","name":"Josei"},{"id":"17","name":"Akcja"}],"tags":"null"}""" -private const val MMRSOURCE_14 = """{"language":"pl","name":"Nikushima","base_url":"http://azbivo.webd.pro","supports_latest":true,"item_url":"http://azbivo.webd.pro/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shounen"},{"id":"25","name":"Slice of Life"},{"id":"26","name":"Sports"},{"id":"27","name":"Supernatural"},{"id":"28","name":"Tragedy"},{"id":"29","name":"Isekai"}],"tags":"null"}""" -private const val MMRSOURCE_15 = """{"language":"tr","name":"MangaHanta","base_url":"http://mangahanta.com","supports_latest":true,"item_url":"http://mangahanta.com/manga/","categories":[{"id":"1","name":"Aksiyon"},{"id":"2","name":"Macera"},{"id":"3","name":"Komedi"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantezi"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Tarihi"},{"id":"11","name":"Korku"},{"id":"12","name":"Josei"},{"id":"13","name":"Dövüş Sanatları"},{"id":"14","name":"Yetişkin"},{"id":"15","name":"Mecha"},{"id":"16","name":"Gizem"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psikolojik"},{"id":"19","name":"Romantizm"},{"id":"20","name":"Okul Hayatı"},{"id":"21","name":"Bilim-Kurgu"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Hayattan Bir Parça"},{"id":"28","name":"Spor"},{"id":"29","name":"Doğaüstü"},{"id":"30","name":"Trajedi"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"Vampir"},{"id":"34","name":"Webtoon"}],"tags":[{"id":"tag","name":"-ヒトガタナ-"},{"id":"amber","name":"Amber"},{"id":"amber-manga","name":"Amber manga"},{"id":"amber-oku","name":"Amber oku"},{"id":"amber-turkce-oku","name":"Amber Türkçe Oku"},{"id":"amber-yuno","name":"Amber Yuno"},{"id":"back-stage","name":"Back Stage"},{"id":"ballroom-e-youkoso","name":"Ballroom e Youkoso"},{"id":"beauty-game","name":"Beauty Game"},{"id":"beauty-game-oku","name":"Beauty Game Oku"},{"id":"boku-wa-mari-no-naka","name":"Boku Wa Mari No Naka"},{"id":"god-eater-kyuuseishu-no-kikan","name":"God Eater - Kyuuseishu no Kikan"},{"id":"god-eater-the-spiral-fate","name":"God Eater - The Spiral Fate"},{"id":"happiness","name":"Happiness"},{"id":"happiness-manga-oku","name":"happiness manga oku"},{"id":"happiness-turkce-oku","name":"happiness türkçe oku"},{"id":"hitogatana","name":"Hitogatana"},{"id":"im-in-mari-im-inside-mari","name":"ぼくは麻理のなか I\u0027m in Mari I\u0027m Inside Mari"},{"id":"itsuwaribito-utsuho","name":"Itsuwaribito Utsuho"},{"id":"kaguya-sama-wa-kokurasetai","name":"Kaguya-sama wa Kokurasetai"},{"id":"les-memoires-de-vanitas","name":"Les Mémoires de Vanitas"},{"id":"mahouka-koukou-no-rettousei-tsuioku-hen","name":"Mahouka Koukou no Rettousei - Tsuioku Hen"},{"id":"manga-oku","name":"manga oku"},{"id":"maou-na-ore-to-fushihime-no-yubiwa","name":"Maou na Ore to Fushihime no Yubiwa"},{"id":"may-i-shake-your-hand","name":"May I shake your hand"},{"id":"may-i-shake-your-hand-oku","name":"may I shake your hand oku"},{"id":"may-i-shake-your-hand-turkce-oku","name":"May I Shake Your Hand türkçe oku"},{"id":"memoir-of-vanitas","name":"Memoir of Vanitas"},{"id":"mutluluk","name":"Mutluluk"},{"id":"nanatsu-no-taizai","name":"Nanatsu No Taizai"},{"id":"nanatsu-no-taizai-turkce-oku","name":"Nanatsu no taizai Türkçe oku"},{"id":"oshimi-shuzo","name":"OSHIMI Shuzo"},{"id":"sousei-manga-oku","name":"sousei manga oku"},{"id":"sousei-no-onmyouji","name":"Sousei no Onmyouji"},{"id":"sousei-no-onmyouji-manga-oku","name":"Sousei no onmyouji manga oku"},{"id":"sousei-no-onmyouji-turkce-oku","name":"sousei no onmyouji türkçe oku"},{"id":"the-case-study-of-vanitas","name":"The Case Study of Vanitas"},{"id":"the-seven-deadly-sins","name":"The Seven Deadly Sins"},{"id":"vanitas-no-carte","name":"Vanitas no Carte"},{"id":"vanitas-no-shuki","name":"Vanitas no Shuki"},{"id":"yedi-olumcul-gunah","name":"Yedi Ölümcül Günah"}]}""" -private const val MMRSOURCE_16 = """{"language":"vi","name":"Fallen Angels Scans","base_url":"https://truyen.fascans.com","supports_latest":true,"item_url":"https://truyen.fascans.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" -private const val MMRSOURCE_17 = """{"language":"es","name":"LeoManga","base_url":"https://leomanga.me","supports_latest":false,"item_url":"https://leomanga.me/manga/","categories":[{"id":"1","name":"Accion"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comedia"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasia"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historico"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Artes Marciales"},{"id":"14","name":"Madura"},{"id":"15","name":"Mecha"},{"id":"16","name":"Misterio"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psicológico"},{"id":"19","name":"Romance"},{"id":"20","name":"Vida Cotidiana"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Supernatural"},{"id":"29","name":"Tragedia"},{"id":"30","name":"Yaoi"},{"id":"31","name":"Yuri"},{"id":"32","name":"Deporte"},{"id":"33","name":"Thriller"},{"id":"34","name":"Vida Escolar"},{"id":"35","name":"Boys Love"},{"id":"36","name":"Girls Love"},{"id":"37","name":"Gore"},{"id":"38","name":"Hentai"},{"id":"39","name":"Magia"},{"id":"40","name":"Manwha"},{"id":"41","name":"Policial"},{"id":"42","name":"Realidad Virtual"},{"id":"43","name":"Super Poderes"},{"id":"44","name":"Suspense"},{"id":"45","name":"Supervivencia"},{"id":"46","name":"Parodia"},{"id":"47","name":"Demonios"},{"id":"48","name":"Escolar"}],"tags":[{"id":"freaking-romance","name":"Freaking Romance"},{"id":"love-lucky","name":"Love Lucky"},{"id":"lust-awakening","name":"Lust Awakening"},{"id":"despertar-de-la-lujuria","name":"Despertar de la lujuria"},{"id":"inazumaelevenaresnotenbin","name":"inazumaelevenaresnotenbin"},{"id":"heir-of-the-penguins","name":"Heir of the Penguins"},{"id":"amor","name":"amor"},{"id":"drama","name":"drama"},{"id":"mysteries","name":"mysteries"},{"id":"anal","name":"anal"},{"id":"bukkake","name":"bukkake"},{"id":"doble-penetracion","name":"doble penetracion"},{"id":"orgia","name":"orgia"},{"id":"blow-job","name":"blow job"},{"id":"big-breasts","name":"big breasts"},{"id":"incesto","name":"incesto"},{"id":"milf","name":"milf"},{"id":"prenadas","name":"preñadas"},{"id":"slave-sex","name":"slave sex"},{"id":"lolicon","name":"lolicon"},{"id":"nurse","name":"nurse"},{"id":"reality","name":"Reality"},{"id":"glitch","name":"Glitch"},{"id":"glitcher","name":"Glitcher"},{"id":"horror","name":"Horror"},{"id":"suspenso","name":"Suspenso"},{"id":"realidad","name":"Realidad"},{"id":"slider","name":"Slider"},{"id":"novela","name":"Novela"},{"id":"sobrenatural","name":"Sobrenatural"},{"id":"tragedia","name":"Tragedia"},{"id":"error","name":"Error"},{"id":"psicologico","name":"Psicologico"},{"id":"sufrimiento","name":"Sufrimiento"},{"id":"visual","name":"Visual"},{"id":"narrativo","name":"Narrativo"},{"id":"shotacon","name":"shotacon"},{"id":"paizuri","name":"paizuri"},{"id":"kemonomimi","name":"kemonomimi"},{"id":"mundo-paralelo","name":"mundo paralelo"},{"id":"coleccion-hentai","name":"coleccion hentai"},{"id":"adultos","name":"adultos"}]}""" -private const val MMRSOURCE_18 = """{"language":"es","name":"submanga","base_url":"https://submangas.net","supports_latest":false,"item_url":"https://submangas.net/manga/","categories":[{"id":"1","name":"Accion"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comedia"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasia"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historico"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Artes Marciales"},{"id":"14","name":"Madura"},{"id":"15","name":"Mecha"},{"id":"16","name":"Misterio"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psicológico"},{"id":"19","name":"Romance"},{"id":"20","name":"Vida Cotidiana"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Supernatural"},{"id":"29","name":"Tragedia"},{"id":"30","name":"Yaoi"},{"id":"31","name":"Yuri"},{"id":"32","name":"Deporte"},{"id":"33","name":"Thriller"},{"id":"34","name":"Vida Escolar"},{"id":"35","name":"Boys Love"},{"id":"36","name":"Girls Love"},{"id":"37","name":"Gore"},{"id":"38","name":"Hentai"},{"id":"39","name":"Magia"},{"id":"40","name":"Manwha"},{"id":"41","name":"Policial"},{"id":"42","name":"Realidad Virtual"},{"id":"43","name":"Super Poderes"},{"id":"44","name":"Suspense"},{"id":"45","name":"Supervivencia"},{"id":"46","name":"Parodia"},{"id":"47","name":"Demonios"},{"id":"48","name":"Escolar"}],"tags":"null"}""" -private const val MMRSOURCE_19 = """{"language":"es","name":"Mangadoor","base_url":"https://mangadoor.com","supports_latest":true,"item_url":"https://mangadoor.com/manga/","categories":[{"id":"1","name":"Acción"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comedia"},{"id":"4","name":"Drama"},{"id":"5","name":"Ecchi"},{"id":"6","name":"Fantasía"},{"id":"7","name":"Gender Bender"},{"id":"8","name":"Harem"},{"id":"9","name":"Histórico"},{"id":"10","name":"Horror"},{"id":"11","name":"Josei"},{"id":"12","name":"Artes Marciales"},{"id":"13","name":"Maduro"},{"id":"14","name":"Mecha"},{"id":"15","name":"Misterio"},{"id":"16","name":"One Shot"},{"id":"17","name":"Psicológico"},{"id":"18","name":"Romance"},{"id":"19","name":"Escolar"},{"id":"20","name":"Ciencia Ficción"},{"id":"21","name":"Seinen"},{"id":"22","name":"Shoujo"},{"id":"23","name":"Shoujo Ai"},{"id":"24","name":"Shounen"},{"id":"25","name":"Shounen Ai"},{"id":"26","name":"Recuentos de la vida"},{"id":"27","name":"Deportes"},{"id":"28","name":"Supernatural"},{"id":"29","name":"Tragedia"},{"id":"30","name":"Yaoi"},{"id":"31","name":"Yuri"},{"id":"32","name":"Demonios"},{"id":"33","name":"Juegos"},{"id":"34","name":"Policial"},{"id":"35","name":"Militar"},{"id":"36","name":"Thriller"},{"id":"37","name":"Autos"},{"id":"38","name":"Música"},{"id":"39","name":"Vampiros"},{"id":"40","name":"Magia"},{"id":"41","name":"Samurai"},{"id":"42","name":"Boys love"},{"id":"43","name":"Hentai"}],"tags":"null"}""" -private const val MMRSOURCE_20 = """{"language":"es","name":"Mangas.pw","base_url":"https://mangas.in","supports_latest":true,"item_url":"https://mangas.in/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"Hentai"},{"id":"34","name":"Smut"}],"tags":"null"}""" -private const val MMRSOURCE_21 = """{"language":"es","name":"Tumangaonline.co","base_url":"http://tumangaonline.uno","supports_latest":true,"item_url":"http://tumangaonline.life/manga/","categories":[{"id":"1","name":"Acción"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comedia"},{"id":"4","name":"Drama"},{"id":"5","name":"Ecchi"},{"id":"6","name":"Fantasía"},{"id":"7","name":"Gender Bender"},{"id":"8","name":"Harem"},{"id":"9","name":"Histórico"},{"id":"10","name":"Horror"},{"id":"11","name":"Josei"},{"id":"12","name":"Artes Marciales"},{"id":"13","name":"Maduro"},{"id":"14","name":"Mecha"},{"id":"15","name":"Misterio"},{"id":"16","name":"One Shot"},{"id":"17","name":"Psicológico"},{"id":"18","name":"Romance"},{"id":"19","name":"Escolar"},{"id":"20","name":"Ciencia Ficción"},{"id":"21","name":"Seinen"},{"id":"22","name":"Shoujo"},{"id":"23","name":"Shoujo Ai"},{"id":"24","name":"Shounen"},{"id":"25","name":"Shounen Ai"},{"id":"26","name":"Recuentos de la vida"},{"id":"27","name":"Deportes"},{"id":"28","name":"Supernatural"},{"id":"29","name":"Tragedia"},{"id":"30","name":"Yaoi"},{"id":"31","name":"Yuri"},{"id":"32","name":"Demonios"},{"id":"33","name":"Juegos"},{"id":"34","name":"Policial"},{"id":"35","name":"Militar"},{"id":"36","name":"Thriller"},{"id":"37","name":"Autos"},{"id":"38","name":"Música"},{"id":"39","name":"Vampiros"},{"id":"40","name":"Magia"},{"id":"41","name":"Samurai"},{"id":"42","name":"Boys love"}],"tags":"null"}""" -private const val MMRSOURCE_22 = """{"language":"bg","name":"Utsukushii","base_url":"https://manga.utsukushii-bg.com","supports_latest":true,"item_url":"https://manga.utsukushii-bg.com/manga/","categories":[{"id":"1","name":"Екшън"},{"id":"2","name":"Приключенски"},{"id":"3","name":"Комедия"},{"id":"4","name":"Драма"},{"id":"5","name":"Фентъзи"},{"id":"6","name":"Исторически"},{"id":"7","name":"Ужаси"},{"id":"8","name":"Джосей"},{"id":"9","name":"Бойни изкуства"},{"id":"10","name":"Меха"},{"id":"11","name":"Мистерия"},{"id":"12","name":"Самостоятелна/Пилотна глава"},{"id":"13","name":"Психологически"},{"id":"14","name":"Романтика"},{"id":"15","name":"Училищни"},{"id":"16","name":"Научна фантастика"},{"id":"17","name":"Сейнен"},{"id":"18","name":"Шоджо"},{"id":"19","name":"Реализъм"},{"id":"20","name":"Спорт"},{"id":"21","name":"Свръхестествено"},{"id":"22","name":"Трагедия"},{"id":"23","name":"Йокаи"},{"id":"24","name":"Паралелна вселена"},{"id":"25","name":"Супер сили"},{"id":"26","name":"Пародия"},{"id":"27","name":"Шонен"}],"tags":"null"}""" -private const val MMRSOURCE_23 = """{"language":"es","name":"Universo Yuri","base_url":"https://universoyuri.com","supports_latest":true,"item_url":"https://universoyuri.com/manga/","categories":[{"id":"1","name":"Acción"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comedia"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasía"},{"id":"8","name":"Harem"},{"id":"9","name":"Histórico"},{"id":"10","name":"Terror"},{"id":"11","name":"Mecha"},{"id":"12","name":"Misterio"},{"id":"13","name":"One Shot"},{"id":"14","name":"Psicológico"},{"id":"15","name":"Romance"},{"id":"16","name":"Escolar"},{"id":"17","name":"Ciencia ficción"},{"id":"18","name":"Vida cotidiana"},{"id":"19","name":"Deportes"},{"id":"20","name":"Sobrenatural"},{"id":"21","name":"Música"}],"tags":[{"id":"yuri","name":"yuri"},{"id":"sex-friends","name":"sex friends"},{"id":"webtoon","name":"Webtoon"},{"id":"adult-life","name":"Adult life"},{"id":"full-color","name":"Full color"},{"id":"classmate","name":"classmate"},{"id":"asesinos","name":"Asesinos"},{"id":"fantasia","name":"Fantasía"},{"id":"vida-escolar","name":"Vida escolar"},{"id":"incesto","name":"incesto"},{"id":"hentai","name":"hentai"},{"id":"precure-doujin","name":"PreCure Doujin"},{"id":"student-x-teacher","name":"Student x Teacher"},{"id":"romance","name":"romance"},{"id":"drama","name":"drama"},{"id":"comedia","name":"comedia"},{"id":"bang-dream","name":"BanG Dream!"},{"id":"kokoro-x-misaki","name":"Kokoro x Misaki"},{"id":"nsfw","name":"NSFW"},{"id":"fantasmas","name":"fantasmas"},{"id":"gl","name":"gl"},{"id":"doujinshi","name":"Doujinshi"},{"id":"hot","name":"hot"},{"id":"all-girls-school","name":"All-Girls School"},{"id":"military-academy","name":"Military Academy"},{"id":"rainy-devil-scans","name":"Rainy Devil Scans"},{"id":"bondage","name":"Bondage"},{"id":"yuri-hime","name":"Yuri Hime"},{"id":"one-shot","name":"one shot"},{"id":"5k-scanlation","name":"5K Scanlation"},{"id":"watashitachi-no-yuri","name":"WatashiTachi No Yuri"},{"id":"politica","name":"política"},{"id":"comida","name":"comida"},{"id":"cyborg","name":"cyborg"},{"id":"rai","name":"RAI"},{"id":"violencia-familiar","name":"violencia familiar"},{"id":"selene-yuri-projects","name":"Selene Yuri Projects"}]}""" -private const val MMRSOURCE_24 = """{"language":"pl","name":"Phoenix-Scans","base_url":"https://phoenix-scans.pl","supports_latest":true,"item_url":"https://phoenix-scans.pl/manga/","categories":[{"id":"1","name":"Shounen"},{"id":"2","name":"Tragedia"},{"id":"3","name":"Szkolne życie"},{"id":"4","name":"Romans"},{"id":"5","name":"Zagadka"},{"id":"6","name":"Horror"},{"id":"7","name":"Dojrzałe"},{"id":"8","name":"Psychologiczne"},{"id":"9","name":"Przygodowe"},{"id":"10","name":"Akcja"},{"id":"11","name":"Komedia"},{"id":"12","name":"Zboczone"},{"id":"13","name":"Fantasy"},{"id":"14","name":"Harem"},{"id":"15","name":"Historyczne"},{"id":"16","name":"Manhua"},{"id":"17","name":"Manhwa"},{"id":"18","name":"Sztuki walki"},{"id":"19","name":"One shot"},{"id":"20","name":"Sci fi"},{"id":"21","name":"Seinen"},{"id":"22","name":"Shounen ai"},{"id":"23","name":"Spokojne życie"},{"id":"24","name":"Sport"},{"id":"25","name":"Nadprzyrodzone"},{"id":"26","name":"Webtoons"},{"id":"27","name":"Dramat"},{"id":"28","name":"Hentai"},{"id":"29","name":"Mecha"},{"id":"30","name":"Gender Bender"},{"id":"31","name":"Gry"},{"id":"32","name":"Yaoi"}],"tags":[{"id":"aktywne","name":"aktywne"},{"id":"zakonczone","name":"zakończone"},{"id":"porzucone","name":"porzucone"}]}""" -private const val MMRSOURCE_25 = """{"language":"ru","name":"Japit Comics","base_url":"https://j-comics.ru","supports_latest":true,"item_url":"https://j-comics.ru/manga/","categories":[{"id":"1","name":"Боевик"},{"id":"2","name":"Приключения"},{"id":"3","name":"Комедия"},{"id":"4","name":"Додзинси"},{"id":"5","name":"Драма"},{"id":"6","name":"Этти"},{"id":"7","name":"Фэнтези"},{"id":"8","name":"Гендерная интрига"},{"id":"9","name":"Гарем"},{"id":"10","name":"История"},{"id":"11","name":"Ужасы"},{"id":"12","name":"Дзёсэй"},{"id":"13","name":"Боевые искусства"},{"id":"14","name":"Эротика"},{"id":"15","name":"Меха"},{"id":"16","name":"Мистика"},{"id":"17","name":"Ваншот"},{"id":"18","name":"Психология"},{"id":"19","name":"Романтика"},{"id":"20","name":"Школа"},{"id":"21","name":"Научная фантастика"},{"id":"22","name":"Сэйнэн"},{"id":"23","name":"Сёдзё"},{"id":"24","name":"Сёдзё-ай"},{"id":"25","name":"Сёнэн"},{"id":"26","name":"Сёнэн-ай"},{"id":"27","name":"Повседневность"},{"id":"28","name":"Спорт"},{"id":"29","name":"Сверхъест."},{"id":"30","name":"Трагедия"},{"id":"31","name":"Яой"},{"id":"32","name":"Юри"}],"tags":"null"}""" -private const val MMRSOURCE_26 = """{"language":"tr","name":"Puzzmos","base_url":"https://puzzmos.com","supports_latest":true,"item_url":"https://puzzmos.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" -private const val MMRSOURCE_27 = """{"language":"fr","name":"Scan-1","base_url":"https://wwv.scan-1.com","supports_latest":true,"item_url":"https://wwv.scan-1.com/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" -private const val MMRSOURCE_28 = """{"language":"fr","name":"Lelscan-VF","base_url":"https://www.lelscan-vf.com","supports_latest":true,"item_url":"https://www.lelscan-vf.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" -private const val MMRSOURCE_29 = """{"language":"id","name":"MangaSusu","base_url":"https://www.mangasusu.site","supports_latest":true,"item_url":"https://www.mangasusu.website/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"Adult"},{"id":"34","name":"Isekai"},{"id":"35","name":"Webtoons"}],"tags":"null"}""" -private const val MMRSOURCE_30 = """{"language":"id","name":"Komik Manga","base_url":"https://adm.komikmanga.com","supports_latest":true,"item_url":"https://adm.komikmanga.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"Adult"},{"id":"34","name":"Isekai"}],"tags":"null"}""" -private const val MMRSOURCE_31 = """{"language":"ko","name":"Mangazuki Raws","base_url":"https://raws.mangazuki.co","supports_latest":false,"item_url":"\u003c!doctype html\u003e\n\u003chtml lang\u003d\"en-US\"\u003e\n \u003chead\u003e \n \u003cmeta charset\u003d\"UTF-8\"\u003e \n \u003cmeta http-equiv\u003d\"Content-Type\" content\u003d\"text/html; charset\u003dUTF-8\"\u003e \n \u003cmeta http-equiv\u003d\"X-UA-Compatible\" content\u003d\"IE\u003dEdge,chrome\u003d1\"\u003e \n \u003cmeta name\u003d\"robots\" content\u003d\"noindex, nofollow\"\u003e \n \u003cmeta name\u003d\"viewport\" content\u003d\"width\u003ddevice-width,initial-scale\u003d1\"\u003e \n \u003cmeta http-equiv\u003d\"refresh\" content\u003d\"12\"\u003e \n \u003ctitle\u003eJust a moment...\u003c/title\u003e \n \u003cstyle type\u003d\"text/css\"\u003e\n html, body {width: 100%; height: 100%; margin: 0; padding: 0;}\n body {background-color: #ffffff; color: #000000; font-family:-apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, \"Helvetica Neue\",Arial, sans-serif; font-size: 16px; line-height: 1.7em;-webkit-font-smoothing: antialiased;}\n h1 { text-align: center; font-weight:700; margin: 16px 0; font-size: 32px; color:#000000; line-height: 1.25;}\n p {font-size: 20px; font-weight: 400; margin: 8px 0;}\n p, .attribution, {text-align: center;}\n #spinner {margin: 0 auto 30px auto; display: block;}\n .attribution {margin-top: 32px;}\n @keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }\n @-webkit-keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }\n #cf-bubbles \u003e .bubbles { animation: fader 1.6s infinite;}\n #cf-bubbles \u003e .bubbles:nth-child(2) { animation-delay: .2s;}\n #cf-bubbles \u003e .bubbles:nth-child(3) { animation-delay: .4s;}\n .bubbles { background-color: #f58220; width:20px; height: 20px; margin:2px; border-radius:100%; display:inline-block; }\n a { color: #2c7cb0; text-decoration: none; -moz-transition: color 0.15s ease; -o-transition: color 0.15s ease; -webkit-transition: color 0.15s ease; transition: color 0.15s ease; }\n a:hover{color: #f4a15d}\n .attribution{font-size: 16px; line-height: 1.5;}\n .ray_id{display: block; margin-top: 8px;}\n #cf-wrapper #challenge-form { padding-top:25px; padding-bottom:25px; }\n #cf-hcaptcha-container { text-align:center;}\n #cf-hcaptcha-container iframe { display: inline-block;}\n \u003c/style\u003e \n \u003cscript type\u003d\"text/javascript\"\u003e\n //\u003c![CDATA[\n (function(){\n \n window._cf_chl_opt\u003d{\n cvId: \"1\",\n cType: \"non-interactive\",\n cNounce: \"82695\",\n cRay: \"5bf37bc8bccec170\",\n cHash: \"12c12acfce7e532\",\n cRq: {\n d: \"b6E7g2FfLdzBKnvjkTugtT9oSYNCkfmU+FLgGrxDvmmajH7jJr0evUQx9hKM1UFM9TH42rHDnUe50r1wKdsjXacfkMcJzkDrmvnVp5RCpWr7mKkVz1prb2Dspt6yrj1eXhcd2GSJOFgRW13I1HXOoUlIChukQmPXRYNCAnZl/wVsTEy14Lh3YwaLrF1z8Vyzpsb30TRtvP8o8F+4F5hafHtR6nmHCNMGUh3tSKe6voT1EwlTGiCSUG+UGmCo99pO5mwKqoj2OJDfVqzXuT/TCZb8qX1UfRmlb5Fa5haV3bnNTfZdRZfWUG3EbA11cWLTCNXZKNq95BUagra7DmwiOJvw257mopZIwC3wmUWM4FQztBJk2bRg7bYQ6DrCEe/1l3t4NvK0dV/LyhLxQ3XBDg\u003d\u003d\",\n t: \"MTU5NjgyOTM3NC44MzYwMDA\u003d\",\n m: \"qLs+DEw089qwp1K/NlyybnkcbIta84U0ZZgaeOvVfIk\u003d\",\n i1: \"9feAVL9XriPqMpe9oifRFg\u003d\u003d\",\n i2: \"Awfp5jTc1/nfIoUtjetq5g\u003d\u003d\",\n }\n }\n window._cf_chl_enter \u003d function(){window._cf_chl_opt.p\u003d1};\n \n var a \u003d function() {try{return !!window.addEventListener} catch(e) {return !1} },\n b \u003d function(b, c) {a() ? document.addEventListener(\"DOMContentLoaded\", b, c) : document.attachEvent(\"onreadystatechange\", b)};\n b(function(){\n var cookiesEnabled\u003d(navigator.cookieEnabled)? true : false;\n var cookieSupportInfix\u003dcookiesEnabled?\u0027/nocookie\u0027:\u0027/cookie\u0027;\n var a \u003d document.getElementById(\u0027cf-content\u0027);a.style.display \u003d \u0027block\u0027;\n var isIE \u003d /(MSIE|Trident\\/|Edge\\/)/i.test(window.navigator.userAgent);\n var trkjs \u003d isIE ? new Image() : document.createElement(\u0027img\u0027);\n trkjs.setAttribute(\"src\", \"/cdn-cgi/images/trace/jschal/js\"+cookieSupportInfix+\"/transparent.gif?ray\u003d5bf37bc8bccec170\");\n trkjs.id \u003d \"trk_jschal_js\";\n trkjs.setAttribute(\"alt\", \"\");\n document.body.appendChild(trkjs);\n \n document.body.appendChild(trkjs);\n var cpo \u003d document.createElement(\u0027script\u0027);\n cpo.type \u003d \u0027text/javascript\u0027;\n cpo.src \u003d \"/cdn-cgi/challenge-platform/orchestrate/jsch/v1\";\n var done \u003d false;\n cpo.onload \u003d cpo.onreadystatechange \u003d function() {\n if (!done \u0026\u0026 (!this.readyState || this.readyState \u003d\u003d\u003d \"loaded\" || this.readyState \u003d\u003d\u003d \"complete\")) {\n done \u003d true;\n cpo.onload \u003d cpo.onreadystatechange \u003d null;\n window._cf_chl_enter()\n }\n };\n document.getElementsByTagName(\u0027head\u0027)[0].appendChild(cpo);\n \n }, false);\n })();\n //]]\u003e\n\u003c/script\u003e \n \u003c/head\u003e \n \u003cbody\u003e \n \u003ctable width\u003d\"100%\" height\u003d\"100%\" cellpadding\u003d\"20\"\u003e \n \u003ctbody\u003e\n \u003ctr\u003e \n \u003ctd align\u003d\"center\" valign\u003d\"middle\"\u003e \n \u003cdiv class\u003d\"cf-browser-verification cf-im-under-attack\"\u003e \n \u003cnoscript\u003e \n \u003ch1 data-translate\u003d\"turn_on_js\" style\u003d\"color:#bd2426;\"\u003ePlease turn JavaScript on and reload the page.\u003c/h1\u003e \n \u003c/noscript\u003e \n \u003cdiv id\u003d\"cf-content\" style\u003d\"display:none\"\u003e \n \u003cdiv id\u003d\"cf-bubbles\"\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003c/div\u003e \n \u003ch1\u003e\u003cspan data-translate\u003d\"checking_browser\"\u003eChecking your browser before accessing\u003c/span\u003e mangazuki.co.\u003c/h1\u003e \n \u003cdiv id\u003d\"no-cookie-warning\" data-translate\u003d\"turn_on_cookies\" style\u003d\"display:none\"\u003e \n \u003cp data-translate\u003d\"turn_on_cookies\" style\u003d\"color:#bd2426;\"\u003ePlease enable Cookies and reload the page.\u003c/p\u003e \n \u003c/div\u003e \n \u003cp data-translate\u003d\"process_is_automatic\"\u003eThis process is automatic. Your browser will redirect to your requested content shortly.\u003c/p\u003e \n \u003cp data-translate\u003d\"allow_5_secs\"\u003ePlease allow up to 5 seconds…\u003c/p\u003e \n \u003c/div\u003e \n \u003cform class\u003d\"challenge-form\" id\u003d\"challenge-form\" action\u003d\"/?__cf_chl_jschl_tk__\u003d074ba5e9cd248e9d7eb8d94cb10abb0d337b96ef-1596829374-0-AS7aDUoLHTOUr_1oVEoUhu2Jur4sRlymnbHlGHrcIXxjjvfMoufrRDmmCAFbtortRknck-B4fiZJJibYB0xlbLFOyOgGJo1vktxDwOzhYIzryZe3NhndR4RTseOgF0Sl23ivmDYr-KchMcUXTATELoFtciXy6wD7V6LhDAHjsMUmp1lI2GtrUL-0kW_QX0CRwAe9b6OrvZg0SUwQaNUiK01hfXn8AFxJcoxpaimHgzgm9Jnr3_jvH2WKqXkvDS-xFdKuSlQgFHlNfLJyO9Fjopc\" method\u003d\"POST\" enctype\u003d\"application/x-www-form-urlencoded\"\u003e \n \u003cinput type\u003d\"hidden\" name\u003d\"r\" value\u003d\"7123871dd6ebdcc4bdf8bb7c04d01c1c896c166e-1596829374-0-Ae5Bk3RWQTTM4gXbJVDIFQOuRSgSVS+6XGxp+g9GphFdCRMNBQpHSYlQgGDjHkdnCV+M8m5cF73OWJKaxZ0ea/1wIw5GOXQfyNo9jROxztvrnntDs+VMXZJrNw8sbeTMnbpM9eKbTp1nAdE7mHOWneFYIXstRz4WUnKZ4KFYCbyyRA8geubbdmUEAiNG1gnTXEaG+xFLh1s67nqcxIfo0XdLUmgr6F2CzGiwSZZIro1r/+XgtAicHLEmz9/JzBrU8ckFVDrEK/K4Bo3stIE06fWwimt3tY/C52QFJq8kc+qigjzXPuL3pghezVaw7g1RV1UmtonPfgY8XtSN+BlIDPd458sCtoz2rM0eyXPurEKy6xSEPRETiML7JkqndcyJ0CZ8aXrUiOCMrFqEKcw0eVJ6ThlRWei+18GeTW8/P1Rv74nzV7eO3VSp/4uCRTQqhYPB2q8hqEKYKTCbbikBiul/h97NoHLMtc1ToHx77tEDg9oQ0ugf29I3cF4y4VnRWTg11F9M3Lbf4yRp6ZTvjLRGQbykq1kLqkGqM837YW/7tzdkSN6d/D2iNdfnk22i2KFS5Ob3QbatrkJ94DDsyF0W195QMvHVix9ijR1RPPNF0tV1dQORbKidzqphD6zrzEmaORw5RYvbLyoq8472e9BhsUV0qoIw2XODHARiX7mi9VsGryks/bl/E6McC21CtawmnWuwHFmon7OscMr/QdhzfRLBEZUZjUd46MjJH2o+XWUKFXNwjaJ66MhUuxFy9mSPj/qtLX47OgueWfWuxDHXKMTIU0oZmsGHrzISXrI+lkTQ/UCSgHZlm9ykvs+6XhLSIg0/+hlpjoJPjm3zKr2Ug6gIZemKjAiMhlaJv+SbNZtyw1P7P7dr1Fn2dC+rh6mjQFvEOYGcDQ8rZJKatVBocK2X6Y2Yxs/Se98nuFq1PODQZWKyErpJ5Gx7UJNqSGeUTMcwIoMSHyGcY6ETNLWWkfsXsJc73aZ/OT22koX3zNMDbBJXFxmead6KQiFuJoIVKXjn2DgW2qmIz1dYiKEa5Zh1vmrLKtqUAVfVTmzhay6OaoIIkEYiwlWnsdy7h1H+iX4YxKkRaO5lXE+Ghvw51HQIeGS+ETCQEVlnlANjANc8S9tyQ366lUOmN5nrJg\u003d\u003d\"\u003e \n \u003cinput type\u003d\"hidden\" value\u003d\"23ba22506b6d844a4ccde8fb7b6c6537\" id\u003d\"jschl-vc\" name\u003d\"jschl_vc\"\u003e \n \u003c!-- \u003cinput type\u003d\"hidden\" value\u003d\"\" id\u003d\"jschl-vc\" name\u003d\"jschl_vc\"/\u003e --\u003e \n \u003cinput type\u003d\"hidden\" name\u003d\"pass\" value\u003d\"1596829378.836-iJzLf64/8p\"\u003e \n \u003cinput type\u003d\"hidden\" id\u003d\"jschl-answer\" name\u003d\"jschl_answer\"\u003e \n \u003c/form\u003e \n \u003cdiv id\u003d\"trk_jschal_nojs\" style\u003d\"background-image:url(\u0027/cdn-cgi/images/trace/jschal/nojs/transparent.gif?ray\u003d5bf37bc8bccec170\u0027)\"\u003e \n \u003c/div\u003e \n \u003c/div\u003e \n \u003cdiv class\u003d\"attribution\"\u003e\n DDoS protection by \n \u003ca href\u003d\"https://www.cloudflare.com/5xx-error-landing?utm_source\u003diuam\" target\u003d\"_blank\"\u003eCloudflare\u003c/a\u003e \n \u003cbr\u003e \n \u003cspan class\u003d\"ray_id\"\u003eRay ID: \u003ccode\u003e5bf37bc8bccec170\u003c/code\u003e\u003c/span\u003e \n \u003c/div\u003e \u003c/td\u003e \n \u003c/tr\u003e \n \u003c/tbody\u003e\n \u003c/table\u003e \n \u003c/body\u003e\n\u003c/html\u003e/","categories":[],"tags":"null"}""" -private const val MMRSOURCE_32 = """{"language":"pt-BR","name":"Remangas","base_url":"https://remangas.top","supports_latest":true,"item_url":"https://remangas.top/manga/","categories":[{"id":"1","name":"Ação"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comédia"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasia"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Histórico"},{"id":"11","name":"Terror"},{"id":"12","name":"Josei"},{"id":"13","name":"Artes Marciais"},{"id":"14","name":"Adulto"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mistério"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psicológico"},{"id":"19","name":"Romance"},{"id":"20","name":"Vida escolar"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Esporte"},{"id":"29","name":"Sobrenatural"},{"id":"30","name":"Tragédia"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"Isekai"},{"id":"34","name":"Guerra"},{"id":"35","name":"Sobrevivência"},{"id":"36","name":"Romance?"}],"tags":[{"id":"seinen","name":"seinen"},{"id":"ecchi","name":"ecchi"},{"id":"harem","name":"harem"},{"id":"isekai","name":"isekai"},{"id":"guerra","name":"guerra"},{"id":"shounen","name":"shounen"},{"id":"18","name":"+18"},{"id":"adulto","name":"Adulto"},{"id":"fantasia","name":"Fantasia"},{"id":"romance","name":"Romance"},{"id":"vida-escolar","name":"Vida Escolar"},{"id":"acao","name":"Ação"},{"id":"misterio","name":"mistério"},{"id":"terror","name":"Terror"},{"id":"detetive","name":"Detetive"},{"id":"misterios","name":"Mistérios"},{"id":"incesto","name":"Incesto"},{"id":"comedia-romantica","name":"Comédia Romantica"},{"id":"alquimia","name":"Alquimia"},{"id":"manhua","name":"Manhua"},{"id":"colorido","name":"Colorido"},{"id":"antologia","name":"Antologia"},{"id":"dragoes","name":"Dragões"},{"id":"briga-de-rua","name":"Briga de Rua"},{"id":"anti-heroi","name":"Anti Herói"},{"id":"zoera","name":"Zoera"},{"id":"protagonista-overpower","name":"Protagonista Overpower"},{"id":"psicologico","name":"Psicológico"},{"id":"protagonista-badass","name":"Protagonista Badass"},{"id":"battleroyale","name":"Battleroyale"},{"id":"apocalispe-zumbi","name":"Apocalispe Zumbi"},{"id":"mc-nao-virjao","name":"Mc Não Virjão"},{"id":"escola-de-magia","name":"Escola de Magia"},{"id":"tensei","name":"Tensei"},{"id":"shota-badass","name":"Shota Badass"},{"id":"isekai-vai-e-volta","name":"Isekai Vai e Volta"},{"id":"gore","name":"gore"},{"id":"garota-monstro","name":"Garota Monstro"},{"id":"maid","name":"Maid"},{"id":"gal","name":"Gal"}]}""" -private const val MMRSOURCE_33 = """{"language":"pt-BR","name":"AnimaRegia","base_url":"https://animaregia.net","supports_latest":true,"item_url":"https://animaregia.net/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" -private const val MMRSOURCE_34 = """{"language":"tr","name":"NoxSubs","base_url":"https://noxsubs.com","supports_latest":true,"item_url":"https://noxsubs.com/manga/","categories":[{"id":"1","name":"Harem"},{"id":"2","name":"Mecha"},{"id":"3","name":"Seinen"},{"id":"4","name":"Shounen"},{"id":"5","name":"Slice of Life"},{"id":"6","name":"Trajedi"},{"id":"7","name":"Doğaüstü"},{"id":"8","name":"Spor"},{"id":"9","name":"Bilim-Kurgu"},{"id":"10","name":"Okul Hayatı"},{"id":"11","name":"Romantizm"},{"id":"12","name":"Dövüş Sanatları"},{"id":"13","name":"Psikolojik"},{"id":"14","name":"Gizem"},{"id":"15","name":"Korku"},{"id":"16","name":"Dram"},{"id":"17","name":"Aksiyon"},{"id":"18","name":"Komedi"},{"id":"19","name":"Macera"},{"id":"20","name":"Tek Atımlık"},{"id":"21","name":"Tarihi"},{"id":"22","name":"Fantezi"},{"id":"23","name":"Askeri"},{"id":"24","name":"Büyü"}],"tags":[{"id":"tag","name":"괴물아기"},{"id":"canavar-cocuk","name":"Canavar Çocuk"},{"id":"monster-child","name":"Monster Child"},{"id":"abyss-rage","name":"Abyss Rage"},{"id":"diamond-no-ace-act-ii","name":"Diamond no Ace Act II"},{"id":"diamond-no-ace","name":"Diamond no Ace"},{"id":"soloist-of-prison","name":"Soloist of Prison"},{"id":"reincarnation-no-kaben","name":"Reincarnation no Kaben"},{"id":"youjo-senki","name":"Youjo Senki"},{"id":"devil-of-rhine","name":"Devil of Rhine"},{"id":"saga-of-tanya-the-evil","name":"Saga of Tanya the Evil"},{"id":"rikudou","name":"Rikudou"},{"id":"rikudo","name":"Rikudo"},{"id":"mf-ghost","name":"MF Ghost"},{"id":"komi-san","name":"Komi-san"},{"id":"komi-san-wa-komyushou-desu","name":"Komi-san wa Komyushou Desu"},{"id":"die-dai","name":"Die Dai"},{"id":"pounding","name":"Pounding"},{"id":"panda","name":"Panda"},{"id":"agrikesici","name":"Ağrıkesici"},{"id":"intikam","name":"İntikam"},{"id":"onepiece","name":"#OnePiece"},{"id":"oneshot","name":"#OneShot"},{"id":"tanya","name":"#Tanya"},{"id":"senryuushoujo","name":"#SenryuuShoujo"},{"id":"gorgon","name":"#Gorgon"},{"id":"theblueland","name":"#TheBlueLand"},{"id":"reenkarnasyon","name":"Reenkarnasyon"},{"id":"onepieceacademy","name":"#OnePieceAcademy"},{"id":"ev-erkegi","name":"EV ERKEĞİ"},{"id":"onepieceboichi","name":"#OnePieceBoichi"},{"id":"warlord","name":"#Warlord"},{"id":"sheriffevans","name":"#SheriffEvans"},{"id":"goh","name":"#GOH"},{"id":"godofhighschool","name":"#GodofHighschool"},{"id":"serifevans","name":"#ŞerifEvans"},{"id":"shy","name":"#SHY"},{"id":"ponko","name":"#Ponko"}]}""" -private const val MMRSOURCE_35 = """{"language":"id","name":"MangaYu","base_url":"https://mangayu.com","supports_latest":true,"item_url":"https://mangayu.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"Project"},{"id":"34","name":"Isekai"},{"id":"35","name":"Reincarnation"}],"tags":[{"id":"manga","name":"Manga"},{"id":"magic","name":"Magic"},{"id":"manhua","name":"Manhua"},{"id":"demons","name":"Demons"}]}""" -private const val MMRSOURCE_36 = """{"language":"tr","name":"MangaVadisi","base_url":"http://manga-v2.mangavadisi.org","supports_latest":true,"item_url":"http://manga-v2.mangavadisi.org/manga/","categories":[{"id":"1","name":"Aksiyon"},{"id":"2","name":"Macera"},{"id":"3","name":"Komedi"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantastik"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Tarihi"},{"id":"11","name":"Korku"},{"id":"12","name":"Josei"},{"id":"13","name":"Dövüş Sanatları"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Gizem"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psikolojik"},{"id":"19","name":"Romantizm"},{"id":"20","name":"Okul Hayatı"},{"id":"21","name":"Bilim Kurgu"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Günlük Yaşam"},{"id":"28","name":"Spor"},{"id":"29","name":"Doğaüstü"},{"id":"30","name":"Trajedi"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" -private const val MMRSOURCE_37 = """{"language":"other","name":"HentaiShark","base_url":"https://www.hentaishark.com","supports_latest":true,"item_url":"https://www.hentaishark.com/manga/","categories":[{"id":"1","name":"Doujinshi"},{"id":"2","name":"Manga"},{"id":"3","name":"Western"},{"id":"4","name":"non-h"},{"id":"5","name":"imageset"},{"id":"6","name":"artistcg"},{"id":"7","name":"misc"}],"tags":"null"}""" -val SOURCES: List get() = listOf(MMRSOURCE_1, MMRSOURCE_2, MMRSOURCE_3, MMRSOURCE_4, MMRSOURCE_5, MMRSOURCE_6, MMRSOURCE_7, MMRSOURCE_8, MMRSOURCE_9, MMRSOURCE_10, MMRSOURCE_11, MMRSOURCE_12, MMRSOURCE_13, MMRSOURCE_14, MMRSOURCE_15, MMRSOURCE_16, MMRSOURCE_17, MMRSOURCE_18, MMRSOURCE_19, MMRSOURCE_20, MMRSOURCE_21, MMRSOURCE_22, MMRSOURCE_23, MMRSOURCE_24, MMRSOURCE_25, MMRSOURCE_26, MMRSOURCE_27, MMRSOURCE_28, MMRSOURCE_29, MMRSOURCE_30, MMRSOURCE_31, MMRSOURCE_32, MMRSOURCE_33, MMRSOURCE_34, MMRSOURCE_35, MMRSOURCE_36, MMRSOURCE_37) +private const val MMRSOURCE_1 = """{"language":"ar","name":"مانجا اون لاين","base_url":"https://onma.me","supports_latest":false,"isNsfw":false,"item_url":"\u003c!doctype html\u003e\n\u003chtml lang\u003d\"en-US\"\u003e\n \u003chead\u003e \n \u003cmeta charset\u003d\"UTF-8\"\u003e \n \u003cmeta http-equiv\u003d\"Content-Type\" content\u003d\"text/html; charset\u003dUTF-8\"\u003e \n \u003cmeta http-equiv\u003d\"X-UA-Compatible\" content\u003d\"IE\u003dEdge,chrome\u003d1\"\u003e \n \u003cmeta name\u003d\"robots\" content\u003d\"noindex, nofollow\"\u003e \n \u003cmeta name\u003d\"viewport\" content\u003d\"width\u003ddevice-width,initial-scale\u003d1\"\u003e \n \u003cmeta http-equiv\u003d\"refresh\" content\u003d\"12\"\u003e \n \u003ctitle\u003eJust a moment...\u003c/title\u003e \n \u003cstyle type\u003d\"text/css\"\u003e\n html, body {width: 100%; height: 100%; margin: 0; padding: 0;}\n body {background-color: #ffffff; color: #000000; font-family:-apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, \"Helvetica Neue\",Arial, sans-serif; font-size: 16px; line-height: 1.7em;-webkit-font-smoothing: antialiased;}\n h1 { text-align: center; font-weight:700; margin: 16px 0; font-size: 32px; color:#000000; line-height: 1.25;}\n p {font-size: 20px; font-weight: 400; margin: 8px 0;}\n p, .attribution, {text-align: center;}\n #spinner {margin: 0 auto 30px auto; display: block;}\n .attribution {margin-top: 32px;}\n @keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }\n @-webkit-keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }\n #cf-bubbles \u003e .bubbles { animation: fader 1.6s infinite;}\n #cf-bubbles \u003e .bubbles:nth-child(2) { animation-delay: .2s;}\n #cf-bubbles \u003e .bubbles:nth-child(3) { animation-delay: .4s;}\n .bubbles { background-color: #f58220; width:20px; height: 20px; margin:2px; border-radius:100%; display:inline-block; }\n a { color: #2c7cb0; text-decoration: none; -moz-transition: color 0.15s ease; -o-transition: color 0.15s ease; -webkit-transition: color 0.15s ease; transition: color 0.15s ease; }\n a:hover{color: #f4a15d}\n .attribution{font-size: 16px; line-height: 1.5;}\n .ray_id{display: block; margin-top: 8px;}\n #cf-wrapper #challenge-form { padding-top:25px; padding-bottom:25px; }\n #cf-hcaptcha-container { text-align:center;}\n #cf-hcaptcha-container iframe { display: inline-block;}\n \u003c/style\u003e \n \u003cscript type\u003d\"text/javascript\"\u003e\n //\u003c![CDATA[\n (function(){\n \n window._cf_chl_opt\u003d{\n cvId: \"1\",\n cType: \"non-interactive\",\n cNounce: \"29890\",\n cRay: \"5c17fdeca950c1f2\",\n cHash: \"94852a2d10f7740\",\n cRq: {\n d: \"e4g8L+QdCWXcpnmcs/P5zVygYfK4G3s/jisyuvD7REbUg9Q23/nw3jm1Ex4s6lC1I4YKRQkDRC0ar2EDuiCdGCWBFFeibSWWZse+dJufK3RmWMYOhMsp2nOIBj/C+u5yvQjL5oG2JNO+rCBJErSvRYjJx/gpJG9kGkX6GKigc1kzJZHf+UI7VmlmZga1r8YBnchGDJFwdvq/02clJUPxzCoOXsocrd63+gR+emu1dP/lEWUKlNennIfLWHV74pyIreXIkkAqWR/hZEHQqGGJ+3Jpy28wwp7Z+TZz7hqCr6iFgsepKsL1M5xENkZdVtGdgx+wQKbiragLQFMDLDXM4PE8O1kSBTIrHN0bJD6QKimIwKPIaVV/6RmCmXVwMa2xB7szCMJiwtqiOc5b124jlg\u003d\u003d\",\n t: \"MTU5NzIxMjE5Mi43NDQwMDA\u003d\",\n m: \"Z4xu46kLnupYt0TBlhRiCXukQvjc6CWPynEKxX2y94Y\u003d\",\n i1: \"gKtJ7KWk2t2dzltuW7Myig\u003d\u003d\",\n i2: \"h5ATi4JQfnIsP+ZsmGpdIQ\u003d\u003d\",\n }\n }\n window._cf_chl_enter \u003d function(){window._cf_chl_opt.p\u003d1};\n \n var a \u003d function() {try{return !!window.addEventListener} catch(e) {return !1} },\n b \u003d function(b, c) {a() ? document.addEventListener(\"DOMContentLoaded\", b, c) : document.attachEvent(\"onreadystatechange\", b)};\n b(function(){\n var cookiesEnabled\u003d(navigator.cookieEnabled)? true : false;\n var cookieSupportInfix\u003dcookiesEnabled?\u0027/nocookie\u0027:\u0027/cookie\u0027;\n var a \u003d document.getElementById(\u0027cf-content\u0027);a.style.display \u003d \u0027block\u0027;\n var isIE \u003d /(MSIE|Trident\\/|Edge\\/)/i.test(window.navigator.userAgent);\n var trkjs \u003d isIE ? new Image() : document.createElement(\u0027img\u0027);\n trkjs.setAttribute(\"src\", \"/cdn-cgi/images/trace/jschal/js\"+cookieSupportInfix+\"/transparent.gif?ray\u003d5c17fdeca950c1f2\");\n trkjs.id \u003d \"trk_jschal_js\";\n trkjs.setAttribute(\"alt\", \"\");\n document.body.appendChild(trkjs);\n \n document.body.appendChild(trkjs);\n var cpo \u003d document.createElement(\u0027script\u0027);\n cpo.type \u003d \u0027text/javascript\u0027;\n cpo.src \u003d \"/cdn-cgi/challenge-platform/orchestrate/jsch/v1\";\n var done \u003d false;\n cpo.onload \u003d cpo.onreadystatechange \u003d function() {\n if (!done \u0026\u0026 (!this.readyState || this.readyState \u003d\u003d\u003d \"loaded\" || this.readyState \u003d\u003d\u003d \"complete\")) {\n done \u003d true;\n cpo.onload \u003d cpo.onreadystatechange \u003d null;\n window._cf_chl_enter()\n }\n };\n document.getElementsByTagName(\u0027head\u0027)[0].appendChild(cpo);\n \n }, false);\n })();\n //]]\u003e\n\u003c/script\u003e \n \u003c/head\u003e \n \u003cbody\u003e \n \u003ctable width\u003d\"100%\" height\u003d\"100%\" cellpadding\u003d\"20\"\u003e \n \u003ctbody\u003e\n \u003ctr\u003e \n \u003ctd align\u003d\"center\" valign\u003d\"middle\"\u003e \n \u003cdiv class\u003d\"cf-browser-verification cf-im-under-attack\"\u003e \n \u003cnoscript\u003e \n \u003ch1 data-translate\u003d\"turn_on_js\" style\u003d\"color:#bd2426;\"\u003ePlease turn JavaScript on and reload the page.\u003c/h1\u003e \n \u003c/noscript\u003e \n \u003cdiv id\u003d\"cf-content\" style\u003d\"display:none\"\u003e \n \u003cdiv id\u003d\"cf-bubbles\"\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003c/div\u003e \n \u003ch1\u003e\u003cspan data-translate\u003d\"checking_browser\"\u003eChecking your browser before accessing\u003c/span\u003e onma.me.\u003c/h1\u003e \n \u003cdiv id\u003d\"no-cookie-warning\" data-translate\u003d\"turn_on_cookies\" style\u003d\"display:none\"\u003e \n \u003cp data-translate\u003d\"turn_on_cookies\" style\u003d\"color:#bd2426;\"\u003ePlease enable Cookies and reload the page.\u003c/p\u003e \n \u003c/div\u003e \n \u003cp data-translate\u003d\"process_is_automatic\"\u003eThis process is automatic. Your browser will redirect to your requested content shortly.\u003c/p\u003e \n \u003cp data-translate\u003d\"allow_5_secs\"\u003ePlease allow up to 5 seconds…\u003c/p\u003e \n \u003c/div\u003e \n \u003ca href\u003d\"https://robinsonsdrlg.com/direct.php?tag\u003d7\" style\u003d\"position: absolute; top: -250px; left: -250px;\"\u003e\u003c/a\u003e \n \u003cform class\u003d\"challenge-form\" id\u003d\"challenge-form\" action\u003d\"/?__cf_chl_jschl_tk__\u003d8f050c75cd4f19361d283908327505c48b689c2c-1597212192-0-AStlCbLDJe85gyM_fwaIscKjB8tRQc_Mf6RN08zv1u5CR3ZUyl4GAvWFYn8fHtJagMu8OkRMZwomn3BqZM0BEtp6soQb5Is97a3aOXi7KGsIdScUTb-K4e4PSsvYyVTDyjqGcG0vpGKUClrrxQImaXWckeaT0DNkces2JLNzMblwpRqIt2gZLktcU7K7Mp5w6no47gAdrJucJdcC-H6UcEGDRawO7d0tGeSLIY_qWSpj_VBrxxn2O4Kd2qdR1pgjhSQbjNbMnuJ9grudnWdBVJk\" method\u003d\"POST\" enctype\u003d\"application/x-www-form-urlencoded\"\u003e \n \u003cinput type\u003d\"hidden\" name\u003d\"r\" value\u003d\"a0e13c893ea5518c50124c407a27dcae939f4f39-1597212192-0-AQvIrbTsrNIVDpFFlSL2FpvyqCUYP8GkLd91z1DJIr+STdwmJqMzU/s4FZB4fwAh6fbMrStVw+X0wZQuruFTEOGRyEa9CoVooMyUhS34yJEYXNoM/f53iUkAo0h+M7GAU/s3S2avD39eR7277XfXOWOKBTqnMMIRO7ZznxDqHj5BA5kRjf8l2Va0Mq4GDLXdnuaTkWvsVmdw2l8R7yOsm/MLWY8dGOrKIBASMXsonbeuxc2kSi64RllvAQToMMlB0FsqugXA0761Eyokgh1aU8YomQIFN5BmbhD7UhOtmpPFfvixd6oC0+qLfXP8FJvzRpibC2bD/iAgTaYo+c17jqZygjOjk6Cjs0EZDZWIIbvHybtj2NCoP1j/ayBmvltkQGyvO7ifN25hwFLRKEDfm4e+cOXCLPZBeyhLPih9bMlIuehGmkQqJjV7IXkeML2hVJAhk1oaosaVg0SX3vzjhwbUsc5EV1ubqeVcW3jT4MgBkBO1WI3Tt0ssABm842srcVYaZaR0aGBhp2u0He/xr2NCrttQP8yeEkKbRfCYc4Q9J0CUH1KeA5kL4ZwepY77oM9kJ2EOi77tvxEdGXcP5q42zFa9Zz0bWe8IIljR42PFxF+a/9cg0JlZakQGozddvVrrUmEG4JNszpC2c/lWI/itQ7XNYzujEZBJQl5ZqfhfYvxifftnH3FvDxrIVJonEK2HQPE2i5LWZGa7r6QjSlMXd+wNzHMI7V3XtX3aMBmDWLDCa0Xg5QVt5lItqw1N1Ud2SjHhVPhkf/z0X/FQYXaGB1jRzhgGGAgno4D3R9NKgVEQ8JdzfKr26optxmDaEL8yTIajAaEwU8L8V8fqbnd0OQA9Sb51HaF1Z4o46o4Lctlx9fw4Zfzid34i/VAeIi9e2yqFj5xWkvfZN7MEfFN/tl5sIOG8Y0B2SIPzKktoXT8qF9T1bl0VDGcrTVFthIo4H6UiwqgqORYbjAuSZ89UeD4vHPrGkHIxqjo7DFtiDAFjcFC+XOV6f2tJOJ5tsY+i8s/I2uVppwU8eMdOlQDJalfQgC9Qtpa0Mp+qcFMlj32RhXCAVVXAWpWdhQ8i1V9FWYHyJk39ZWhahQ0phMq5zMJ2+5T9OTSzYMj2+4tH\"\u003e \n \u003cinput type\u003d\"hidden\" value\u003d\"c6d41ec2eb7cd7026c187d82d46d3155\" id\u003d\"jschl-vc\" name\u003d\"jschl_vc\"\u003e \n \u003c!-- \u003cinput type\u003d\"hidden\" value\u003d\"\" id\u003d\"jschl-vc\" name\u003d\"jschl_vc\"/\u003e --\u003e \n \u003cinput type\u003d\"hidden\" name\u003d\"pass\" value\u003d\"1597212196.744-A9AvobEQM7\"\u003e \n \u003cinput type\u003d\"hidden\" id\u003d\"jschl-answer\" name\u003d\"jschl_answer\"\u003e \n \u003c/form\u003e \n \u003cdiv id\u003d\"trk_jschal_nojs\" style\u003d\"background-image:url(\u0027/cdn-cgi/images/trace/jschal/nojs/transparent.gif?ray\u003d5c17fdeca950c1f2\u0027)\"\u003e \n \u003c/div\u003e \n \u003c/div\u003e \n \u003cdiv class\u003d\"attribution\"\u003e\n DDoS protection by \n \u003ca href\u003d\"https://www.cloudflare.com/5xx-error-landing?utm_source\u003diuam\" target\u003d\"_blank\"\u003eCloudflare\u003c/a\u003e \n \u003cbr\u003e \n \u003cspan class\u003d\"ray_id\"\u003eRay ID: \u003ccode\u003e5c17fdeca950c1f2\u003c/code\u003e\u003c/span\u003e \n \u003c/div\u003e \u003c/td\u003e \n \u003c/tr\u003e \n \u003c/tbody\u003e\n \u003c/table\u003e \n \u003c/body\u003e\n\u003c/html\u003e/","categories":[],"tags":"null"}""" +private const val MMRSOURCE_2 = """{"language":"en","name":"Read Comics Online","base_url":"https://readcomicsonline.ru","supports_latest":true,"isNsfw":false,"item_url":"https://readcomicsonline.ru/comic/","categories":[{"id":"1","name":"One Shots \u0026 TPBs"},{"id":"2","name":"DC Comics"},{"id":"3","name":"Marvel Comics"},{"id":"4","name":"Boom Studios"},{"id":"5","name":"Dynamite"},{"id":"6","name":"Rebellion"},{"id":"7","name":"Dark Horse"},{"id":"8","name":"IDW"},{"id":"9","name":"Archie"},{"id":"10","name":"Graphic India"},{"id":"11","name":"Darby Pop"},{"id":"12","name":"Oni Press"},{"id":"13","name":"Icon Comics"},{"id":"14","name":"United Plankton"},{"id":"15","name":"Udon"},{"id":"16","name":"Image Comics"},{"id":"17","name":"Valiant"},{"id":"18","name":"Vertigo"},{"id":"19","name":"Devils Due"},{"id":"20","name":"Aftershock Comics"},{"id":"21","name":"Antartic Press"},{"id":"22","name":"Action Lab"},{"id":"23","name":"American Mythology"},{"id":"24","name":"Zenescope"},{"id":"25","name":"Top Cow"},{"id":"26","name":"Hermes Press"},{"id":"27","name":"451"},{"id":"28","name":"Black Mask"},{"id":"29","name":"Chapterhouse Comics"},{"id":"30","name":"Red 5"},{"id":"31","name":"Heavy Metal"},{"id":"32","name":"Bongo"},{"id":"33","name":"Top Shelf"},{"id":"34","name":"Bubble"},{"id":"35","name":"Boundless"},{"id":"36","name":"Avatar Press"},{"id":"37","name":"Space Goat Productions"},{"id":"38","name":"BroadSword Comics"},{"id":"39","name":"AAM-Markosia"},{"id":"40","name":"Fantagraphics"},{"id":"41","name":"Aspen"},{"id":"42","name":"American Gothic Press"},{"id":"43","name":"Vault"},{"id":"44","name":"215 Ink"},{"id":"45","name":"Abstract Studio"},{"id":"46","name":"Albatross"},{"id":"47","name":"ARH Comix"},{"id":"48","name":"Legendary Comics"},{"id":"49","name":"Monkeybrain"},{"id":"50","name":"Joe Books"},{"id":"51","name":"MAD"},{"id":"52","name":"Comics Experience"},{"id":"53","name":"Alterna Comics"},{"id":"54","name":"Lion Forge"},{"id":"55","name":"Benitez"},{"id":"56","name":"Storm King"},{"id":"57","name":"Sucker"},{"id":"58","name":"Amryl Entertainment"},{"id":"59","name":"Ahoy Comics"},{"id":"60","name":"Mad Cave"},{"id":"61","name":"Coffin Comics"},{"id":"62","name":"Magnetic Press"},{"id":"63","name":"Ablaze"},{"id":"64","name":"Europe Comics"},{"id":"65","name":"Humanoids"},{"id":"66","name":"TKO"},{"id":"67","name":"Soleil"},{"id":"68","name":"SAF Comics"},{"id":"69","name":"Scholastic"},{"id":"70","name":"Upshot"},{"id":"71","name":"Stranger Comics"},{"id":"72","name":"Inverse"},{"id":"73","name":"Virus"}],"tags":"null"}""" +private const val MMRSOURCE_3 = """{"language":"en","name":"Biamam Scans","base_url":"https://biamam.com","supports_latest":true,"isNsfw":false,"item_url":"http://biamam.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"4-Koma"},{"id":"34","name":"Cooking"},{"id":"35","name":"Isekai"}],"tags":"null"}""" +private const val MMRSOURCE_4 = """{"language":"en","name":"Fallen Angels","base_url":"https://manga.fascans.com","supports_latest":true,"isNsfw":false,"item_url":"https://manga.fascans.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"4-Koma"},{"id":"34","name":"Cooking"}],"tags":"null"}""" +private const val MMRSOURCE_5 = """{"language":"en","name":"White Cloud Pavilion","base_url":"https://www.whitecloudpavilion.com/manga/free","supports_latest":true,"isNsfw":false,"item_url":"https://www.whitecloudpavilion.com/manga/free/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" +private const val MMRSOURCE_6 = """{"language":"fr","name":"Scan FR","base_url":"https://www.scan-fr.co","supports_latest":true,"isNsfw":false,"item_url":"https://www.scan-fr.co/manga/","categories":[{"id":"1","name":"Comedy"},{"id":"2","name":"Doujinshi"},{"id":"3","name":"Drama"},{"id":"4","name":"Ecchi"},{"id":"5","name":"Fantasy"},{"id":"6","name":"Gender Bender"},{"id":"7","name":"Josei"},{"id":"8","name":"Mature"},{"id":"9","name":"Mecha"},{"id":"10","name":"Mystery"},{"id":"11","name":"One Shot"},{"id":"12","name":"Psychological"},{"id":"13","name":"Romance"},{"id":"14","name":"School Life"},{"id":"15","name":"Sci-fi"},{"id":"16","name":"Seinen"},{"id":"17","name":"Shoujo"},{"id":"18","name":"Shoujo Ai"},{"id":"19","name":"Shounen"},{"id":"20","name":"Shounen Ai"},{"id":"21","name":"Slice of Life"},{"id":"22","name":"Sports"},{"id":"23","name":"Supernatural"},{"id":"24","name":"Tragedy"},{"id":"25","name":"Yaoi"},{"id":"26","name":"Yuri"},{"id":"27","name":"Comics"},{"id":"28","name":"Autre"},{"id":"29","name":"BD Occidentale"},{"id":"30","name":"Manhwa"},{"id":"31","name":"Action"},{"id":"32","name":"Aventure"}],"tags":"null"}""" +private const val MMRSOURCE_7 = """{"language":"fr","name":"Scan VF","base_url":"https://www.scan-vf.net","supports_latest":true,"isNsfw":false,"item_url":"https://www.scan-vf.net/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" +private const val MMRSOURCE_8 = """{"language":"fr","name":"Scan OP","base_url":"https://scan-op.com","supports_latest":true,"isNsfw":false,"item_url":"http://scan-op.net/manga/","categories":[{"id":"1","name":"Comedy"},{"id":"2","name":"Doujinshi"},{"id":"3","name":"Drama"},{"id":"4","name":"Ecchi"},{"id":"5","name":"Fantasy"},{"id":"6","name":"Gender Bender"},{"id":"7","name":"Josei"},{"id":"8","name":"Mature"},{"id":"9","name":"Mecha"},{"id":"10","name":"Mystery"},{"id":"11","name":"One Shot"},{"id":"12","name":"Psychological"},{"id":"13","name":"Romance"},{"id":"14","name":"School Life"},{"id":"15","name":"Sci-fi"},{"id":"16","name":"Seinen"},{"id":"17","name":"Shoujo"},{"id":"18","name":"Shoujo Ai"},{"id":"19","name":"Shounen"},{"id":"20","name":"Shounen Ai"},{"id":"21","name":"Slice of Life"},{"id":"22","name":"Sports"},{"id":"23","name":"Supernatural"},{"id":"24","name":"Tragedy"},{"id":"25","name":"Yaoi"},{"id":"26","name":"Yuri"},{"id":"27","name":"Comics"},{"id":"28","name":"Autre"}],"tags":"null"}""" +private const val MMRSOURCE_9 = """{"language":"id","name":"Komikid","base_url":"https://www.komikid.com","supports_latest":true,"isNsfw":false,"item_url":"https://www.komikid.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Fantasy"},{"id":"7","name":"Gender Bender"},{"id":"8","name":"Historical"},{"id":"9","name":"Horror"},{"id":"10","name":"Josei"},{"id":"11","name":"Martial Arts"},{"id":"12","name":"Mature"},{"id":"13","name":"Mecha"},{"id":"14","name":"Mystery"},{"id":"15","name":"One Shot"},{"id":"16","name":"Psychological"},{"id":"17","name":"Romance"},{"id":"18","name":"School Life"},{"id":"19","name":"Sci-fi"},{"id":"20","name":"Seinen"},{"id":"21","name":"Shoujo"},{"id":"22","name":"Shoujo Ai"},{"id":"23","name":"Shounen"},{"id":"24","name":"Shounen Ai"},{"id":"25","name":"Slice of Life"},{"id":"26","name":"Sports"},{"id":"27","name":"Supernatural"},{"id":"28","name":"Tragedy"},{"id":"29","name":"Yaoi"},{"id":"30","name":"Yuri"}],"tags":"null"}""" +private const val MMRSOURCE_10 = """{"language":"pl","name":"ToraScans","base_url":"http://torascans.pl","supports_latest":true,"isNsfw":false,"item_url":"http://torascans.pl/manga/","categories":[{"id":"1","name":"Akcja"},{"id":"2","name":"Przygodowe"},{"id":"3","name":"Komedia"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Dramat"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Zamiana płci"},{"id":"9","name":"Harem"},{"id":"10","name":"Historyczne"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Sztuki walki"},{"id":"14","name":"Dla dorosłych"},{"id":"15","name":"Mecha"},{"id":"16","name":"Tajemnica"},{"id":"17","name":"Psychologiczne"},{"id":"18","name":"Romans"},{"id":"19","name":"Szkolne życie"},{"id":"20","name":"S-F"},{"id":"21","name":"Seinen"},{"id":"22","name":"Shoujo"},{"id":"23","name":"Shoujo Ai"},{"id":"24","name":"Shounen"},{"id":"25","name":"Shounen Ai"},{"id":"26","name":"Okruchy życia"},{"id":"27","name":"Sportowe"},{"id":"28","name":"Supermoce"},{"id":"29","name":"Tragedia"},{"id":"30","name":"Yaoi"},{"id":"31","name":"Yuri"},{"id":"32","name":"Smut"},{"id":"33","name":"Isekai"}],"tags":[{"id":"akcja","name":"Akcja"},{"id":"doujinshi","name":"Doujinshi"},{"id":"dramat","name":"Dramat"},{"id":"fantasy","name":"Fantasy"},{"id":"harem","name":"Harem"},{"id":"historyczne","name":"Historyczne"},{"id":"horror","name":"Horror"},{"id":"isekai","name":"Isekai"},{"id":"josei","name":"Josei"},{"id":"komedia","name":"Komedia"},{"id":"okruchy-zycia","name":"Okruchy życia"},{"id":"przygodowe","name":"Przygodowe"},{"id":"psychologiczne","name":"Psychologiczne"},{"id":"romans","name":"Romans"},{"id":"s-f","name":"S-F"},{"id":"seinen","name":"Seinen"},{"id":"shoujo-ai","name":"Shoujo Ai"},{"id":"shoujou","name":"Shoujou"},{"id":"shounen","name":"Shounen"},{"id":"smut","name":"Smut"},{"id":"sportowe","name":"Sportowe"},{"id":"supermoce","name":"Supermoce"},{"id":"szkolne-zycie","name":"Szkolne życie"},{"id":"sztuki-walki","name":"Sztuki walki"},{"id":"tajemnica","name":"Tajemnica"},{"id":"tragedia","name":"Tragedia"},{"id":"yaoi","name":"Yaoi"},{"id":"yuri","name":"Yuri"},{"id":"zamiana-pci","name":"Zamiana płci"}]}""" +private const val MMRSOURCE_11 = """{"language":"pt-BR","name":"Comic Space","base_url":"https://www.comicspace.com.br","supports_latest":false,"isNsfw":false,"item_url":"https://acomic.space/manga/","categories":[],"tags":"null"}""" +private const val MMRSOURCE_12 = """{"language":"pt-BR","name":"Mangás Yuri","base_url":"https://mangasyuri.net","supports_latest":true,"isNsfw":false,"item_url":"https://mangasyuri.net/manga/","categories":[{"id":"1","name":"Ação"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comédia"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasia"},{"id":"8","name":"Gênero Trocado"},{"id":"9","name":"Harém"},{"id":"10","name":"Histórico"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Artes Marciais"},{"id":"14","name":"Maduro"},{"id":"15","name":"Robô"},{"id":"16","name":"Mistério"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psicológico"},{"id":"19","name":"Romance"},{"id":"20","name":"Vida Escolar"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Cotidiano"},{"id":"26","name":"Esportes"},{"id":"27","name":"Sobrenatural"},{"id":"28","name":"Tragédia"},{"id":"29","name":"Yuri"},{"id":"30","name":"Adulto"},{"id":"31","name":"Shounen"}],"tags":"null"}""" +private const val MMRSOURCE_13 = """{"language":"pl","name":"Dracaena","base_url":"https://dracaena.webd.pl/czytnik","supports_latest":true,"isNsfw":false,"item_url":"https://dracaena.webd.pl/czytnik/manga/","categories":[{"id":"1","name":"Dramat"},{"id":"2","name":"Fantasy"},{"id":"3","name":"Historyczny"},{"id":"4","name":"Komedia"},{"id":"5","name":"Okruchy Życia"},{"id":"6","name":"Romans"},{"id":"7","name":"Shoujo"},{"id":"8","name":"Shounen-ai"},{"id":"9","name":"Sport"},{"id":"10","name":"Tragedia"},{"id":"11","name":"Yaoi"},{"id":"12","name":"Szkolne Życie"},{"id":"13","name":"Nadprzyrodzone moce"},{"id":"14","name":"Psychologiczne"},{"id":"15","name":"Science Fiction"},{"id":"16","name":"Josei"},{"id":"17","name":"Akcja"}],"tags":"null"}""" +private const val MMRSOURCE_14 = """{"language":"pl","name":"Nikushima","base_url":"http://azbivo.webd.pro","supports_latest":true,"isNsfw":false,"item_url":"http://azbivo.webd.pro/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shounen"},{"id":"25","name":"Slice of Life"},{"id":"26","name":"Sports"},{"id":"27","name":"Supernatural"},{"id":"28","name":"Tragedy"},{"id":"29","name":"Isekai"}],"tags":"null"}""" +private const val MMRSOURCE_15 = """{"language":"tr","name":"MangaHanta","base_url":"http://mangahanta.com","supports_latest":true,"isNsfw":false,"item_url":"http://mangahanta.com/manga/","categories":[{"id":"1","name":"Aksiyon"},{"id":"2","name":"Macera"},{"id":"3","name":"Komedi"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantezi"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Tarihi"},{"id":"11","name":"Korku"},{"id":"12","name":"Josei"},{"id":"13","name":"Dövüş Sanatları"},{"id":"14","name":"Yetişkin"},{"id":"15","name":"Mecha"},{"id":"16","name":"Gizem"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psikolojik"},{"id":"19","name":"Romantizm"},{"id":"20","name":"Okul Hayatı"},{"id":"21","name":"Bilim-Kurgu"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Hayattan Bir Parça"},{"id":"28","name":"Spor"},{"id":"29","name":"Doğaüstü"},{"id":"30","name":"Trajedi"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"Vampir"},{"id":"34","name":"Webtoon"}],"tags":[{"id":"tag","name":"-ヒトガタナ-"},{"id":"amber","name":"Amber"},{"id":"amber-manga","name":"Amber manga"},{"id":"amber-oku","name":"Amber oku"},{"id":"amber-turkce-oku","name":"Amber Türkçe Oku"},{"id":"amber-yuno","name":"Amber Yuno"},{"id":"back-stage","name":"Back Stage"},{"id":"ballroom-e-youkoso","name":"Ballroom e Youkoso"},{"id":"beauty-game","name":"Beauty Game"},{"id":"beauty-game-oku","name":"Beauty Game Oku"},{"id":"boku-wa-mari-no-naka","name":"Boku Wa Mari No Naka"},{"id":"god-eater-kyuuseishu-no-kikan","name":"God Eater - Kyuuseishu no Kikan"},{"id":"god-eater-the-spiral-fate","name":"God Eater - The Spiral Fate"},{"id":"happiness","name":"Happiness"},{"id":"happiness-manga-oku","name":"happiness manga oku"},{"id":"happiness-turkce-oku","name":"happiness türkçe oku"},{"id":"hitogatana","name":"Hitogatana"},{"id":"im-in-mari-im-inside-mari","name":"ぼくは麻理のなか I\u0027m in Mari I\u0027m Inside Mari"},{"id":"itsuwaribito-utsuho","name":"Itsuwaribito Utsuho"},{"id":"kaguya-sama-wa-kokurasetai","name":"Kaguya-sama wa Kokurasetai"},{"id":"les-memoires-de-vanitas","name":"Les Mémoires de Vanitas"},{"id":"mahouka-koukou-no-rettousei-tsuioku-hen","name":"Mahouka Koukou no Rettousei - Tsuioku Hen"},{"id":"manga-oku","name":"manga oku"},{"id":"maou-na-ore-to-fushihime-no-yubiwa","name":"Maou na Ore to Fushihime no Yubiwa"},{"id":"may-i-shake-your-hand","name":"May I shake your hand"},{"id":"may-i-shake-your-hand-oku","name":"may I shake your hand oku"},{"id":"may-i-shake-your-hand-turkce-oku","name":"May I Shake Your Hand türkçe oku"},{"id":"memoir-of-vanitas","name":"Memoir of Vanitas"},{"id":"mutluluk","name":"Mutluluk"},{"id":"nanatsu-no-taizai","name":"Nanatsu No Taizai"},{"id":"nanatsu-no-taizai-turkce-oku","name":"Nanatsu no taizai Türkçe oku"},{"id":"oshimi-shuzo","name":"OSHIMI Shuzo"},{"id":"sousei-manga-oku","name":"sousei manga oku"},{"id":"sousei-no-onmyouji","name":"Sousei no Onmyouji"},{"id":"sousei-no-onmyouji-manga-oku","name":"Sousei no onmyouji manga oku"},{"id":"sousei-no-onmyouji-turkce-oku","name":"sousei no onmyouji türkçe oku"},{"id":"the-case-study-of-vanitas","name":"The Case Study of Vanitas"},{"id":"the-seven-deadly-sins","name":"The Seven Deadly Sins"},{"id":"vanitas-no-carte","name":"Vanitas no Carte"},{"id":"vanitas-no-shuki","name":"Vanitas no Shuki"},{"id":"yedi-olumcul-gunah","name":"Yedi Ölümcül Günah"}]}""" +private const val MMRSOURCE_16 = """{"language":"vi","name":"Fallen Angels Scans","base_url":"https://truyen.fascans.com","supports_latest":true,"isNsfw":false,"item_url":"https://truyen.fascans.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" +private const val MMRSOURCE_17 = """{"language":"es","name":"LeoManga","base_url":"https://leomanga.me","supports_latest":false,"isNsfw":false,"item_url":"https://leomanga.me/manga/","categories":[{"id":"1","name":"Accion"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comedia"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasia"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historico"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Artes Marciales"},{"id":"14","name":"Madura"},{"id":"15","name":"Mecha"},{"id":"16","name":"Misterio"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psicológico"},{"id":"19","name":"Romance"},{"id":"20","name":"Vida Cotidiana"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Supernatural"},{"id":"29","name":"Tragedia"},{"id":"30","name":"Yaoi"},{"id":"31","name":"Yuri"},{"id":"32","name":"Deporte"},{"id":"33","name":"Thriller"},{"id":"34","name":"Vida Escolar"},{"id":"35","name":"Boys Love"},{"id":"36","name":"Girls Love"},{"id":"37","name":"Gore"},{"id":"38","name":"Hentai"},{"id":"39","name":"Magia"},{"id":"40","name":"Manwha"},{"id":"41","name":"Policial"},{"id":"42","name":"Realidad Virtual"},{"id":"43","name":"Super Poderes"},{"id":"44","name":"Suspense"},{"id":"45","name":"Supervivencia"},{"id":"46","name":"Parodia"},{"id":"47","name":"Demonios"},{"id":"48","name":"Escolar"}],"tags":[{"id":"freaking-romance","name":"Freaking Romance"},{"id":"love-lucky","name":"Love Lucky"},{"id":"lust-awakening","name":"Lust Awakening"},{"id":"despertar-de-la-lujuria","name":"Despertar de la lujuria"},{"id":"inazumaelevenaresnotenbin","name":"inazumaelevenaresnotenbin"},{"id":"heir-of-the-penguins","name":"Heir of the Penguins"},{"id":"amor","name":"amor"},{"id":"drama","name":"drama"},{"id":"mysteries","name":"mysteries"},{"id":"anal","name":"anal"},{"id":"bukkake","name":"bukkake"},{"id":"doble-penetracion","name":"doble penetracion"},{"id":"orgia","name":"orgia"},{"id":"blow-job","name":"blow job"},{"id":"big-breasts","name":"big breasts"},{"id":"incesto","name":"incesto"},{"id":"milf","name":"milf"},{"id":"prenadas","name":"preñadas"},{"id":"slave-sex","name":"slave sex"},{"id":"lolicon","name":"lolicon"},{"id":"nurse","name":"nurse"},{"id":"reality","name":"Reality"},{"id":"glitch","name":"Glitch"},{"id":"glitcher","name":"Glitcher"},{"id":"horror","name":"Horror"},{"id":"suspenso","name":"Suspenso"},{"id":"realidad","name":"Realidad"},{"id":"slider","name":"Slider"},{"id":"novela","name":"Novela"},{"id":"sobrenatural","name":"Sobrenatural"},{"id":"tragedia","name":"Tragedia"},{"id":"error","name":"Error"},{"id":"psicologico","name":"Psicologico"},{"id":"sufrimiento","name":"Sufrimiento"},{"id":"visual","name":"Visual"},{"id":"narrativo","name":"Narrativo"},{"id":"shotacon","name":"shotacon"},{"id":"paizuri","name":"paizuri"},{"id":"kemonomimi","name":"kemonomimi"},{"id":"mundo-paralelo","name":"mundo paralelo"},{"id":"coleccion-hentai","name":"coleccion hentai"},{"id":"adultos","name":"adultos"}]}""" +private const val MMRSOURCE_18 = """{"language":"es","name":"submanga","base_url":"https://submangas.net","supports_latest":false,"isNsfw":false,"item_url":"https://submangas.net/manga/","categories":[{"id":"1","name":"Accion"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comedia"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasia"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historico"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Artes Marciales"},{"id":"14","name":"Madura"},{"id":"15","name":"Mecha"},{"id":"16","name":"Misterio"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psicológico"},{"id":"19","name":"Romance"},{"id":"20","name":"Vida Cotidiana"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Supernatural"},{"id":"29","name":"Tragedia"},{"id":"30","name":"Yaoi"},{"id":"31","name":"Yuri"},{"id":"32","name":"Deporte"},{"id":"33","name":"Thriller"},{"id":"34","name":"Vida Escolar"},{"id":"35","name":"Boys Love"},{"id":"36","name":"Girls Love"},{"id":"37","name":"Gore"},{"id":"38","name":"Hentai"},{"id":"39","name":"Magia"},{"id":"40","name":"Manwha"},{"id":"41","name":"Policial"},{"id":"42","name":"Realidad Virtual"},{"id":"43","name":"Super Poderes"},{"id":"44","name":"Suspense"},{"id":"45","name":"Supervivencia"},{"id":"46","name":"Parodia"},{"id":"47","name":"Demonios"},{"id":"48","name":"Escolar"}],"tags":"null"}""" +private const val MMRSOURCE_19 = """{"language":"es","name":"Mangadoor","base_url":"https://mangadoor.com","supports_latest":true,"isNsfw":false,"item_url":"https://mangadoor.com/manga/","categories":[{"id":"1","name":"Acción"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comedia"},{"id":"4","name":"Drama"},{"id":"5","name":"Ecchi"},{"id":"6","name":"Fantasía"},{"id":"7","name":"Gender Bender"},{"id":"8","name":"Harem"},{"id":"9","name":"Histórico"},{"id":"10","name":"Horror"},{"id":"11","name":"Josei"},{"id":"12","name":"Artes Marciales"},{"id":"13","name":"Maduro"},{"id":"14","name":"Mecha"},{"id":"15","name":"Misterio"},{"id":"16","name":"One Shot"},{"id":"17","name":"Psicológico"},{"id":"18","name":"Romance"},{"id":"19","name":"Escolar"},{"id":"20","name":"Ciencia Ficción"},{"id":"21","name":"Seinen"},{"id":"22","name":"Shoujo"},{"id":"23","name":"Shoujo Ai"},{"id":"24","name":"Shounen"},{"id":"25","name":"Shounen Ai"},{"id":"26","name":"Recuentos de la vida"},{"id":"27","name":"Deportes"},{"id":"28","name":"Supernatural"},{"id":"29","name":"Tragedia"},{"id":"30","name":"Yaoi"},{"id":"31","name":"Yuri"},{"id":"32","name":"Demonios"},{"id":"33","name":"Juegos"},{"id":"34","name":"Policial"},{"id":"35","name":"Militar"},{"id":"36","name":"Thriller"},{"id":"37","name":"Autos"},{"id":"38","name":"Música"},{"id":"39","name":"Vampiros"},{"id":"40","name":"Magia"},{"id":"41","name":"Samurai"},{"id":"42","name":"Boys love"},{"id":"43","name":"Hentai"}],"tags":"null"}""" +private const val MMRSOURCE_20 = """{"language":"es","name":"Mangas.pw","base_url":"https://mangas.in","supports_latest":true,"isNsfw":false,"item_url":"https://mangas.in/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"Hentai"},{"id":"34","name":"Smut"}],"tags":"null"}""" +private const val MMRSOURCE_21 = """{"language":"es","name":"Tumangaonline.co","base_url":"http://tumangaonline.uno","supports_latest":true,"isNsfw":false,"item_url":"http://tumangaonline.life/manga/","categories":[{"id":"1","name":"Acción"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comedia"},{"id":"4","name":"Drama"},{"id":"5","name":"Ecchi"},{"id":"6","name":"Fantasía"},{"id":"7","name":"Gender Bender"},{"id":"8","name":"Harem"},{"id":"9","name":"Histórico"},{"id":"10","name":"Horror"},{"id":"11","name":"Josei"},{"id":"12","name":"Artes Marciales"},{"id":"13","name":"Maduro"},{"id":"14","name":"Mecha"},{"id":"15","name":"Misterio"},{"id":"16","name":"One Shot"},{"id":"17","name":"Psicológico"},{"id":"18","name":"Romance"},{"id":"19","name":"Escolar"},{"id":"20","name":"Ciencia Ficción"},{"id":"21","name":"Seinen"},{"id":"22","name":"Shoujo"},{"id":"23","name":"Shoujo Ai"},{"id":"24","name":"Shounen"},{"id":"25","name":"Shounen Ai"},{"id":"26","name":"Recuentos de la vida"},{"id":"27","name":"Deportes"},{"id":"28","name":"Supernatural"},{"id":"29","name":"Tragedia"},{"id":"30","name":"Yaoi"},{"id":"31","name":"Yuri"},{"id":"32","name":"Demonios"},{"id":"33","name":"Juegos"},{"id":"34","name":"Policial"},{"id":"35","name":"Militar"},{"id":"36","name":"Thriller"},{"id":"37","name":"Autos"},{"id":"38","name":"Música"},{"id":"39","name":"Vampiros"},{"id":"40","name":"Magia"},{"id":"41","name":"Samurai"},{"id":"42","name":"Boys love"}],"tags":"null"}""" +private const val MMRSOURCE_22 = """{"language":"bg","name":"Utsukushii","base_url":"https://manga.utsukushii-bg.com","supports_latest":true,"isNsfw":false,"item_url":"https://manga.utsukushii-bg.com/manga/","categories":[{"id":"1","name":"Екшън"},{"id":"2","name":"Приключенски"},{"id":"3","name":"Комедия"},{"id":"4","name":"Драма"},{"id":"5","name":"Фентъзи"},{"id":"6","name":"Исторически"},{"id":"7","name":"Ужаси"},{"id":"8","name":"Джосей"},{"id":"9","name":"Бойни изкуства"},{"id":"10","name":"Меха"},{"id":"11","name":"Мистерия"},{"id":"12","name":"Самостоятелна/Пилотна глава"},{"id":"13","name":"Психологически"},{"id":"14","name":"Романтика"},{"id":"15","name":"Училищни"},{"id":"16","name":"Научна фантастика"},{"id":"17","name":"Сейнен"},{"id":"18","name":"Шоджо"},{"id":"19","name":"Реализъм"},{"id":"20","name":"Спорт"},{"id":"21","name":"Свръхестествено"},{"id":"22","name":"Трагедия"},{"id":"23","name":"Йокаи"},{"id":"24","name":"Паралелна вселена"},{"id":"25","name":"Супер сили"},{"id":"26","name":"Пародия"},{"id":"27","name":"Шонен"}],"tags":"null"}""" +private const val MMRSOURCE_23 = """{"language":"es","name":"Universo Yuri","base_url":"https://universoyuri.com","supports_latest":true,"isNsfw":false,"item_url":"https://universoyuri.com/manga/","categories":[{"id":"1","name":"Acción"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comedia"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasía"},{"id":"8","name":"Harem"},{"id":"9","name":"Histórico"},{"id":"10","name":"Terror"},{"id":"11","name":"Mecha"},{"id":"12","name":"Misterio"},{"id":"13","name":"One Shot"},{"id":"14","name":"Psicológico"},{"id":"15","name":"Romance"},{"id":"16","name":"Escolar"},{"id":"17","name":"Ciencia ficción"},{"id":"18","name":"Vida cotidiana"},{"id":"19","name":"Deportes"},{"id":"20","name":"Sobrenatural"},{"id":"21","name":"Música"}],"tags":[{"id":"yuri","name":"yuri"},{"id":"sex-friends","name":"sex friends"},{"id":"webtoon","name":"Webtoon"},{"id":"adult-life","name":"Adult life"},{"id":"full-color","name":"Full color"},{"id":"classmate","name":"classmate"},{"id":"asesinos","name":"Asesinos"},{"id":"fantasia","name":"Fantasía"},{"id":"vida-escolar","name":"Vida escolar"},{"id":"incesto","name":"incesto"},{"id":"hentai","name":"hentai"},{"id":"precure-doujin","name":"PreCure Doujin"},{"id":"student-x-teacher","name":"Student x Teacher"},{"id":"romance","name":"romance"},{"id":"drama","name":"drama"},{"id":"comedia","name":"comedia"},{"id":"bang-dream","name":"BanG Dream!"},{"id":"kokoro-x-misaki","name":"Kokoro x Misaki"},{"id":"nsfw","name":"NSFW"},{"id":"fantasmas","name":"fantasmas"},{"id":"gl","name":"gl"},{"id":"doujinshi","name":"Doujinshi"},{"id":"hot","name":"hot"},{"id":"all-girls-school","name":"All-Girls School"},{"id":"military-academy","name":"Military Academy"},{"id":"rainy-devil-scans","name":"Rainy Devil Scans"},{"id":"bondage","name":"Bondage"},{"id":"yuri-hime","name":"Yuri Hime"},{"id":"one-shot","name":"one shot"},{"id":"5k-scanlation","name":"5K Scanlation"},{"id":"watashitachi-no-yuri","name":"WatashiTachi No Yuri"},{"id":"politica","name":"política"},{"id":"comida","name":"comida"},{"id":"cyborg","name":"cyborg"},{"id":"rai","name":"RAI"},{"id":"violencia-familiar","name":"violencia familiar"},{"id":"selene-yuri-projects","name":"Selene Yuri Projects"}]}""" +private const val MMRSOURCE_24 = """{"language":"pl","name":"Phoenix-Scans","base_url":"https://phoenix-scans.pl","supports_latest":true,"isNsfw":false,"item_url":"https://phoenix-scans.pl/manga/","categories":[{"id":"1","name":"Shounen"},{"id":"2","name":"Tragedia"},{"id":"3","name":"Szkolne życie"},{"id":"4","name":"Romans"},{"id":"5","name":"Zagadka"},{"id":"6","name":"Horror"},{"id":"7","name":"Dojrzałe"},{"id":"8","name":"Psychologiczne"},{"id":"9","name":"Przygodowe"},{"id":"10","name":"Akcja"},{"id":"11","name":"Komedia"},{"id":"12","name":"Zboczone"},{"id":"13","name":"Fantasy"},{"id":"14","name":"Harem"},{"id":"15","name":"Historyczne"},{"id":"16","name":"Manhua"},{"id":"17","name":"Manhwa"},{"id":"18","name":"Sztuki walki"},{"id":"19","name":"One shot"},{"id":"20","name":"Sci fi"},{"id":"21","name":"Seinen"},{"id":"22","name":"Shounen ai"},{"id":"23","name":"Spokojne życie"},{"id":"24","name":"Sport"},{"id":"25","name":"Nadprzyrodzone"},{"id":"26","name":"Webtoons"},{"id":"27","name":"Dramat"},{"id":"28","name":"Hentai"},{"id":"29","name":"Mecha"},{"id":"30","name":"Gender Bender"},{"id":"31","name":"Gry"},{"id":"32","name":"Yaoi"}],"tags":[{"id":"aktywne","name":"aktywne"},{"id":"zakonczone","name":"zakończone"},{"id":"porzucone","name":"porzucone"}]}""" +private const val MMRSOURCE_25 = """{"language":"ru","name":"Japit Comics","base_url":"https://j-comics.ru","supports_latest":true,"isNsfw":false,"item_url":"https://j-comics.ru/manga/","categories":[{"id":"1","name":"Боевик"},{"id":"2","name":"Приключения"},{"id":"3","name":"Комедия"},{"id":"4","name":"Додзинси"},{"id":"5","name":"Драма"},{"id":"6","name":"Этти"},{"id":"7","name":"Фэнтези"},{"id":"8","name":"Гендерная интрига"},{"id":"9","name":"Гарем"},{"id":"10","name":"История"},{"id":"11","name":"Ужасы"},{"id":"12","name":"Дзёсэй"},{"id":"13","name":"Боевые искусства"},{"id":"14","name":"Эротика"},{"id":"15","name":"Меха"},{"id":"16","name":"Мистика"},{"id":"17","name":"Ваншот"},{"id":"18","name":"Психология"},{"id":"19","name":"Романтика"},{"id":"20","name":"Школа"},{"id":"21","name":"Научная фантастика"},{"id":"22","name":"Сэйнэн"},{"id":"23","name":"Сёдзё"},{"id":"24","name":"Сёдзё-ай"},{"id":"25","name":"Сёнэн"},{"id":"26","name":"Сёнэн-ай"},{"id":"27","name":"Повседневность"},{"id":"28","name":"Спорт"},{"id":"29","name":"Сверхъест."},{"id":"30","name":"Трагедия"},{"id":"31","name":"Яой"},{"id":"32","name":"Юри"}],"tags":"null"}""" +private const val MMRSOURCE_26 = """{"language":"tr","name":"Puzzmos","base_url":"https://puzzmos.com","supports_latest":true,"isNsfw":false,"item_url":"https://puzzmos.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" +private const val MMRSOURCE_27 = """{"language":"fr","name":"Scan-1","base_url":"https://wwv.scan-1.com","supports_latest":true,"isNsfw":false,"item_url":"https://wwv.scan-1.com/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" +private const val MMRSOURCE_28 = """{"language":"fr","name":"Lelscan-VF","base_url":"https://www.lelscan-vf.com","supports_latest":true,"isNsfw":false,"item_url":"https://www.lelscan-vf.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" +private const val MMRSOURCE_29 = """{"language":"id","name":"MangaSusu","base_url":"https://www.mangasusu.site","supports_latest":true,"isNsfw":false,"item_url":"https://www.mangasusu.website/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"Adult"},{"id":"34","name":"Isekai"},{"id":"35","name":"Webtoons"}],"tags":"null"}""" +private const val MMRSOURCE_30 = """{"language":"id","name":"Komik Manga","base_url":"https://adm.komikmanga.com","supports_latest":true,"isNsfw":false,"item_url":"https://adm.komikmanga.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"Adult"},{"id":"34","name":"Isekai"}],"tags":"null"}""" +private const val MMRSOURCE_31 = """{"language":"ko","name":"Mangazuki Raws","base_url":"https://raws.mangazuki.co","supports_latest":false,"isNsfw":false,"item_url":"\u003c!doctype html\u003e\n\u003chtml lang\u003d\"en-US\"\u003e\n \u003chead\u003e \n \u003cmeta charset\u003d\"UTF-8\"\u003e \n \u003cmeta http-equiv\u003d\"Content-Type\" content\u003d\"text/html; charset\u003dUTF-8\"\u003e \n \u003cmeta http-equiv\u003d\"X-UA-Compatible\" content\u003d\"IE\u003dEdge,chrome\u003d1\"\u003e \n \u003cmeta name\u003d\"robots\" content\u003d\"noindex, nofollow\"\u003e \n \u003cmeta name\u003d\"viewport\" content\u003d\"width\u003ddevice-width,initial-scale\u003d1\"\u003e \n \u003cmeta http-equiv\u003d\"refresh\" content\u003d\"12\"\u003e \n \u003ctitle\u003eJust a moment...\u003c/title\u003e \n \u003cstyle type\u003d\"text/css\"\u003e\n html, body {width: 100%; height: 100%; margin: 0; padding: 0;}\n body {background-color: #ffffff; color: #000000; font-family:-apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, \"Helvetica Neue\",Arial, sans-serif; font-size: 16px; line-height: 1.7em;-webkit-font-smoothing: antialiased;}\n h1 { text-align: center; font-weight:700; margin: 16px 0; font-size: 32px; color:#000000; line-height: 1.25;}\n p {font-size: 20px; font-weight: 400; margin: 8px 0;}\n p, .attribution, {text-align: center;}\n #spinner {margin: 0 auto 30px auto; display: block;}\n .attribution {margin-top: 32px;}\n @keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }\n @-webkit-keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }\n #cf-bubbles \u003e .bubbles { animation: fader 1.6s infinite;}\n #cf-bubbles \u003e .bubbles:nth-child(2) { animation-delay: .2s;}\n #cf-bubbles \u003e .bubbles:nth-child(3) { animation-delay: .4s;}\n .bubbles { background-color: #f58220; width:20px; height: 20px; margin:2px; border-radius:100%; display:inline-block; }\n a { color: #2c7cb0; text-decoration: none; -moz-transition: color 0.15s ease; -o-transition: color 0.15s ease; -webkit-transition: color 0.15s ease; transition: color 0.15s ease; }\n a:hover{color: #f4a15d}\n .attribution{font-size: 16px; line-height: 1.5;}\n .ray_id{display: block; margin-top: 8px;}\n #cf-wrapper #challenge-form { padding-top:25px; padding-bottom:25px; }\n #cf-hcaptcha-container { text-align:center;}\n #cf-hcaptcha-container iframe { display: inline-block;}\n \u003c/style\u003e \n \u003cscript type\u003d\"text/javascript\"\u003e\n //\u003c![CDATA[\n (function(){\n \n window._cf_chl_opt\u003d{\n cvId: \"1\",\n cType: \"non-interactive\",\n cNounce: \"27239\",\n cRay: \"5c1800814cf6128b\",\n cHash: \"c411cf04201d9c9\",\n cRq: {\n d: \"tfCeGdJELn0yKs0VBFJNhlTTLqqlwdDi/LI9+e6kCAyWo7poyFvIHxZrpSwZaQy4A3W6+5VMuXfWbQn+W4nVPNlQplZBcimYKwuoYGaexHR2XFLUnEMexXUzFtDF8STseQhR3p3cJeyvf/tIOPMfYP1x6g/ncjQKjE1jlPhzC0hly456q7l/W65QBu2z3ejdN2HVC35iLCp26g6tN37CdD1SxUHWR2QQAQtROio5HlBGuzemZUvs+t4cDLoIKszCx7EywWz67bK6tBfkXs9DqihYuxn+lz8nlmanowUhqh74QZHgnR0DnxHc9Vz+jyy+deICRmJ69LlkovvV9+CSmIDdcO8yCg0FTGGhOxRv8p+GQ8YzGqPL9u2rNXaIYwYrvJg5HvGkRZKjaB0iXR7UlQ\u003d\u003d\",\n t: \"MTU5NzIxMjI5OC40NDYwMDA\u003d\",\n m: \"qGGMUblH5dPPkfhglinHPZo36wmcKr8VJrPDeX5D9cY\u003d\",\n i1: \"XIr5BZkkrFfzwnLm6Qnt4g\u003d\u003d\",\n i2: \"9XjHxyhaUzV7mZpeGm350Q\u003d\u003d\",\n }\n }\n window._cf_chl_enter \u003d function(){window._cf_chl_opt.p\u003d1};\n \n var a \u003d function() {try{return !!window.addEventListener} catch(e) {return !1} },\n b \u003d function(b, c) {a() ? document.addEventListener(\"DOMContentLoaded\", b, c) : document.attachEvent(\"onreadystatechange\", b)};\n b(function(){\n var cookiesEnabled\u003d(navigator.cookieEnabled)? true : false;\n var cookieSupportInfix\u003dcookiesEnabled?\u0027/nocookie\u0027:\u0027/cookie\u0027;\n var a \u003d document.getElementById(\u0027cf-content\u0027);a.style.display \u003d \u0027block\u0027;\n var isIE \u003d /(MSIE|Trident\\/|Edge\\/)/i.test(window.navigator.userAgent);\n var trkjs \u003d isIE ? new Image() : document.createElement(\u0027img\u0027);\n trkjs.setAttribute(\"src\", \"/cdn-cgi/images/trace/jschal/js\"+cookieSupportInfix+\"/transparent.gif?ray\u003d5c1800814cf6128b\");\n trkjs.id \u003d \"trk_jschal_js\";\n trkjs.setAttribute(\"alt\", \"\");\n document.body.appendChild(trkjs);\n \n document.body.appendChild(trkjs);\n var cpo \u003d document.createElement(\u0027script\u0027);\n cpo.type \u003d \u0027text/javascript\u0027;\n cpo.src \u003d \"/cdn-cgi/challenge-platform/orchestrate/jsch/v1\";\n var done \u003d false;\n cpo.onload \u003d cpo.onreadystatechange \u003d function() {\n if (!done \u0026\u0026 (!this.readyState || this.readyState \u003d\u003d\u003d \"loaded\" || this.readyState \u003d\u003d\u003d \"complete\")) {\n done \u003d true;\n cpo.onload \u003d cpo.onreadystatechange \u003d null;\n window._cf_chl_enter()\n }\n };\n document.getElementsByTagName(\u0027head\u0027)[0].appendChild(cpo);\n \n }, false);\n })();\n //]]\u003e\n\u003c/script\u003e \n \u003c/head\u003e \n \u003cbody\u003e \n \u003ctable width\u003d\"100%\" height\u003d\"100%\" cellpadding\u003d\"20\"\u003e \n \u003ctbody\u003e\n \u003ctr\u003e \n \u003ctd align\u003d\"center\" valign\u003d\"middle\"\u003e \n \u003cdiv class\u003d\"cf-browser-verification cf-im-under-attack\"\u003e \n \u003cnoscript\u003e \n \u003ch1 data-translate\u003d\"turn_on_js\" style\u003d\"color:#bd2426;\"\u003ePlease turn JavaScript on and reload the page.\u003c/h1\u003e \n \u003c/noscript\u003e \n \u003cdiv id\u003d\"cf-content\" style\u003d\"display:none\"\u003e \n \u003cdiv id\u003d\"cf-bubbles\"\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003c/div\u003e \n \u003ch1\u003e\u003cspan data-translate\u003d\"checking_browser\"\u003eChecking your browser before accessing\u003c/span\u003e mangazuki.co.\u003c/h1\u003e \n \u003cdiv id\u003d\"no-cookie-warning\" data-translate\u003d\"turn_on_cookies\" style\u003d\"display:none\"\u003e \n \u003cp data-translate\u003d\"turn_on_cookies\" style\u003d\"color:#bd2426;\"\u003ePlease enable Cookies and reload the page.\u003c/p\u003e \n \u003c/div\u003e \n \u003cp data-translate\u003d\"process_is_automatic\"\u003eThis process is automatic. Your browser will redirect to your requested content shortly.\u003c/p\u003e \n \u003cp data-translate\u003d\"allow_5_secs\"\u003ePlease allow up to 5 seconds…\u003c/p\u003e \n \u003c/div\u003e \n \u003cform class\u003d\"challenge-form\" id\u003d\"challenge-form\" action\u003d\"/?__cf_chl_jschl_tk__\u003d8493703d40fb3f5a82dafbaa2540f31b54988364-1597212298-0-AVaDPUlhsdbcHA9d9Dls1cF7TSXNjAyEBlQqlNhnl3JCGA7podB3DCfZje5V0SwXeJl8srvwHZASEUuBjNR8Bvz_Y57yzkqIpSSecL-BwpF04YJxE1WzQu_7mGanqmIp_9t0dul91dWTyUiHgJrXiDYcJV4UsCibMq46TVDWFsJOky5vjmRTOj24eKrA0s5pC4j6UFxpwH90N_LUD09_N9BF62PJexCaJLqVMpZr8s9uFK3YFGb9Kg2Qirc_20v9u_yZ1JN6Fy1dxVLVmvw_qWk\" method\u003d\"POST\" enctype\u003d\"application/x-www-form-urlencoded\"\u003e \n \u003cinput type\u003d\"hidden\" name\u003d\"r\" value\u003d\"406b0aca607d9f0c0af8cd6e1b3c9c5cfecaa93c-1597212298-0-AQoUerp0okyFGFQo6HIALHsuifwMUcc6Yh90Tu4T7uo+FCybbeGjFlYDTe/AX3iXgKFkJbjJ0TMIijJf4pHjRaPcoDE1WThpdlng0D7176qgRW5B6dAtj/alruTp2sH7yQzFsRp4Uf86XqEop3JpZ1uNmjOZpQBg/EWJfOC+M3WO06JlQBCj01qhWR6JESPvwST778T8T9f2kF7yoZc/naWuKLmBE8uXphcpjViyxV7/4PdH7iQV5Z5cb7uoWcIYNxVA8SsEhrKqiLdwJNLRSrvNzaBWoQ4Vb3BjNdHhw4WFRmGIfb/BtmpyL1CT1ZjPJE1R6+mcnFlqmE4lPWTXQXrP3nQ72+jaii+B8sBMGY5YATsrjK9adbkT5A46s0yceuhN2WnehNIc4mhwh0VY+g8RLF3qJMjX7jmBJm2TJgF4YI19+sCPAxQLLVMUUsB8+PEukPde+tHAHnzo9HsCzZFPrEllteyt1t5P23ytSm7Gal2+dYYV+eYi/3zGQQ9QhMEWzBJSWVSXhrIXygElP80efRiDifnmDASap+nK+NFxgtLIbagXhSR04X8xuWWcYGHBu43Hhi/uXefyLUFd0kFDSOaFAhk3TSURrUdrvZVcOmX1YpAk5U5dHOB+ZfPqk5gFswqGtxWxxTNz8bEIiLOmmwHWxKhJnVcVHF204vsL/mFL1cE2e+T6k9mLCOJOmKe9tKo3h7WEmZUOL4KACtr9ZoXHZH4Uwe7rPZQBlhCGl2gRuXM9PucczYYzY3SqOWTaS1ANaeqZLN1xrjVhl2c6AXCwYoGBTOymLaCtsL47kUG/IPnt/gMfLmR2MijKtvfBGlmoWYcjDy3tqYMNnRb0qgNL52gcD55wfD6kRzSPveC065xIaEgx0ghGq7Cn62vwyUwvtylWyXg9JaGDP1tbSqa/R/w/CLUfWm/0zN9rD1jnoy4iuwToqnALRGr0URPGYml+ImyZ0j0u7EiQEXvfVeIN+EbqKpAdEuLmIvQ961z80f/QfdLurlLbV4+hiwdp76jlzlhXuuHHvHKapnxMsSJUtcpjwyi8xGDyxMspZzRsKqLXFBPHot93wXfLjlBsDgYFZQkgoImhFgMT+aJQemvoFchBMK3lOcuhejR+0EuDTdXrEVPIaqWe/KygaXA/9tmTPNCv5/YYcn5vMI1XKRaYtYqFeep1dsTUUcPe\"\u003e \n \u003cinput type\u003d\"hidden\" value\u003d\"28ef62815e3d5eb1c2340da0b42783f9\" id\u003d\"jschl-vc\" name\u003d\"jschl_vc\"\u003e \n \u003c!-- \u003cinput type\u003d\"hidden\" value\u003d\"\" id\u003d\"jschl-vc\" name\u003d\"jschl_vc\"/\u003e --\u003e \n \u003cinput type\u003d\"hidden\" name\u003d\"pass\" value\u003d\"1597212302.446-TGSyJwjFnv\"\u003e \n \u003cinput type\u003d\"hidden\" id\u003d\"jschl-answer\" name\u003d\"jschl_answer\"\u003e \n \u003c/form\u003e \n \u003cdiv id\u003d\"trk_jschal_nojs\" style\u003d\"background-image:url(\u0027/cdn-cgi/images/trace/jschal/nojs/transparent.gif?ray\u003d5c1800814cf6128b\u0027)\"\u003e \n \u003c/div\u003e \n \u003c/div\u003e \n \u003cdiv class\u003d\"attribution\"\u003e\n DDoS protection by \n \u003ca href\u003d\"https://www.cloudflare.com/5xx-error-landing?utm_source\u003diuam\" target\u003d\"_blank\"\u003eCloudflare\u003c/a\u003e \n \u003cbr\u003e \n \u003cspan class\u003d\"ray_id\"\u003eRay ID: \u003ccode\u003e5c1800814cf6128b\u003c/code\u003e\u003c/span\u003e \n \u003c/div\u003e \u003c/td\u003e \n \u003c/tr\u003e \n \u003c/tbody\u003e\n \u003c/table\u003e \n \u003c/body\u003e\n\u003c/html\u003e/","categories":[],"tags":"null"}""" +private const val MMRSOURCE_32 = """{"language":"pt-BR","name":"Remangas","base_url":"https://remangas.top","supports_latest":true,"isNsfw":false,"item_url":"https://remangas.top/manga/","categories":[{"id":"1","name":"Ação"},{"id":"2","name":"Aventura"},{"id":"3","name":"Comédia"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasia"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Histórico"},{"id":"11","name":"Terror"},{"id":"12","name":"Josei"},{"id":"13","name":"Artes Marciais"},{"id":"14","name":"Adulto"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mistério"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psicológico"},{"id":"19","name":"Romance"},{"id":"20","name":"Vida escolar"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Esporte"},{"id":"29","name":"Sobrenatural"},{"id":"30","name":"Tragédia"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"Isekai"},{"id":"34","name":"Guerra"},{"id":"35","name":"Sobrevivência"},{"id":"36","name":"Romance?"}],"tags":[{"id":"seinen","name":"seinen"},{"id":"ecchi","name":"ecchi"},{"id":"harem","name":"harem"},{"id":"isekai","name":"isekai"},{"id":"guerra","name":"guerra"},{"id":"shounen","name":"shounen"},{"id":"18","name":"+18"},{"id":"adulto","name":"Adulto"},{"id":"fantasia","name":"Fantasia"},{"id":"romance","name":"Romance"},{"id":"vida-escolar","name":"Vida Escolar"},{"id":"acao","name":"Ação"},{"id":"misterio","name":"mistério"},{"id":"terror","name":"Terror"},{"id":"detetive","name":"Detetive"},{"id":"misterios","name":"Mistérios"},{"id":"incesto","name":"Incesto"},{"id":"comedia-romantica","name":"Comédia Romantica"},{"id":"alquimia","name":"Alquimia"},{"id":"manhua","name":"Manhua"},{"id":"colorido","name":"Colorido"},{"id":"antologia","name":"Antologia"},{"id":"dragoes","name":"Dragões"},{"id":"briga-de-rua","name":"Briga de Rua"},{"id":"anti-heroi","name":"Anti Herói"},{"id":"zoera","name":"Zoera"},{"id":"protagonista-overpower","name":"Protagonista Overpower"},{"id":"psicologico","name":"Psicológico"},{"id":"protagonista-badass","name":"Protagonista Badass"},{"id":"battleroyale","name":"Battleroyale"},{"id":"apocalispe-zumbi","name":"Apocalispe Zumbi"},{"id":"mc-nao-virjao","name":"Mc Não Virjão"},{"id":"escola-de-magia","name":"Escola de Magia"},{"id":"tensei","name":"Tensei"},{"id":"shota-badass","name":"Shota Badass"},{"id":"isekai-vai-e-volta","name":"Isekai Vai e Volta"},{"id":"gore","name":"gore"},{"id":"garota-monstro","name":"Garota Monstro"},{"id":"maid","name":"Maid"},{"id":"gal","name":"Gal"}]}""" +private const val MMRSOURCE_33 = """{"language":"pt-BR","name":"AnimaRegia","base_url":"https://animaregia.net","supports_latest":true,"isNsfw":false,"item_url":"https://animaregia.net/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" +private const val MMRSOURCE_34 = """{"language":"tr","name":"NoxSubs","base_url":"https://noxsubs.com","supports_latest":true,"isNsfw":false,"item_url":"https://noxsubs.com/manga/","categories":[{"id":"1","name":"Harem"},{"id":"2","name":"Mecha"},{"id":"3","name":"Seinen"},{"id":"4","name":"Shounen"},{"id":"5","name":"Slice of Life"},{"id":"6","name":"Trajedi"},{"id":"7","name":"Doğaüstü"},{"id":"8","name":"Spor"},{"id":"9","name":"Bilim-Kurgu"},{"id":"10","name":"Okul Hayatı"},{"id":"11","name":"Romantizm"},{"id":"12","name":"Dövüş Sanatları"},{"id":"13","name":"Psikolojik"},{"id":"14","name":"Gizem"},{"id":"15","name":"Korku"},{"id":"16","name":"Dram"},{"id":"17","name":"Aksiyon"},{"id":"18","name":"Komedi"},{"id":"19","name":"Macera"},{"id":"20","name":"Tek Atımlık"},{"id":"21","name":"Tarihi"},{"id":"22","name":"Fantezi"},{"id":"23","name":"Askeri"},{"id":"24","name":"Büyü"}],"tags":[{"id":"tag","name":"괴물아기"},{"id":"canavar-cocuk","name":"Canavar Çocuk"},{"id":"monster-child","name":"Monster Child"},{"id":"abyss-rage","name":"Abyss Rage"},{"id":"diamond-no-ace-act-ii","name":"Diamond no Ace Act II"},{"id":"diamond-no-ace","name":"Diamond no Ace"},{"id":"soloist-of-prison","name":"Soloist of Prison"},{"id":"reincarnation-no-kaben","name":"Reincarnation no Kaben"},{"id":"youjo-senki","name":"Youjo Senki"},{"id":"devil-of-rhine","name":"Devil of Rhine"},{"id":"saga-of-tanya-the-evil","name":"Saga of Tanya the Evil"},{"id":"rikudou","name":"Rikudou"},{"id":"rikudo","name":"Rikudo"},{"id":"mf-ghost","name":"MF Ghost"},{"id":"komi-san","name":"Komi-san"},{"id":"komi-san-wa-komyushou-desu","name":"Komi-san wa Komyushou Desu"},{"id":"die-dai","name":"Die Dai"},{"id":"pounding","name":"Pounding"},{"id":"panda","name":"Panda"},{"id":"agrikesici","name":"Ağrıkesici"},{"id":"intikam","name":"İntikam"},{"id":"onepiece","name":"#OnePiece"},{"id":"oneshot","name":"#OneShot"},{"id":"tanya","name":"#Tanya"},{"id":"senryuushoujo","name":"#SenryuuShoujo"},{"id":"gorgon","name":"#Gorgon"},{"id":"theblueland","name":"#TheBlueLand"},{"id":"reenkarnasyon","name":"Reenkarnasyon"},{"id":"onepieceacademy","name":"#OnePieceAcademy"},{"id":"ev-erkegi","name":"EV ERKEĞİ"},{"id":"onepieceboichi","name":"#OnePieceBoichi"},{"id":"warlord","name":"#Warlord"},{"id":"sheriffevans","name":"#SheriffEvans"},{"id":"goh","name":"#GOH"},{"id":"godofhighschool","name":"#GodofHighschool"},{"id":"serifevans","name":"#ŞerifEvans"},{"id":"shy","name":"#SHY"},{"id":"ponko","name":"#Ponko"}]}""" +private const val MMRSOURCE_35 = """{"language":"id","name":"MangaYu","base_url":"https://mangayu.com","supports_latest":true,"isNsfw":false,"item_url":"https://mangayu.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"Project"},{"id":"34","name":"Isekai"},{"id":"35","name":"Reincarnation"}],"tags":[{"id":"manga","name":"Manga"},{"id":"magic","name":"Magic"},{"id":"manhua","name":"Manhua"},{"id":"demons","name":"Demons"}]}""" +private const val MMRSOURCE_36 = """{"language":"tr","name":"MangaVadisi","base_url":"http://manga-v2.mangavadisi.org","supports_latest":true,"isNsfw":false,"item_url":"http://manga-v2.mangavadisi.org/manga/","categories":[{"id":"1","name":"Aksiyon"},{"id":"2","name":"Macera"},{"id":"3","name":"Komedi"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantastik"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Tarihi"},{"id":"11","name":"Korku"},{"id":"12","name":"Josei"},{"id":"13","name":"Dövüş Sanatları"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Gizem"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psikolojik"},{"id":"19","name":"Romantizm"},{"id":"20","name":"Okul Hayatı"},{"id":"21","name":"Bilim Kurgu"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Günlük Yaşam"},{"id":"28","name":"Spor"},{"id":"29","name":"Doğaüstü"},{"id":"30","name":"Trajedi"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":"null"}""" +private const val MMRSOURCE_37 = """{"language":"id","name":"MangaID","base_url":"https://mangaid.click","supports_latest":true,"isNsfw":false,"item_url":"https://mangaid.click/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"Psychological"},{"id":"18","name":"Romance"},{"id":"19","name":"School Life"},{"id":"20","name":"Sci-fi"},{"id":"21","name":"Seinen"},{"id":"22","name":"Shoujo"},{"id":"23","name":"Shoujo Ai"},{"id":"24","name":"Shounen"},{"id":"25","name":"Shounen Ai"},{"id":"26","name":"Slice of Life"},{"id":"27","name":"Sports"},{"id":"28","name":"Supernatural"},{"id":"29","name":"Tragedy"},{"id":"30","name":"Yaoi"},{"id":"31","name":"Yuri"},{"id":"32","name":"School"},{"id":"33","name":"Isekai"},{"id":"34","name":"Military"}],"tags":"null"}""" +private const val MMRSOURCE_38 = """{"language":"other","name":"HentaiShark","base_url":"https://www.hentaishark.com","supports_latest":true,"isNsfw":true,"item_url":"https://www.hentaishark.com/manga/","categories":[{"id":"1","name":"Doujinshi"},{"id":"2","name":"Manga"},{"id":"3","name":"Western"},{"id":"4","name":"non-h"},{"id":"5","name":"imageset"},{"id":"6","name":"artistcg"},{"id":"7","name":"misc"}],"tags":"null"}""" +val SOURCES: List get() = listOf(MMRSOURCE_1, MMRSOURCE_2, MMRSOURCE_3, MMRSOURCE_4, MMRSOURCE_5, MMRSOURCE_6, MMRSOURCE_7, MMRSOURCE_8, MMRSOURCE_9, MMRSOURCE_10, MMRSOURCE_11, MMRSOURCE_12, MMRSOURCE_13, MMRSOURCE_14, MMRSOURCE_15, MMRSOURCE_16, MMRSOURCE_17, MMRSOURCE_18, MMRSOURCE_19, MMRSOURCE_20, MMRSOURCE_21, MMRSOURCE_22, MMRSOURCE_23, MMRSOURCE_24, MMRSOURCE_25, MMRSOURCE_26, MMRSOURCE_27, MMRSOURCE_28, MMRSOURCE_29, MMRSOURCE_30, MMRSOURCE_31, MMRSOURCE_32, MMRSOURCE_33, MMRSOURCE_34, MMRSOURCE_35, MMRSOURCE_36, MMRSOURCE_37, MMRSOURCE_38) diff --git a/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/Generator.kt b/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/Generator.kt index 61580d041..a2d11cc8e 100644 --- a/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/Generator.kt +++ b/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/Generator.kt @@ -34,6 +34,8 @@ class Generator { preRunTotal = Regex("""MMRSOURCE_(\d+)""").findAll(File(relativePath).readText(Charsets.UTF_8)).last().groupValues[1] } + data class SourceData(val lang: String, val name: String, val baseUrl: String, val isNsfw: Boolean = false) + @TargetApi(Build.VERSION_CODES.O) fun generate() { val buffer = StringBuffer() @@ -45,21 +47,22 @@ class Generator { sources.forEach { try { val map = mutableMapOf() - map["language"] = it.first - map["name"] = it.second - map["base_url"] = it.third - map["supports_latest"] = supportsLatest(it.third) + map["language"] = it.lang + map["name"] = it.name + map["base_url"] = it.baseUrl + map["supports_latest"] = supportsLatest(it.baseUrl) + map["isNsfw"] = it.isNsfw - val advancedSearchDocument = getDocument("${it.third}/advanced-search", false) + val advancedSearchDocument = getDocument("${it.baseUrl}/advanced-search", false) var parseCategories = mutableListOf>() if (advancedSearchDocument != null) { parseCategories = parseCategories(advancedSearchDocument) } - val homePageDocument = getDocument(it.third) + val homePageDocument = getDocument(it.baseUrl) - val itemUrl = getItemUrl(homePageDocument, it.third) + val itemUrl = getItemUrl(homePageDocument, it.baseUrl) var prefix = itemUrl.substringAfterLast("/").substringBeforeLast("/") @@ -69,7 +72,7 @@ class Generator { prefix = "manga" } - val mangaListDocument = getDocument("${it.third}/$prefix-list")!! + val mangaListDocument = getDocument("${it.baseUrl}/$prefix-list")!! if (parseCategories.isEmpty()) { parseCategories = parseCategories(mangaListDocument) @@ -82,14 +85,14 @@ class Generator { map["tags"] = tags } - if (!itemUrl.startsWith(it.third)) println("**Note: ${it.second} URL does not match! Check for changes: \n ${it.third} vs $itemUrl") + if (!itemUrl.startsWith(it.baseUrl)) println("**Note: ${it.name} URL does not match! Check for changes: \n ${it.baseUrl} vs $itemUrl") val toJson = Gson().toJson(map) buffer.append("private const val MMRSOURCE_$number = \"\"\"$toJson\"\"\"\n") number++ } catch (e: Exception) { - println("error generating source ${it.second} ${e.printStackTrace()}") + println("error generating source ${it.name} ${e.printStackTrace()}") } } @@ -228,98 +231,99 @@ class Generator { companion object { val sources = listOf( - Triple("ar", "مانجا اون لاين", "https://onma.me"), - Triple("en", "Read Comics Online", "https://readcomicsonline.ru"), - Triple("en", "Biamam Scans", "https://biamam.com"), - Triple("en", "Fallen Angels", "https://manga.fascans.com"), - Triple("en", "Mangawww Reader", "https://mangawww.club"), - Triple("en", "White Cloud Pavilion", "https://www.whitecloudpavilion.com/manga/free"), - Triple("fr", "Scan FR", "https://www.scan-fr.co"), - Triple("fr", "Scan VF", "https://www.scan-vf.net"), - Triple("fr", "Scan OP", "https://scan-op.com"), - Triple("id", "Komikid", "https://www.komikid.com"), - Triple("pl", "ToraScans", "http://torascans.pl"), - Triple("pt-BR", "Comic Space", "https://www.comicspace.com.br"), - Triple("pt-BR", "Mangás Yuri", "https://mangasyuri.net"), - Triple("pl", "Dracaena", "https://dracaena.webd.pl/czytnik"), - Triple("pl", "Nikushima", "http://azbivo.webd.pro"), - Triple("tr", "MangaHanta", "http://mangahanta.com"), - Triple("vi", "Fallen Angels Scans", "https://truyen.fascans.com"), - Triple("es", "LeoManga", "https://leomanga.me"), - Triple("es", "submanga", "https://submangas.net"), - Triple("es", "Mangadoor", "https://mangadoor.com"), - Triple("es", "Mangas.pw", "https://mangas.in"), - Triple("es", "Tumangaonline.co", "http://tumangaonline.uno"), - Triple("bg", "Utsukushii", "https://manga.utsukushii-bg.com"), - Triple("es", "Universo Yuri", "https://universoyuri.com"), - Triple("pl", "Phoenix-Scans", "https://phoenix-scans.pl"), - Triple("ru", "Japit Comics", "https://j-comics.ru"), - Triple("tr", "Puzzmos", "https://puzzmos.com"), - Triple("fr", "Scan-1", "https://wwv.scan-1.com"), - Triple("fr", "Lelscan-VF", "https://www.lelscan-vf.com"), - Triple("id", "MangaSusu", "https://www.mangasusu.site"), - Triple("id", "Komik Manga", "https://adm.komikmanga.com"), - Triple("ko", "Mangazuki Raws", "https://raws.mangazuki.co"), - Triple("pt-BR", "Remangas", "https://remangas.top"), - Triple("pt-BR", "AnimaRegia", "https://animaregia.net"), - Triple("tr", "NoxSubs", "https://noxsubs.com"), - Triple("id", "MangaYu", "https://mangayu.com"), - Triple("tr", "MangaVadisi", "http://manga-v2.mangavadisi.org"), + SourceData("ar", "مانجا اون لاين", "https://onma.me"), + SourceData("en", "Read Comics Online", "https://readcomicsonline.ru"), + SourceData("en", "Biamam Scans", "https://biamam.com"), + SourceData("en", "Fallen Angels", "https://manga.fascans.com"), + SourceData("en", "White Cloud Pavilion", "https://www.whitecloudpavilion.com/manga/free"), + SourceData("fr", "Scan FR", "https://www.scan-fr.co"), + SourceData("fr", "Scan VF", "https://www.scan-vf.net"), + SourceData("fr", "Scan OP", "https://scan-op.com"), + SourceData("id", "Komikid", "https://www.komikid.com"), + SourceData("pl", "ToraScans", "http://torascans.pl"), + SourceData("pt-BR", "Comic Space", "https://www.comicspace.com.br"), + SourceData("pt-BR", "Mangás Yuri", "https://mangasyuri.net"), + SourceData("pl", "Dracaena", "https://dracaena.webd.pl/czytnik"), + SourceData("pl", "Nikushima", "http://azbivo.webd.pro"), + SourceData("tr", "MangaHanta", "http://mangahanta.com"), + SourceData("vi", "Fallen Angels Scans", "https://truyen.fascans.com"), + SourceData("es", "LeoManga", "https://leomanga.me"), + SourceData("es", "submanga", "https://submangas.net"), + SourceData("es", "Mangadoor", "https://mangadoor.com"), + SourceData("es", "Mangas.pw", "https://mangas.in"), + SourceData("es", "Tumangaonline.co", "http://tumangaonline.uno"), + SourceData("bg", "Utsukushii", "https://manga.utsukushii-bg.com"), + SourceData("es", "Universo Yuri", "https://universoyuri.com"), + SourceData("pl", "Phoenix-Scans", "https://phoenix-scans.pl"), + SourceData("ru", "Japit Comics", "https://j-comics.ru"), + SourceData("tr", "Puzzmos", "https://puzzmos.com"), + SourceData("fr", "Scan-1", "https://wwv.scan-1.com"), + SourceData("fr", "Lelscan-VF", "https://www.lelscan-vf.com"), + SourceData("id", "MangaSusu", "https://www.mangasusu.site"), + SourceData("id", "Komik Manga", "https://adm.komikmanga.com"), + SourceData("ko", "Mangazuki Raws", "https://raws.mangazuki.co"), + SourceData("pt-BR", "Remangas", "https://remangas.top"), + SourceData("pt-BR", "AnimaRegia", "https://animaregia.net"), + SourceData("tr", "NoxSubs", "https://noxsubs.com"), + SourceData("id", "MangaYu", "https://mangayu.com"), + SourceData("tr", "MangaVadisi", "http://manga-v2.mangavadisi.org"), + SourceData("id", "MangaID", "https://mangaid.click"), // NOTE: THIS SOURCE CONTAINS A CUSTOM LANGUAGE SYSTEM (which will be ignored)! - Triple("other", "HentaiShark", "https://www.hentaishark.com")) + SourceData("other", "HentaiShark", "https://www.hentaishark.com", true)) // Changed CMS - // Triple("en", "MangaTreat Scans", "http://www.mangatreat.com"), - // Triple("en", "Chibi Manga Reader", "https://www.cmreader.info"), - // Triple("tr", "Epikmanga", "https://www.epikmanga.com"), - // Triple("en", "Hatigarm Scans", "https://hatigarmscans.net"), + // SourceData("en", "MangaTreat Scans", "http://www.mangatreat.com"), + // SourceData("en", "Chibi Manga Reader", "https://www.cmreader.info"), + // SourceData("tr", "Epikmanga", "https://www.epikmanga.com"), + // SourceData("en", "Hatigarm Scans", "https://hatigarmscans.net"), // Went offline - // Triple("ru", "Anigai clan", "http://anigai.ru"), - // Triple("en", "ZXComic", "http://zxcomic.com"), - // Triple("es", "SOS Scanlation", "https://sosscanlation.com"), - // Triple("es", "MangaCasa", "https://mangacasa.com")) - // Triple("ja", "RAW MANGA READER", "https://rawmanga.site"), - // Triple("ar", "Manga FYI", "http://mangafyi.com/manga/arabic"), - // Triple("en", "MangaRoot", "http://mangaroot.com"), - // Triple("en", "MangaForLife", "http://manga4ever.com"), - // Triple("en", "Manga Spoil", "http://mangaspoil.com"), - // Triple("en", "MangaBlue", "http://mangablue.com"), - // Triple("en", "Manga Forest", "https://mangaforest.com"), - // Triple("en", "DManga", "http://dmanga.website"), - // Triple("en", "DB Manga", "http://dbmanga.com"), - // Triple("en", "Mangacox", "http://mangacox.com"), - // Triple("en", "GO Manhwa", "http://gomanhwa.xyz"), - // Triple("en", "KoManga", "https://komanga.net"), - // Triple("en", "Manganimecan", "http://manganimecan.com"), - // Triple("en", "Hentai2Manga", "http://hentai2manga.com"), - // Triple("en", "4 Manga", "http://4-manga.com"), - // Triple("en", "XYXX.INFO", "http://xyxx.info"), - // Triple("en", "Isekai Manga Reader", "https://isekaimanga.club"), - // Triple("fa", "TrinityReader", "http://trinityreader.pw"), - // Triple("fr", "Manga-LEL", "https://www.manga-lel.com"), - // Triple("fr", "Manga Etonnia", "https://www.etonnia.com"), - // Triple("fr", "ScanFR.com"), "http://scanfr.com"), - // Triple("fr", "Manga FYI", "http://mangafyi.com/manga/french"), - // Triple("fr", "scans-manga", "http://scans-manga.com"), - // Triple("fr", "Henka no Kaze", "http://henkanokazelel.esy.es/upload"), - // Triple("fr", "Tous Vos Scans", "http://www.tous-vos-scans.com"), - // Triple("id", "Manga Desu", "http://mangadesu.net"), - // Triple("id", "Komik Mangafire.ID", "http://go.mangafire.id"), - // Triple("id", "MangaOnline", "https://mangaonline.web.id"), - // Triple("id", "MangaNesia", "https://manganesia.com"), - // Triple("id", "MangaID", "https://mangaid.me" - // Triple("id", "Manga Seru", "http://www.mangaseru.top" - // Triple("id", "Manga FYI", "http://mangafyi.com/manga/indonesian" - // Triple("id", "Bacamangaku", "http://www.bacamangaku.com"), - // Triple("id", "Indo Manga Reader", "http://indomangareader.com"), - // Triple("it", "Kingdom Italia Reader", "http://kireader.altervista.org"), - // Triple("ja", "IchigoBook", "http://ichigobook.com"), - // Triple("ja", "Mangaraw Online", "http://mangaraw.online" - // Triple("ja", "Mangazuki RAWS", "https://raws.mangazuki.co"), - // Triple("ja", "MangaRAW", "https://www.mgraw.com"), - // Triple("ja", "マンガ/漫画 マガジン/雑誌 raw", "http://netabare-manga-raw.com"), - // Triple("ru", "NAKAMA", "http://nakama.ru"), - // Triple("tr", "MangAoi", "http://mangaoi.com"), - // Triple("tr", "ManhuaTR", "http://www.manhua-tr.com"), + // SourceData("en", "Mangawww Reader", "https://mangawww.club"), + // SourceData("ru", "Anigai clan", "http://anigai.ru"), + // SourceData("en", "ZXComic", "http://zxcomic.com"), + // SourceData("es", "SOS Scanlation", "https://sosscanlation.com"), + // SourceData("es", "MangaCasa", "https://mangacasa.com")) + // SourceData("ja", "RAW MANGA READER", "https://rawmanga.site"), + // SourceData("ar", "Manga FYI", "http://mangafyi.com/manga/arabic"), + // SourceData("en", "MangaRoot", "http://mangaroot.com"), + // SourceData("en", "MangaForLife", "http://manga4ever.com"), + // SourceData("en", "Manga Spoil", "http://mangaspoil.com"), + // SourceData("en", "MangaBlue", "http://mangablue.com"), + // SourceData("en", "Manga Forest", "https://mangaforest.com"), + // SourceData("en", "DManga", "http://dmanga.website"), + // SourceData("en", "DB Manga", "http://dbmanga.com"), + // SourceData("en", "Mangacox", "http://mangacox.com"), + // SourceData("en", "GO Manhwa", "http://gomanhwa.xyz"), + // SourceData("en", "KoManga", "https://komanga.net"), + // SourceData("en", "Manganimecan", "http://manganimecan.com"), + // SourceData("en", "Hentai2Manga", "http://hentai2manga.com"), + // SourceData("en", "4 Manga", "http://4-manga.com"), + // SourceData("en", "XYXX.INFO", "http://xyxx.info"), + // SourceData("en", "Isekai Manga Reader", "https://isekaimanga.club"), + // SourceData("fa", "TrinityReader", "http://trinityreader.pw"), + // SourceData("fr", "Manga-LEL", "https://www.manga-lel.com"), + // SourceData("fr", "Manga Etonnia", "https://www.etonnia.com"), + // SourceData("fr", "ScanFR.com"), "http://scanfr.com"), + // SourceData("fr", "Manga FYI", "http://mangafyi.com/manga/french"), + // SourceData("fr", "scans-manga", "http://scans-manga.com"), + // SourceData("fr", "Henka no Kaze", "http://henkanokazelel.esy.es/upload"), + // SourceData("fr", "Tous Vos Scans", "http://www.tous-vos-scans.com"), + // SourceData("id", "Manga Desu", "http://mangadesu.net"), + // SourceData("id", "Komik Mangafire.ID", "http://go.mangafire.id"), + // SourceData("id", "MangaOnline", "https://mangaonline.web.id"), + // SourceData("id", "MangaNesia", "https://manganesia.com"), + // SourceData("id", "MangaID", "https://mangaid.me" + // SourceData("id", "Manga Seru", "http://www.mangaseru.top" + // SourceData("id", "Manga FYI", "http://mangafyi.com/manga/indonesian" + // SourceData("id", "Bacamangaku", "http://www.bacamangaku.com"), + // SourceData("id", "Indo Manga Reader", "http://indomangareader.com"), + // SourceData("it", "Kingdom Italia Reader", "http://kireader.altervista.org"), + // SourceData("ja", "IchigoBook", "http://ichigobook.com"), + // SourceData("ja", "Mangaraw Online", "http://mangaraw.online" + // SourceData("ja", "Mangazuki RAWS", "https://raws.mangazuki.co"), + // SourceData("ja", "MangaRAW", "https://www.mgraw.com"), + // SourceData("ja", "マンガ/漫画 マガジン/雑誌 raw", "http://netabare-manga-raw.com"), + // SourceData("ru", "NAKAMA", "http://nakama.ru"), + // SourceData("tr", "MangAoi", "http://mangaoi.com"), + // SourceData("tr", "ManhuaTR", "http://www.manhua-tr.com"), val relativePath = System.getProperty("user.dir") + "/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/GeneratedSources.kt" diff --git a/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/MyMangaReaderCMSSource.kt b/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/MyMangaReaderCMSSource.kt index 8cfa66ec0..dd453b2ef 100644 --- a/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/MyMangaReaderCMSSource.kt +++ b/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/MyMangaReaderCMSSource.kt @@ -7,6 +7,7 @@ import com.github.salomonbrys.kotson.array import com.github.salomonbrys.kotson.get import com.github.salomonbrys.kotson.string import com.google.gson.JsonParser +import eu.kanade.tachiyomi.annotations.Nsfw import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.source.model.Filter @@ -28,11 +29,11 @@ import okhttp3.Response import org.jsoup.nodes.Element import rx.Observable -class MyMangaReaderCMSSource( - override val lang: String, - override val name: String, - override val baseUrl: String, - override val supportsLatest: Boolean, +open class MyMangaReaderCMSSource( + final override val lang: String, + final override val name: String, + final override val baseUrl: String, + final override val supportsLatest: Boolean, private val itemUrl: String, private val categoryMappings: List>, private val tagMappings: List>? @@ -137,8 +138,12 @@ class MyMangaReaderCMSSource( if (document.location().contains("page=1")) latestTitles.clear() val mangas = document.select(latestUpdatesSelector()) - .map { element -> - if (element.hasClass("manga-item")) latestUpdatesFromElement(element) else gridLatestUpdatesFromElement(element) + .let { elements -> + if (elements.select("a").firstOrNull()?.hasText() == true) { + elements.map { latestUpdatesFromElement(it) } + } else { + document.select(gridLatestUpdatesSelector()).map { gridLatestUpdatesFromElement(it) } + } } .distinctBy { manga -> manga.title } .filterNot { manga -> manga.title in latestTitles } @@ -146,14 +151,15 @@ class MyMangaReaderCMSSource( return MangasPage(mangas, document.select(latestUpdatesNextPageSelector()) != null) } - private fun latestUpdatesSelector() = "div.mangalist div.manga-item, div.grid-manga tr" + private fun latestUpdatesSelector() = "div.mangalist div.manga-item" private fun latestUpdatesNextPageSelector() = "a[rel=next]" private fun latestUpdatesFromElement(element: Element): SManga = SManga.create().apply { url = element.select("a").first().attr("abs:href").substringAfter(baseUrl) // intentionally not using setUrlWithoutDomain title = element.select("a").first().text().trim() thumbnail_url = "$baseUrl/uploads/manga/${url.substringAfterLast('/')}/cover/cover_250x350.jpg" } - // MangaYu, for instance, needs this + // MangaYu and MangaID needs this + private fun gridLatestUpdatesSelector() = "div.mangalist div.manga-item, div.grid-manga tr" private fun gridLatestUpdatesFromElement(element: Element): SManga = SManga.create().apply { element.select("a.chart-title").let { setUrlWithoutDomain(it.attr("href")) @@ -455,3 +461,22 @@ class MyMangaReaderCMSSource( private val DATE_FORMAT = SimpleDateFormat("d MMM. yyyy", Locale.US) } } + +@Nsfw +class MyMangaReaderCMSSourceNsfw( + lang: String, + name: String, + baseUrl: String, + supportsLatest: Boolean, + itemUrl: String, + categoryMappings: List>, + tagMappings: List>? +) : MyMangaReaderCMSSource( + lang, + name, + baseUrl, + supportsLatest, + itemUrl, + categoryMappings, + tagMappings +) diff --git a/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/MyMangaReaderCMSSources.kt b/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/MyMangaReaderCMSSources.kt index 6ff654ed4..92305c0cb 100644 --- a/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/MyMangaReaderCMSSources.kt +++ b/src/all/mmrcms/src/eu/kanade/tachiyomi/extension/all/mmrcms/MyMangaReaderCMSSources.kt @@ -57,8 +57,10 @@ class MyMangaReaderCMSSources : SourceFactory { if (jsonObject["tags"].isJsonArray) { tags = mapToPairs(jsonObject["tags"].asJsonArray) } + val isNsfw = jsonObject["isNsfw"].bool - MyMangaReaderCMSSource( + if (isNsfw) { + MyMangaReaderCMSSourceNsfw( language, name, baseUrl, @@ -66,7 +68,18 @@ class MyMangaReaderCMSSources : SourceFactory { itemUrl, categories, tags - ) + ) + } else { + MyMangaReaderCMSSource( + language, + name, + baseUrl, + supportsLatest, + itemUrl, + categories, + tags + ) + } } }