From a09dc0a8bfed6b6f02add1a09de89133a50eea3a Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Sat, 14 Jan 2023 03:41:03 +0100 Subject: [PATCH] Add extension: Marinmoe (#1164) Closes https://github.com/jmir1/aniyomi-extensions/issues/1161 --- src/en/animixplay/build.gradle | 12 - .../res/mipmap-hdpi/ic_launcher.png | Bin 1847 -> 0 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 1096 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 2331 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 3755 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 5312 -> 0 bytes src/en/animixplay/res/web_hi_res_512.png | Bin 10258 -> 0 bytes .../en/animixplay/Animixplay.kt | 391 ----- .../animixplay/extractors/GogoCdnExtractor.kt | 97 -- .../AndroidManifest.xml | 0 src/en/marinmoe/build.gradle | 13 + .../res/mipmap-hdpi/ic_launcher.png | Bin .../res/mipmap-mdpi/ic_launcher.png | Bin .../res/mipmap-xhdpi/ic_launcher.png | Bin .../res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher.png | Bin .../res/web_hi_res_512.png | Bin .../animeextension/en/marinmoe/DataModel.kt | 125 ++ .../en/marinmoe}/DdosGuardInterceptor.kt | 2 +- .../animeextension/en/marinmoe/MarinMoe.kt | 332 +++++ .../en/marinmoe/MarinMoeConstants.kt | 89 ++ .../en/marinmoe/MarinMoeFilters.kt | 1296 +++++++++++++++++ src/en/tenshimoe/AndroidManifest.xml | 2 - src/en/tenshimoe/build.gradle | 12 - .../animeextension/en/tenshimoe/TenshiMoe.kt | 234 --- 25 files changed, 1856 insertions(+), 749 deletions(-) delete mode 100644 src/en/animixplay/build.gradle delete mode 100644 src/en/animixplay/res/mipmap-hdpi/ic_launcher.png delete mode 100644 src/en/animixplay/res/mipmap-mdpi/ic_launcher.png delete mode 100644 src/en/animixplay/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 src/en/animixplay/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 src/en/animixplay/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 src/en/animixplay/res/web_hi_res_512.png delete mode 100644 src/en/animixplay/src/eu/kanade/tachiyomi/animeextension/en/animixplay/Animixplay.kt delete mode 100644 src/en/animixplay/src/eu/kanade/tachiyomi/animeextension/en/animixplay/extractors/GogoCdnExtractor.kt rename src/en/{animixplay => marinmoe}/AndroidManifest.xml (100%) create mode 100644 src/en/marinmoe/build.gradle rename src/en/{tenshimoe => marinmoe}/res/mipmap-hdpi/ic_launcher.png (100%) rename src/en/{tenshimoe => marinmoe}/res/mipmap-mdpi/ic_launcher.png (100%) rename src/en/{tenshimoe => marinmoe}/res/mipmap-xhdpi/ic_launcher.png (100%) rename src/en/{tenshimoe => marinmoe}/res/mipmap-xxhdpi/ic_launcher.png (100%) rename src/en/{tenshimoe => marinmoe}/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename src/en/{tenshimoe => marinmoe}/res/web_hi_res_512.png (100%) create mode 100644 src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/DataModel.kt rename src/en/{tenshimoe/src/eu/kanade/tachiyomi/animeextension/en/tenshimoe => marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe}/DdosGuardInterceptor.kt (97%) create mode 100644 src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/MarinMoe.kt create mode 100644 src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/MarinMoeConstants.kt create mode 100644 src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/MarinMoeFilters.kt delete mode 100644 src/en/tenshimoe/AndroidManifest.xml delete mode 100644 src/en/tenshimoe/build.gradle delete mode 100644 src/en/tenshimoe/src/eu/kanade/tachiyomi/animeextension/en/tenshimoe/TenshiMoe.kt diff --git a/src/en/animixplay/build.gradle b/src/en/animixplay/build.gradle deleted file mode 100644 index 20b5d2603..000000000 --- a/src/en/animixplay/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' - -ext { - extName = 'Animixplay' - pkgNameSuffix = 'en.animixplay' - extClass = '.Animixplay' - extVersionCode = 13 - libVersion = '13' -} - -apply from: "$rootDir/common.gradle" diff --git a/src/en/animixplay/res/mipmap-hdpi/ic_launcher.png b/src/en/animixplay/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 4edee4291d2fd17914c0c332fa3b83201b0998dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1847 zcmai#Su`7n7seA+TQzplR85&!2DQ^_LV}1y?X;Mwr8>5b#4^@KZBa%fr3_*xT1%_6 z7<*`GtWy!S)lwsBtF@&XL5;rs&;Ml}zIz|;eYoe`@BF?LI~$9$LJ%PU0B{zIK{=ds z%y$X!oz&|a^%ejC-#0AE#3|B!BmXxmCkx5mEe&;B`yweI4rRg%l@bnp#h0pYsfZ@q z6Ditas00D|sT)u~J-Z*WepUbqnLzVYNeZ9hO+!cQPsyVB}mE_pv0=M+! z{>2yN@A3`%5%s#Th^2zL0z-mC0u7U?WSyrsZ2-6`PoQ8g>kVn=x?m8YR%$+!Nj{Bj z`mkK7SEVWqds8LI2-S*Y*vK-2gdnE8) z^ixRG#oOXxS!rkPU}YU`ZJCz$jibq~v+9{CE5;vHA$+?Z`ZMRu2RlawFmH5n9csy~ zq(F6}}4Qw7(ea z0k&8tma@UZKUD>}WhKRtd^q^2Q^cID?Uvh_Ux2HjSFgZe-9tkUE|-oo7^m;jiw-~_ zP*7-SBAsr;EDOHlPcGWXH)9Uh>*2M)&0!%SA3ffVjY-|r3l1{iB5)z_ytBW@#sRI$s(efE8NZH*Dg(@j|y{q$9QBm>K zIwPa;!58lHcU)jg67(jQ0r0;Cuid3$^NR-6yBh(hES z@fs>HoUz4V{?UiS;gid3wijoA-&IDm(9+UU$h|X$LLvznKb)L&ffM$GWi)QS++BSe zwNO{5165XDnD0(r|9fM)X;qVdy}F`8d1`t(ibAD=N5{t%V6gnowUrf5&m2vUB~MwU z1D%V5`QzLhx;hx$>v{bW>pOiC*BQ4K{7_ z4bFmsqumpTp;dU-Thh=9^Iqy3w`F;Y<47EU7dVXQ(L?I6s^r_ z9s_uLd(V$ObzWaz=uKmdj=s*95O{KmA0+$o#5Ku4np#$FZhy&D7|igEM|-5UfT*EW z#kF&mOqSqUB}N2*+DRZ1=a+msY)X50XO7nb12k|6wsugNScvAOOWw$axxpMwdk2Ru zMxM}4f2Q(2caMR3b{&wyb5Q!^3CS_vA+kS1(GQ1X@#zPEJuhKNx1;r>p0ZBCBNfw`+q%t&hkVjr!a2}%RyjoViX{viZ8 z?Sr*8K05$u4Hpv=Yd4fK8vrMmGnxYnigxz)mbfN6{sEgaEr(Ch$it(fmZHSO#O(KBGmR%Gg@RegR#$lH|W$MI~ss6?Z~Oesb4D` zpHVpr#w$0?Z@9P{JcFL+M}>$7cE2ipzH=;2TExwgMgS#Dwf_Lt|B|dvHBRri6T)Lh z(E%azm?aizauhWp$ljTyRg!->&_SGhZushVW`-VeJ_)m?=IDfp67s0$H-2YW=})F# z{W02_m5TOOZl*xf@NB9DJ}fMZx6e(*U0YLcmp8y|)>P1Rvn_lBvi}9*cSc%0NSsnU z?3@g`FwhqHiT$auv5}jdo$aWUxw?z|tFaNpg*PBZ42y4DUn7vBE5It!q!ce*2xW*^ zCReyhqtR}n*3=}Sl1h^J1sYf-yZ_`zHKhH{wq9SJ43l3o+x+MZn#W|F3g0#LA2kQc iv}n&xW50)x^ngmbO{ diff --git a/src/en/animixplay/res/mipmap-mdpi/ic_launcher.png b/src/en/animixplay/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 17aabcb1738ed75edbfba9040875f67a95621af9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1096 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 diff --git a/src/en/animixplay/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/animixplay/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 40684f8106b58dcda3f1441bbaa8e4b520e3651d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5312 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 pYF^&().getSharedPreferences("source_$id", 0x0000) - } - - var nextPage = "99999999" - var hasNextPage = true - - var latestNextDate = "3020-05-06 00:00:00" - var latestHasNextPage = true - - override fun popularAnimeSelector(): String = throw Exception("not used") - - override fun popularAnimeRequest(page: Int): Request { - val formBody = FormBody.Builder() - .add("genre", "any") - .add("minstr", nextPage) - .add("orderby", "popular") - .build() - return POST("https://animixplay.to/api/search", headers, body = formBody) - } - - override fun popularAnimeParse(response: Response): AnimesPage { - val document = response.asJsoup() - val responseJson = json.decodeFromString(document.select("body").text()) - nextPage = responseJson["last"]!!.jsonPrimitive.content - hasNextPage = responseJson["more"]!!.jsonPrimitive.boolean - val animeList = responseJson["result"]!!.jsonArray - val animes = animeList.map { element -> - popularAnimeFromElement(element.jsonObject) - } - - return AnimesPage(animes, hasNextPage) - } - - override fun popularAnimeFromElement(element: Element) = throw Exception("not used") - - private fun popularAnimeFromElement(animeJson: JsonObject): SAnime { - val anime = SAnime.create() - anime.setUrlWithoutDomain(animeJson["url"]!!.jsonPrimitive.content.substringBefore("/ep")) - anime.thumbnail_url = animeJson["picture"]!!.jsonPrimitive.content - anime.title = animeJson["title"]!!.jsonPrimitive.content - return anime - } - - override fun popularAnimeNextPageSelector(): String = throw Exception("not used") - - override fun episodeListSelector() = throw Exception("not used") - - override fun episodeListParse(response: Response): List { - return if (response.request.url.toString().contains(".json")) { - val document = response.asJsoup() - val animeJson = json.decodeFromString(document.select("body").text()) - val malId = animeJson["mal_id"]!!.jsonPrimitive.int - episodesRequest(malId, document) - } else { - episodeFromResponse(response) - } - } - - private fun episodesRequest(malId: Int, document: Document): List { - // POST data - val body = FormBody.Builder() - .add("recomended", malId.toString()) - .build() - val animeServersJson = json.decodeFromString( - client.newCall( - POST( - "https://animixplay.to/api/search", - body = body, - headers = Headers.headersOf("Referer", document.location()) - ) - ).execute().body!!.string() - ) - val animeSubDubUrls = animeServersJson["data"]!!.jsonArray[0].jsonObject["items"]!!.jsonArray - val newList = mutableListOf() - var preferred = 0 - for (jsonObj in animeSubDubUrls) { - if (jsonObj.toString().contains("dub")) { - newList.add(preferred, jsonObj) - preferred++ - } else { - newList.add(jsonObj) - } - } - newList.reverse() - val urlEndpoint = newList[0].jsonObject["url"]!!.jsonPrimitive.content - val episodesResponse = client.newCall( - GET( - baseUrl + urlEndpoint, - ) - ).execute() - return episodeFromResponse(episodesResponse) - } - private fun episodeFromResponse(response: Response): List { - val document = response.asJsoup() - val episodeListJson = json.decodeFromString(document.select("div#epslistplace").text()) - val url = response.request.url.toString() - val episodeAvailable = episodeListJson["eptotal"]!!.jsonPrimitive.int - val episodeList = mutableListOf() - - for (i in 0 until episodeAvailable) { - episodeList.add(episodeFromJsonElement(url, i)) - } - return episodeList.reversed() - } - override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used") - - private fun episodeFromJsonElement(url: String, number: Int): SEpisode { - val episode = SEpisode.create() - episode.setUrlWithoutDomain("$url/ep$number") - episode.episode_number = number.toFloat() + 1F - episode.name = "Episode ${number + 1}" - return episode - } - - override fun videoListParse(response: Response): List