From c38e3c039235ea59a473f4860cd9adf451c99d74 Mon Sep 17 00:00:00 2001 From: Kdroidwin <144515909+Kdroidwin@users.noreply.github.com> Date: Thu, 16 Jan 2025 02:36:53 +0900 Subject: [PATCH 01/22] fix(all/missav): Domain update for MissAV (#533) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update MissAV.kt missav.com ⇒ missav.ws * Update build.gradle * Update MissAV.kt --- src/all/missav/build.gradle | 4 ++-- .../eu/kanade/tachiyomi/animeextension/all/missav/MissAV.kt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/all/missav/build.gradle b/src/all/missav/build.gradle index 3408ac32..57e84ac6 100644 --- a/src/all/missav/build.gradle +++ b/src/all/missav/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'MissAV' extClass = '.MissAV' - extVersionCode = 11 + extVersionCode = 12 isNsfw = true } @@ -11,4 +11,4 @@ dependencies { implementation(project(':lib:unpacker')) implementation(project(':lib:playlist-utils')) implementation(project(':lib:javcoverfetcher')) -} \ No newline at end of file +} diff --git a/src/all/missav/src/eu/kanade/tachiyomi/animeextension/all/missav/MissAV.kt b/src/all/missav/src/eu/kanade/tachiyomi/animeextension/all/missav/MissAV.kt index 23717e42..18926960 100644 --- a/src/all/missav/src/eu/kanade/tachiyomi/animeextension/all/missav/MissAV.kt +++ b/src/all/missav/src/eu/kanade/tachiyomi/animeextension/all/missav/MissAV.kt @@ -29,7 +29,7 @@ class MissAV : AnimeHttpSource(), ConfigurableAnimeSource { override val lang = "all" - override val baseUrl = "https://missav.com" + override val baseUrl = "https://missav.ai" override val supportsLatest = true -- 2.47.2 From 970d14a93cbe8ad43a3e5625ef70a7850663d4fa Mon Sep 17 00:00:00 2001 From: Kerim Demirkaynak <76594465+KerimDemirkaynak@users.noreply.github.com> Date: Thu, 16 Jan 2025 18:54:16 +0300 Subject: [PATCH 02/22] fix(tr/tranimeizle): Domain update for tranimeizle (#545) * Update build.gradle * Update AndroidManifest.xml * Update TRAnimeIzleUrlActivity.kt * Update TRAnimeIzle.kt --- src/tr/tranimeizle/AndroidManifest.xml | 2 +- src/tr/tranimeizle/build.gradle | 2 +- .../tachiyomi/animeextension/tr/tranimeizle/TRAnimeIzle.kt | 2 +- .../animeextension/tr/tranimeizle/TRAnimeIzleUrlActivity.kt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tr/tranimeizle/AndroidManifest.xml b/src/tr/tranimeizle/AndroidManifest.xml index 705fe332..7d65d998 100644 --- a/src/tr/tranimeizle/AndroidManifest.xml +++ b/src/tr/tranimeizle/AndroidManifest.xml @@ -13,7 +13,7 @@ diff --git a/src/tr/tranimeizle/build.gradle b/src/tr/tranimeizle/build.gradle index 75f30735..71d887d4 100644 --- a/src/tr/tranimeizle/build.gradle +++ b/src/tr/tranimeizle/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'TR Anime Izle' extClass = '.TRAnimeIzle' - extVersionCode = 19 + extVersionCode = 20 } apply from: "$rootDir/common.gradle" diff --git a/src/tr/tranimeizle/src/eu/kanade/tachiyomi/animeextension/tr/tranimeizle/TRAnimeIzle.kt b/src/tr/tranimeizle/src/eu/kanade/tachiyomi/animeextension/tr/tranimeizle/TRAnimeIzle.kt index f9a0a18f..4a33fea9 100644 --- a/src/tr/tranimeizle/src/eu/kanade/tachiyomi/animeextension/tr/tranimeizle/TRAnimeIzle.kt +++ b/src/tr/tranimeizle/src/eu/kanade/tachiyomi/animeextension/tr/tranimeizle/TRAnimeIzle.kt @@ -43,7 +43,7 @@ class TRAnimeIzle : ParsedAnimeHttpSource(), ConfigurableAnimeSource { override val name = "TR Anime Izle" - override val baseUrl = "https://www.tranimeizle.co" + override val baseUrl = "https://www.tranimeizle.top" override val lang = "tr" diff --git a/src/tr/tranimeizle/src/eu/kanade/tachiyomi/animeextension/tr/tranimeizle/TRAnimeIzleUrlActivity.kt b/src/tr/tranimeizle/src/eu/kanade/tachiyomi/animeextension/tr/tranimeizle/TRAnimeIzleUrlActivity.kt index ae9fb645..6345d35e 100644 --- a/src/tr/tranimeizle/src/eu/kanade/tachiyomi/animeextension/tr/tranimeizle/TRAnimeIzleUrlActivity.kt +++ b/src/tr/tranimeizle/src/eu/kanade/tachiyomi/animeextension/tr/tranimeizle/TRAnimeIzleUrlActivity.kt @@ -8,7 +8,7 @@ import android.util.Log import kotlin.system.exitProcess /** - * Springboard that accepts https://www.tranimeizle.co/anime/ intents + * Springboard that accepts https://www.tranimeizle.top/anime/ intents * and redirects them to the main Aniyomi process. */ class TRAnimeIzleUrlActivity : Activity() { -- 2.47.2 From b4e9c0d3a596e08d7e4541cfe3129837c901e216 Mon Sep 17 00:00:00 2001 From: CursedSheep Date: Sat, 18 Jan 2025 00:47:35 +0800 Subject: [PATCH 03/22] Fix #550 and Improve KwikExtractor Decrypt Function (#551) * Improve KwikExtractor Decrypt Function - Optimize and improve performance of KwikExtractor decrypt functionality * Fix issue #550 * Update version --- src/en/animepahe/build.gradle | 2 +- .../animeextension/en/animepahe/AnimePahe.kt | 36 +++---------- .../en/animepahe/KwikExtractor.kt | 52 +++++-------------- .../en/animepahe/dto/AnimePaheDto.kt | 2 + 4 files changed, 23 insertions(+), 69 deletions(-) diff --git a/src/en/animepahe/build.gradle b/src/en/animepahe/build.gradle index 10eb74d8..732be294 100644 --- a/src/en/animepahe/build.gradle +++ b/src/en/animepahe/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'AnimePahe' extClass = '.AnimePahe' - extVersionCode = 27 + extVersionCode = 28 } apply from: "$rootDir/common.gradle" diff --git a/src/en/animepahe/src/eu/kanade/tachiyomi/animeextension/en/animepahe/AnimePahe.kt b/src/en/animepahe/src/eu/kanade/tachiyomi/animeextension/en/animepahe/AnimePahe.kt index f13f3227..44672a28 100644 --- a/src/en/animepahe/src/eu/kanade/tachiyomi/animeextension/en/animepahe/AnimePahe.kt +++ b/src/en/animepahe/src/eu/kanade/tachiyomi/animeextension/en/animepahe/AnimePahe.kt @@ -19,9 +19,6 @@ import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.parseAs -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.runBlocking -import kotlinx.coroutines.withContext import kotlinx.serialization.json.Json import okhttp3.Headers import okhttp3.Request @@ -67,16 +64,8 @@ class AnimePahe : ConfigurableAnimeSource, AnimeHttpSource() { * @see episodeListRequest */ override fun animeDetailsRequest(anime: SAnime): Request { - val animeId = anime.getId() - // We're using coroutines here to run it inside another thread and - // prevent android.os.NetworkOnMainThreadException when trying to open - // webview or share it. - val session = runBlocking { - withContext(Dispatchers.IO) { - fetchSession(anime.title, animeId) - } - } - return GET("$baseUrl/anime/$session?anime_id=$animeId") + val session = anime.getSession() + return GET("$baseUrl/anime/$session") } override fun animeDetailsParse(response: Response): SAnime { @@ -106,8 +95,8 @@ class AnimePahe : ConfigurableAnimeSource, AnimeHttpSource() { SAnime.create().apply { title = anime.title thumbnail_url = anime.snapshot - val animeId = anime.id - setUrlWithoutDomain("/anime/?anime_id=$animeId") + val sessionId = anime.anime_session + setUrlWithoutDomain("/anime/?session_id=$sessionId") artist = anime.fansub } } @@ -124,8 +113,8 @@ class AnimePahe : ConfigurableAnimeSource, AnimeHttpSource() { SAnime.create().apply { title = anime.title thumbnail_url = anime.poster - val animeId = anime.id - setUrlWithoutDomain("/anime/?anime_id=$animeId") + val sessionId = anime.session + setUrlWithoutDomain("/anime/?session_id=$sessionId") } } return AnimesPage(animeList, false) @@ -146,7 +135,7 @@ class AnimePahe : ConfigurableAnimeSource, AnimeHttpSource() { * @see animeDetailsRequest */ override fun episodeListRequest(anime: SAnime): Request { - val session = fetchSession(anime.title, anime.getId()) + val session = anime.getSession() return GET("$baseUrl/api?m=release&id=$session&sort=episode_desc&page=1") } @@ -310,15 +299,6 @@ class AnimePahe : ConfigurableAnimeSource, AnimeHttpSource() { } // ============================= Utilities ============================== - private fun fetchSession(title: String, animeId: String): String { - return client.newCall(GET("$baseUrl/api?m=search&q=$title")) - .execute() - .body.string() - .substringAfter("\"id\":$animeId") - .substringAfter("\"session\":\"") - .substringBefore("\"") - } - private fun parseStatus(statusString: String): Int { return when (statusString) { "Currently Airing" -> SAnime.ONGOING @@ -327,7 +307,7 @@ class AnimePahe : ConfigurableAnimeSource, AnimeHttpSource() { } } - private fun SAnime.getId() = url.substringAfterLast("?anime_id=").substringBefore("\"") + private fun SAnime.getSession() = url.substringAfterLast("?session_id=").substringBefore("\"") private fun String.toDate(): Long { return runCatching { diff --git a/src/en/animepahe/src/eu/kanade/tachiyomi/animeextension/en/animepahe/KwikExtractor.kt b/src/en/animepahe/src/eu/kanade/tachiyomi/animeextension/en/animepahe/KwikExtractor.kt index 19b366a0..f8140aa0 100644 --- a/src/en/animepahe/src/eu/kanade/tachiyomi/animeextension/en/animepahe/KwikExtractor.kt +++ b/src/en/animepahe/src/eu/kanade/tachiyomi/animeextension/en/animepahe/KwikExtractor.kt @@ -35,7 +35,6 @@ import okhttp3.FormBody import okhttp3.Headers import okhttp3.OkHttpClient import okhttp3.Response -import kotlin.math.pow class KwikExtractor(private val client: OkHttpClient) { private var cookies: String = "" @@ -108,52 +107,25 @@ class KwikExtractor(private val client: OkHttpClient) { } private fun decrypt(fullString: String, key: String, v1: Int, v2: Int): String { - var r = "" + val keyIndexMap = key.withIndex().associate { it.value to it.index } + val sb = StringBuilder() var i = 0 + val toFind = key[v2] while (i < fullString.length) { - var s = "" - - while (fullString[i] != key[v2]) { - s += fullString[i] - ++i + val nextIndex = fullString.indexOf(toFind, i) + val decodedCharStr = buildString { + for (j in i until nextIndex) { + append(keyIndexMap[fullString[j]] ?: -1) + } } - var j = 0 - while (j < key.length) { - s = s.replace(key[j].toString(), j.toString()) - ++j - } - r += (getString(s, v2).toInt() - v1).toChar() - ++i - } - return r - } + i = nextIndex + 1 - private fun getString(content: String, s1: Int): String { - val s2 = 10 - val characterMap = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/" - - val slice2 = characterMap.slice(0 until s2) - var acc: Long = 0 - - for ((n, i) in content.reversed().withIndex()) { - acc += when (isNumber("$i")) { - true -> "$i".toLong() - false -> 0L - } * s1.toDouble().pow(n.toDouble()).toInt() + val decodedChar = (decodedCharStr.toInt(v2) - v1).toChar() + sb.append(decodedChar) } - var k = "" - - while (acc > 0) { - k = slice2[(acc % s2).toInt()] + k - acc = (acc - (acc % s2)) / s2 - } - - return when (k != "") { - true -> k - false -> "0" - } + return sb.toString() } } diff --git a/src/en/animepahe/src/eu/kanade/tachiyomi/animeextension/en/animepahe/dto/AnimePaheDto.kt b/src/en/animepahe/src/eu/kanade/tachiyomi/animeextension/en/animepahe/dto/AnimePaheDto.kt index 2adcd2f7..c2ab2410 100644 --- a/src/en/animepahe/src/eu/kanade/tachiyomi/animeextension/en/animepahe/dto/AnimePaheDto.kt +++ b/src/en/animepahe/src/eu/kanade/tachiyomi/animeextension/en/animepahe/dto/AnimePaheDto.kt @@ -23,6 +23,7 @@ data class LatestAnimeDto( @SerialName("anime_id") val id: Int, val fansub: String, + val anime_session: String, ) @Serializable @@ -30,6 +31,7 @@ data class SearchResultDto( val title: String, val poster: String, val id: Int, + val session: String, ) @Serializable -- 2.47.2 From 5b33d95e03dc7a1da7ffee6b895f2dc6c405a29f Mon Sep 17 00:00:00 2001 From: Cuong-Tran Date: Sat, 18 Jan 2025 00:00:09 +0700 Subject: [PATCH 04/22] feat: add Anizone (#557) * feat: add AniZone * fix episode number parsing --- src/all/anizone/build.gradle | 11 + .../anizone/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3892 bytes .../anizone/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2217 bytes .../anizone/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4874 bytes .../anizone/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 8066 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10034 bytes .../animeextension/all/anizone/AniZone.kt | 513 ++++++++++++++++++ .../animeextension/all/anizone/LivewireDto.kt | 19 + 8 files changed, 543 insertions(+) create mode 100644 src/all/anizone/build.gradle create mode 100644 src/all/anizone/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/all/anizone/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/all/anizone/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/all/anizone/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/all/anizone/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/all/anizone/src/eu/kanade/tachiyomi/animeextension/all/anizone/AniZone.kt create mode 100644 src/all/anizone/src/eu/kanade/tachiyomi/animeextension/all/anizone/LivewireDto.kt diff --git a/src/all/anizone/build.gradle b/src/all/anizone/build.gradle new file mode 100644 index 00000000..9eb77b0c --- /dev/null +++ b/src/all/anizone/build.gradle @@ -0,0 +1,11 @@ +ext { + extName = 'AniZone' + extClass = '.AniZone' + extVersionCode = 1 +} + +apply from: "$rootDir/common.gradle" + +dependencies { + implementation(project(":lib:playlist-utils")) +} diff --git a/src/all/anizone/res/mipmap-hdpi/ic_launcher.png b/src/all/anizone/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..30ff4ee895110eb610480f27fe3013b1814a6af4 GIT binary patch literal 3892 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 literal 0 HcmV?d00001 diff --git a/src/all/anizone/res/mipmap-xhdpi/ic_launcher.png b/src/all/anizone/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..79cd46eeb55c03539dd404e001abe277d2cf69ac GIT binary patch literal 4874 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 literal 0 HcmV?d00001 diff --git a/src/all/anizone/res/mipmap-xxhdpi/ic_launcher.png b/src/all/anizone/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..47d0a46c3124af54e40d796ddf1be7e01c064c0f GIT binary patch literal 8066 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

0nDn!vJ*0+k% z7CkJY%{uA z1Jb}_wRhfpuB<3GyZFdY<8rb-$D6y*{z3JH_74XTso^RN!~ulU5bYpjA$&(c<;s~I zyJggDIx#V=`Y8zsv@1}ZU>e>-yTGwxJCLO7#Y|dPvCxIc*7LdZl2qDskC zPpzF+xk1yE8jY_{NXfV;At|Y00wmC{ZZ|;^?Rc=b0ROWjm9C0q%}`LCh02xKdBEp8 z;VUc6E-NkgzBKpXy22y7ww9dOi|;l^;Go(<@F4pjc=#cDak zAxN;r2p9wo|KNA{@dF4gCI6d@;wd%~&@%`J5P}CkxJ*Y|2S4~XelQPz+Y6a}uq$>3 zRnJ5mFbE|4n*)pIv0GPc#C~$s!hyh9rIfwari59{dLSWa^lD29JWdQM0z}V7{1!8= zy7cPHB3SW8GhAhQCE@FwBv%f5qp2JWzD&k2S>>xMzR$(~4d%1bY>R^$QWXc0o{{w5 zIZ=m|z9~F|?`$=GYmP!ew5;`5w*9oM4&?GL!^%HgrSb2u3T5Wu?Q(K(IcPYu>C1Mq z9tULlmnlLI3=v=~11A~)5|tSTjyJF>0*Y<$IAH^MLpMy1S%1q&r8tq`O->MClkxN+cwuQ9>G|C58|Lq>+w6euU&8HT1*( z6Fe`@IWP8!9c%5guf47WU2Ro-92y(|0Pxk-l=Pog`2PkL#?!37>VXLWjDWh*3&TL` zBP;B7ZKErjfY(-vF$z0OW$I{pl`Bfr8u6tmoI-|)WYlAZLqf*-VQOR}Ch>_%(eW7> z^0`8qJExsj4_Cn(-%mo;{U#;di@GO+hW!e6W!kzzOhalnypLM0mK4E(DHV|t^H7Cn zZENnG6(A%QB9gIA6hX{bH+~|z&H{^zY@dgz!rH}p7XniNdW=8jX!M{z%XijWvfx0f zcz66jNWA-5Nb(gH!tVb&n5G0%OJ}QlL0mfYDz1`#%&i|Jbtd&KrzRn-m_p|r))Z6? zi-a5OaxlF>%}vb=FE7NB!q17cygjKS>GMRM{!4zK`F+$XLk}LP2jQHfq;dTM$;UM$X+{vXOXfTMLz=s)DKdNrlaVxc0SguxLdrqqP) z|9McG1j?|(+KBV<_-GwunQ5GxF zClwBRb-R2ihA)2ssw}H|n-4SN`;#c2L$b+u@RoLUTFg$Ti_x|I)50fi-qaf;f}UK5 zA-tD;|C`+<)xWvxzH%Wx{);b*PaV2f&}aC7b$Q3XtW$zfrHONs8d>NqVts;Ta-k|#FFL&JMyp($B;wCRA zx@;Z)!9=uSMgJZYdP(>FqJSM+#-CfZcSQ@cqnE(MFCgKvTtc@_zjg00)9>c3U69c0 zVDLTMG!ddr^mH9-cD?^q8M)hf_XA?nfYMBz6%r1*(uy|lMDi#xj(t@MYS5Kp4k2_~ zC5=S06;AW@=R933rxm{!@OCG_K1bV1C54{c3tsAUd^Xy+#MJ&TL@{WJ2M8DRsUn84 zQ_(%NZ{FW~ntZjGzny)jmkVkdwdgVJhl}E>>Nt|*PyR(0Ak(KIsy+wu0jf(|{#3$^ z6$W}KzsEGct4}lqID0`VX(f?qts;G5*w&z;7g;3`g=-{74#26@z~$Pp#stIR;?mFN z{S+}$pA;uMI#Vzkt1z>HVTcWv_b<6p1%FvThZh&=6pnMdJDOK%PL8tx4=z^^8I4?4 zU(ud-V!>`W^#v|aS@kN04xQ3@ioi2MmtioN@3}+*FX(-Lk)iRMhiY2b0r&{IyUz3RhWFa6wfYRh#;N<7-0&; zHWm5`>a}r$P;;+vf+JYrqRE&i6YVgeYX&<6rcf%cv0$Bxs3Bbjriox{{Q6INK+rDA z==*GHA4VDnP-c)0c!;@d1biObCW6Ji2o>NZ$B=vhY#=E6QclS6F%NM#P+W-XK4p3C zA(He+8fm5f&N*sj+c4m(Y4mq?9_Z{pTrcej;g|z68<2cfC=DrRGO=x(XT8pW=+tL5 z?ITwv9bydWw0K~gzg4on^WHXWCdj-1GT%TDV=Vn7U|%o-kLVrL zwH1pIE0p*%P6gAVdgR90!w$}uXVHg?imI?tttf-TZCSvEqGU~+@i5vb7`P|ne0m$^ zsnDXzh*DNlqR!=x9@U9WaeNSnmCtY}eugUw?Bv-0Ps3qAg1m|jEhZU|0EQOCF^HI< z8Bs+-Lg?WocQ{EKgZtU|5jALPZ|%*`d1(q<{%2N?-3jQBm=O=rCT0aa<+e`DW?mV; zb;>BR$Kyc7#=pGOYSad3;go{qScuoNSc8sas5P=Q z)BX4Hn!JyHhG20|=qEdf6TM^mS{ceha-+Mgiy)-A`!u*=NS#42 zfF7 z`|SpqPjpxB*SZ=9Nsa9D6T=!#h6mlwR^i)$viJK$@j~y`$^2(lr~{HRcp%m@XC#P= zr`=J%%40sK1I(}_GUV2t98dhqp-9Q!>`Y)TJU*_IPb)m;SPEl%g;y2*6*-ImI*IVj z%E+#8+TY(Nf+k znhbCpDg0`9@=r>o7MYI`e%?W@XJEw9g1u+bSFs;6hdOibL43UxMT@Up==`}HcCgb1 z8+C#YpzTmfjgh~D>6nwZdEZ;(8PFEl0CY|kwRdA@aRawwmswuH5wEb^~Z7li}M`Sa!UO;mTZ> zyliKw1)sxagWH zG!7sFG*0~o=y9~n>y;7?ARwh>)v^+}W|&#Yzv_9Nzt{&UD0*lt(EKR)j;0Ldg4v5j z%|)k+D1)D5_kG&u7K(>4xTmOtW1h^yzzck9&WwXs8g0#&y|iFWj7<7cvYq+<-p^hG z=Pu)6D;*H|^-K0ceE-1TYh`RGnt|h58f%~*xspXcf5mkv&nP{2V{ev>;56FQzVU(E zMMr&&B~D#W7an;PE`KgOYTjd!K>G5*-JE@Unlr_vUi@`7Fp)afpSxsAN&XvxC5r6W zEXQ}p44CUkXN46&G>z{GbO>@>bCe->r4Xv6@8~kC?OAlw%zQ_kFQrSSNl87VlHeCh z=3o^zkYOZ0$<}^Lwb61Fp-s#f-}6750!Wh7Wx`}wM9Lq@+Q?ybq=Tv8er%TDOF+Zs zW}U+g3jx`4g4JKuEEw{j;j#xr$3T|+V97xrfAG$h-jbO<4sWz#7mHWvIgUHHr2u_5 zDR^MVZ}&hu3*1&7N{-os_7l9pS(78z#4`8&Yt`rVB1*CFAt9>UE#f%t)fhh#3Nq zBMg|7>p$QZhpfC|@)>3SbTh3%CFR7FYX!MeDY2;`f$a;9pOXvA!t&s%jBMW;UTxQ` z>o%d3StX1}JXV`1X#(iI&0=^_4jq{B7T`*7(Z8E#2@59txJ6or1)aAEpMQ>QocEwx{v|?Z|aLWJeaI)-l0?^$Y%p zsZz0|g7{crsS)*gT9b3NjetF>)pdWe{4w}J6*wh+_o{6&6oZQbYbs*30y!~U9hz7I z*IAPOGYn*&>{oX&z!cTUputcI?i?Ii3OxI7@|U5v$M>p?(UI-?9hx3aG9i3u$A1L~ z{Eu*J@JTWYUXx90!?xw`u{{gJI0Djhn1Qmkc1EBK!t;i?_~uOyWnn1F--2;ykZ1mm z;cz_wvb=7y;=leXZZh)PrtT_4vQY>8qHx2bz$uw$>_zNYqS+{mVF66HE5G0M+751z zT;lVh>)QCpb;|eI-OVn&YL`3($t;AZAx)IX6m+ehZujHYy6!&7?Kk<82`luC$0q!B z>g9>n-+~iAyuqcO#WE4al!jJ+{}Rens`3P+Tn6+d6&#l}rM5l=npo>ohm3eZ)sNjAi55D0% zzBe#Ek@OCwtPJu*CnkPAD{>%*9d6mXCV0Xi3?UMxsf`eZg^oH$xLKObmjYX)ue6I~ zCwI=`;IX(%NOBfvtk4fvrZ-$!_ec(z`KvH4FvPfbRvLb1OGM0{`tvZK&Qmh^q@7?r zd|Pk3jD;bzl_oeDWlD9&e6)G_p_54MmoD?rc}3&D_nAwF;|q^RT-G`4+mt-w3fYki zs0SylqO7UX&6llXlE_Kl$~89#;!V{w%b(w0#S&p`ss>-~%vUT8CGdN0k?5S(%|yAA z+3w|(;)>+_K=Txr+DHqyh@P$K8n`41@;m!O( zHHu<-L`LVl2&B2>C3sJ2j=U97Nvv;~MHY@D8h74~$QVZX^J_j8*&F zYVZokJbtq$4NIQIXm8!HUkiv1HZc$zJ-h8Vqn>KmqHPG9l<(-hzgdEE>i>L@Kn&YF zM9oh&26^Lm=7W2&OdY!(jf^w~n8lF8)FPRfZE|u`PC^JT$p>8sk#Cl-I-ob@qs-A* z-{!u15nW2Tgn4AwS}S-j|9KNNBHZ!r)^?6mx4!&7S!7r{-`Ob{#B0#JOY)KfOhG(Z z&!!*Q9O^NDNZsCLuTFl5R+rG(xRko;e|yUq(w&+H1V0-LCA6hPS-SoeH;KNoK4Nql zyoflA!d$vk@mvd&-oUh?Z+sNQA9I-x6RO!bZ$omCGJ8^>_1;fa@VGlXdL?IK_SEY< z(pZQ2`KCTRMZHa38lQ-hoezr<4DdK|u(S5(FGy?ZY$Q7;EwS%Wd|NXb(0j>^O>M$j-e+Ok@hQMmVdfIw;(wOEMKIWtE1?Ru|ET2w>K_)P|nXZOz!V_uiU_}P&g zeHeF7$etkKDg_5@*!4NZVXUOXxE7Y0B~Lv+&H%WkyPFh7c=Cnb{aBWf_#wq#@57ap zwq1_-xZ1kWrnJ0=&4JP@B<`k<+H-l zn$9aYH^SWC!gZA|`~FTI9R`vf4IGRYeZq5JoO4T4aBWQ*7CJsSm%8h5Dys94vLps2 z^y+r<+Hk*YGC%zC{`zC*3;WXXaS|!~n)L?!Px2Se$M)jABF#_b8|N<38Kju(i>m!& zT{0rU_`(y7OxR<|m+1IdKx`_EcF}uPv$j|ntpn-yVA9*LR7@zky@DBUhGIesCv#-V zJL@e8mgEXM)oSBOY*V;SYk113?^K|1FESuqM9<9MN(OuQgkRZ?{udV2h&MrA9ie}`!Loiom# z8WE~{;|i)rq&O!j7eB~AjxQ$3Q$oV!L(aIkqW?%;+6TfpCROXZoKF( z8)~;$h^9Ky^{2CeFubOV%HqG)f6?nczQngSqb>d3>pcuJ40NPjb1X{h^6XfQUM?iU z9%~VrE?kXnq?&SXZ=TILR8w51qgOAl)6LT#*I5)${ABzwHG;c2zVu){bV$6A@C?*x7ZHFR?P0zmGM(?-boK_uxdR@FFHb*->m!T7B2F;8zbin zFqiHk7$4e5fNb3JuzzwZLiQNXY&RbEIFs0B{1eI160CQVXX|6XlB~#Fq=z-Vp?gCs z!?RZ;3kJRjBqNdx*j&kH3W_j(yXEtAowF$;@~9^j9}H`jA7)>j%j8^K)0Di=9HqEA z63z;vc}qjs>qQXCwY|OQM*u_K^c&{P5D7q!L0bBBk- zn`UHAl03`jwNFTf%m3GbSsXq7_TlEMGnqY{7T0z^A4;omblq|MClPSg&{o%oa{6_f z%^xNhYcsGB;efU=RPd|*5Ib-WKo-8jJo@8`Ei}1r)25hIQ4W!*peoFSr{q>Q(7kS- zu(=5QXmrpD9jjQ!VfVqp>{(8Hf_cn^Wx?AsNc6l<8DVnf%@l@HjJ;oSp%(|srpt9})`jRr{Exo{dY3#Pg~I0p`8};EFaOJYAM&V4CHveb z5AS)G4650#+|raB`YM5^4G}+avv)!ER9Mo%4>FN`F0B@t|CU)+>rAS* zkzLs<#4P%jQpo3ds`Wm(_p{8p;W84{=zMfP{}p|7xUY=t)fy@7dHWEk_+j+yq|re4 zF%9w6p7?tL-tiOMctX^8Sw*$8j~8cs`j|F$OY$|tvfmA&tB6HaXvL7>N3j$c@$Y)K zJk#5n!^yRqP6)lC7?cj9 z8n0^w_Ws_MLF03+X~Y?v`Am<-_;Et5skJ*E8uy%ND~8YqmFiJylWlg}%e53u)j{FB zs8NkF+mVn-?v12Y+a-*^^a7tg24aiEz;NnrcXEnT2xrkl>DE)G1PkExA$R9#tJH`A z{PXoLqago?1d4aa!|7w~*8JjPm#pG9R2ZTMVoR*`QmCY@GT5O%XZ-if-a>yu3{uPF)`putS zf|O!s0-6A_8T`KPVvLld|Uoe-__(Dlj3<@`NY)>!ETNv3x z0OB=E^R9*yM72xACB00)bF}r@cvHL#b7!BG@2sjn8P|l+xQM^J!ee96O(hpNJgsm< z9jU5Lhy>F@W>=1s@TyykqdQHwJi`oC;-b-IM*52wj_v0PI}V>#N{Nn<|C^*yzj(S=rrBX7a^e4Kh)@H>SHrR(c6>LqKs6&?Srxlf zIwaxWQy2@=rhtDMo%O%ub#uo;6(tpM8Tqy_%L|}qoYTYXr0MZ8YBZfgUWwZk>CQvX zF)>L<4x;cLGcw|jRyHUyrbpFnG$+w{3$5!-o~W!cn8?D`Ln>=}6AY1l9iQIhVjVRD9+&;14TFdYKD#+H)~@npr>Sa1w7;cdUQ4+6S`&o7DHEjzRxEw|!k6@4Tf7L$ z{eF3m8_=ZasgvI-*JJete&D}I`uhpmEGFy53>Wg-E)T&|(tBwkM*KFuLYg;croalUuV+lx6KZOlV&`W&!F;2Hr`KJ%xaj4; z98P3;DRxJ4_$%6k?BZZXt+PQ>k3G1beXCVF|!iBCaCCfo%LQS zP;=A$klNo~>EafnKgfTKIpVxHxWqs)@VGJLi&39&kLW9Oty>9{OvGn}A3a#{p0LgB zBH26;CIN$qm*OfBFp22<7HC*FeA9(#6L!+uY=)2OA;DArYTQW1TQseytVJb4PdITS zraFNLp1OS;{2w}NomkBUk$B|JjMX}2i+a^Aqlv!zK+ z{nrUjs<&0;>tKk$bh92_ZhAiCK%S2A?Ey=@^O1_byQK7kzx zz;4|0;8Y7}?wO_zCYHxCW`lNrGTIyv48*FH$-2Dv!*dg5(DoS2!j#o0FEaWhx`W*c zJ;DhpG1Hcbx}zHx+b}zy5`??bo1IOWvi0G1F`2j5 zbNzGmG#%nh!>6~u?a3o=9{H@xP2%YC-$st(*by4s2B!eQi-VSg#rSOIYayiX4;IW} z+&k(Yo=G1`$7FenlaX0< z3DyT_))uym86fElCz&OOV+{?aIEi${Gu-(W&$u;NKTL zu1sj&^G1-k!sCUJX>?AFoy^)-4}LJua6_IkBGG2lzduyegC&$w#xi_k}kl z<0hm>KE9y>O}bm7Ig;Umcni|-%469EQqh1$P!Y+mC_{J`R7>Ol@u5Tt6(^}6Ry<#c z1c!TNbF#y3Z3AB0j*aPqlC)B`$``Ik*_!)Jhd2QWVRRIKeig7Ct8^u zf;Z|GQqYmABUErJFr+T#%%Bg8Q{yiHU>yCA3&1zU85K)|5<;`e^{;MCnz5)1zX}E@ zp(il`8BF$^T|J>Izl{Hj!`UCY7<>+L1laAlLkg!+W99EXN`T(()&v)xJJ&z&0HIh#&aJx`jaJ|^fRC!!!{dU~FXhX*@6x>B*6uL8@JEx9-i9;r*3Q@xRcbQghAw@5nQLkjo)tI$inTnR1{|Xixi8876fq!<$?W7pF->DFn+=-oNqNJJvCINS9~O!0O4wd%dy&z-6@#i?tl^r$cLVQ zzxJiGx7_8o=%73W)% zVj<6fhCTtLOpna-CgI#~^51g54K@FIQXxkO= z7zx1B-(?Q|()2hi{`{y^hz-}+6{V;jnUq|A^X+-LFNQe40MrO8s8lSZ)Q~bYP0&k& zR3lE1ClkL9L?O_V6n+kv=gH&?UU%2exs3S)7h%MFmL=Nvb0iBdUykk`zOT$HR#leR zuKY}jYSQ)Lw=o`aZTAViMQmAQPfWuYDxg6q7FobQ5$K|XM+!XB!&rYt=>1lqJ0s`& zEzBiQ zy$0|r1+iN~L;~2*<6I9xVn^33#am1-xDu{$qWo<=9FuinRu=Vm#^buI=y!WjU%t<{ z`9`0cj6*|t<99ltDjhvLKq0h9|$~`@xdtP3L+=; zC9Be$DdN<BSHOZYC+CVV=V+qvN`2r@s;b^U$A2J2js%eEW>vSF&2{t;D1_8>8hhV%s59CQdAR{*Vi6RH4LkHZr%Y8kSo}f8%-ecXwe}ckj1CdL=`A2H1_M zhERKduQBkM65cWjLV0e5Tg?uB!;2rl-XlVf-!+p=Y zYuFcG;J5RE;nQ{Uj;BuesO&hY<=sA8CAZ-tv(C)y_&+-dBth7+f> mrqPoOY7}k#P&p5OM3eH!kl3`8tbO9b0qV-yN_7ghQU3=s^c)`m literal 0 HcmV?d00001 diff --git a/src/all/anizone/src/eu/kanade/tachiyomi/animeextension/all/anizone/AniZone.kt b/src/all/anizone/src/eu/kanade/tachiyomi/animeextension/all/anizone/AniZone.kt new file mode 100644 index 00000000..863b450b --- /dev/null +++ b/src/all/anizone/src/eu/kanade/tachiyomi/animeextension/all/anizone/AniZone.kt @@ -0,0 +1,513 @@ +package eu.kanade.tachiyomi.animeextension.all.anizone + +import android.app.Application +import android.content.SharedPreferences +import androidx.preference.ListPreference +import androidx.preference.PreferenceScreen +import androidx.preference.SwitchPreferenceCompat +import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource +import eu.kanade.tachiyomi.animesource.model.AnimeFilter +import eu.kanade.tachiyomi.animesource.model.AnimeFilterList +import eu.kanade.tachiyomi.animesource.model.AnimesPage +import eu.kanade.tachiyomi.animesource.model.SAnime +import eu.kanade.tachiyomi.animesource.model.SEpisode +import eu.kanade.tachiyomi.animesource.model.Track +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource +import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.POST +import eu.kanade.tachiyomi.util.asJsoup +import eu.kanade.tachiyomi.util.parseAs +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.add +import kotlinx.serialization.json.addJsonObject +import kotlinx.serialization.json.buildJsonArray +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.put +import kotlinx.serialization.json.putJsonArray +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.Request +import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody +import okhttp3.Response +import org.jsoup.Jsoup.parseBodyFragment +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get +import uy.kohesive.injekt.injectLazy +import java.text.ParseException +import java.text.SimpleDateFormat +import java.util.Locale + +class AniZone : AnimeHttpSource(), ConfigurableAnimeSource { + + override val name = "AniZone" + + override val baseUrl = "https://anizone.to" + + override val lang = "all" + + override val supportsLatest = true + + private val json: Json by injectLazy() + + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + + private var token: String = "" + + private val snapShots: MutableMap = mutableMapOf( + ANIME_SNAPSHOT_KEY to "", + EPISODE_SNAPSHOT_KEY to "", + VIDEO_SNAPSHOT_KEY to "", + ) + + private var loadCount: Int = 0 + + // ============================== Popular =============================== + + override fun popularAnimeRequest(page: Int): Request { + return if (page == 1) { + loadCount = 0 + snapShots[ANIME_SNAPSHOT_KEY] = "" + + val updates = buildJsonObject { + put("sort", "title-asc") + } + val calls = buildJsonArray { } + + createLivewireReq(ANIME_SNAPSHOT_KEY, updates, calls) + } else { + val updates = buildJsonObject { } + val calls = buildJsonArray { + addJsonObject { + put("path", "") + put("method", "loadMore") + putJsonArray("params") { } + } + } + + createLivewireReq(ANIME_SNAPSHOT_KEY, updates, calls) + } + } + + override fun popularAnimeParse(response: Response): AnimesPage { + val html = response.parseAs().getHtml(ANIME_SNAPSHOT_KEY) + + val animeList = html.select("div.grid > div").drop(loadCount) + .map(::animeFromElement) + val hasNextPage = html.selectFirst("div[x-intersect~=loadMore]") != null + + loadCount += animeList.size + + return AnimesPage(animeList, hasNextPage) + } + + private fun animeFromElement(element: Element): SAnime { + return SAnime.create().apply { + thumbnail_url = element.selectFirst("img")!!.attr("src") + with(element.selectFirst("a.inline")!!) { + setUrlWithoutDomain(attr("href")) + title = text() + } + } + } + + // =============================== Latest =============================== + + override fun latestUpdatesRequest(page: Int): Request { + return if (page == 1) { + loadCount = 0 + snapShots[ANIME_SNAPSHOT_KEY] = "" + + val updates = buildJsonObject { + put("sort", "release-desc") + } + val calls = buildJsonArray { } + + createLivewireReq(ANIME_SNAPSHOT_KEY, updates, calls) + } else { + popularAnimeRequest(page) + } + } + + override fun latestUpdatesParse(response: Response): AnimesPage { + return popularAnimeParse(response) + } + + // =============================== Search =============================== + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val sortFilter = filters.filterIsInstance().first() + + return if (page == 1) { + loadCount = 0 + snapShots[ANIME_SNAPSHOT_KEY] = "" + + val updates = buildJsonObject { + if (query.isNotEmpty()) { + put("search", query) + } + put("sort", sortFilter.toUriPart()) + } + val calls = buildJsonArray { } + + createLivewireReq(ANIME_SNAPSHOT_KEY, updates, calls) + } else { + popularAnimeRequest(page) + } + } + + override fun searchAnimeParse(response: Response): AnimesPage { + return popularAnimeParse(response) + } + + // ============================== Filters =============================== + + override fun getFilterList(): AnimeFilterList { + return AnimeFilterList(SortFilter()) + } + + private class SortFilter : UriPartFilter( + "Sort", + arrayOf( + Pair("A-Z", "title-asc"), + Pair("Z-A", "title-desc"), + Pair("Earliest Release", "release-asc"), + Pair("Latest Release", "release-desc"), + Pair("First Added", "added-asc"), + Pair("Last Added", "added-desc"), + ), + ) + + private open class UriPartFilter(displayName: String, val vals: Array>) : + AnimeFilter.Select(displayName, vals.map { it.first }.toTypedArray()) { + fun toUriPart() = vals[state].second + } + + // =========================== Anime Details ============================ + + override fun animeDetailsParse(response: Response): SAnime { + val document = response.asJsoup() + + val infoDiv = document.select("div.flex.items-start > div")[1] + + return SAnime.create().apply { + thumbnail_url = document.selectFirst("div.flex.items-start img")!!.attr("abs:img") + + with(infoDiv) { + title = selectFirst("h1")!!.text() + status = select("span.flex")[1].parseStatus() + description = selectFirst("div:has(>h3:contains(Synopsis)) > div")?.html() + ?.replace("
", "\n") + ?.replace(MULTILINE_REGEX, "\n\n") + genre = select("div > a").joinToString { it.text() } + } + } + } + + private fun Element.parseStatus(): Int = when (this.text().lowercase()) { + "completed" -> SAnime.COMPLETED + "ongoing" -> SAnime.ONGOING + else -> SAnime.UNKNOWN + } + + // ============================== Episodes ============================== + + private fun getPredefinedSnapshots(slug: String): String { + return when (slug) { + "/anime/uyyyn4kf" -> """{"data":{"anime":[null,{"class":"anime","key":68,"s":"mdl"}],"title":null,"search":"","listSize":1104,"sort":"release-asc","sortOptions":[{"release-asc":"First Aired","release-desc":"Last Aired"},{"s":"arr"}],"view":"list","paginators":[{"page":1},{"s":"arr"}]},"memo":{"id":"GD1OiEMOJq6UQDQt1OBt","name":"pages.anime-detail","path":"anime\/uyyyn4kf","method":"GET","children":[],"scripts":[],"assets":[],"errors":[],"locale":"en"},"checksum":"5800932dd82e4862f34f6fd72d8098243b32643e8accb8da6a6a39cd0ee86acd"}""" + else -> "" + } + } + + override fun episodeListRequest(anime: SAnime): Request { + snapShots[EPISODE_SNAPSHOT_KEY] = getPredefinedSnapshots(anime.url) + + val updates = buildJsonObject { + put("sort", "release-desc") + } + val calls = buildJsonArray { } + + return createLivewireReq(EPISODE_SNAPSHOT_KEY, updates, calls, anime.url) + } + + override fun episodeListParse(response: Response): List { + val document = response.parseAs().getHtml(EPISODE_SNAPSHOT_KEY) + val episodeList = document.select(episodeSelector) + .map(::episodeFromElement) + .toMutableList() + loadCount = episodeList.size + + var hasMore = document.selectFirst("div[x-intersect~=loadMore]") != null + + while (hasMore) { + val updates = buildJsonObject { } + val calls = buildJsonArray { + addJsonObject { + put("path", "") + put("method", "loadMore") + putJsonArray("params") { } + } + } + + val resp = client.newCall( + createLivewireReq(EPISODE_SNAPSHOT_KEY, updates, calls), + ).execute().parseAs().getHtml(EPISODE_SNAPSHOT_KEY) + + val episodes = resp.select(episodeSelector) + .drop(loadCount) + .map(::episodeFromElement) + + episodeList.addAll(episodes) + loadCount += episodes.size + + hasMore = resp.selectFirst("div[x-intersect~=loadMore]") != null + } + + return episodeList + } + + private val episodeSelector = "ul > li" + + private fun episodeFromElement(element: Element): SEpisode { + val url = element.selectFirst("a[href]")!!.attr("abs:href") + + return SEpisode.create().apply { + setUrlWithoutDomain(url) + name = element.selectFirst("h3")!!.text() + date_upload = element.select("div.flex-row > span").getOrNull(1) + ?.text() + ?.let { parseDate(it) } + ?: 0L + } + } + + // ============================ Video Links ============================= + + override fun videoListRequest(episode: SEpisode): Request { + return GET(baseUrl + episode.url, headers) + } + + private val playlistUtils: PlaylistUtils by lazy { PlaylistUtils(client, headers) } + + override fun videoListParse(response: Response): List

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 diff --git a/src/en/asianload/src/eu/kanade/tachiyomi/animeextension/en/asianload/AsianLoad.kt b/src/en/asianload/src/eu/kanade/tachiyomi/animeextension/en/asianload/AsianLoad.kt deleted file mode 100644 index 21a39d62..00000000 --- a/src/en/asianload/src/eu/kanade/tachiyomi/animeextension/en/asianload/AsianLoad.kt +++ /dev/null @@ -1,207 +0,0 @@ -package eu.kanade.tachiyomi.animeextension.en.asianload - -import android.app.Application -import androidx.preference.ListPreference -import androidx.preference.PreferenceScreen -import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource -import eu.kanade.tachiyomi.animesource.model.AnimeFilter -import eu.kanade.tachiyomi.animesource.model.AnimeFilterList -import eu.kanade.tachiyomi.animesource.model.SAnime -import eu.kanade.tachiyomi.animesource.model.SEpisode -import eu.kanade.tachiyomi.animesource.model.Video -import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource -import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor -import eu.kanade.tachiyomi.lib.mixdropextractor.MixDropExtractor -import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor -import eu.kanade.tachiyomi.lib.streamwishextractor.StreamWishExtractor -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.Request -import okhttp3.Response -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import java.lang.Exception -import java.text.SimpleDateFormat -import java.util.Locale - -class AsianLoad : ConfigurableAnimeSource, ParsedAnimeHttpSource() { - - override val name = "AsianLoad" - - override val baseUrl = "https://draplay.info/" - - override val lang = "en" - - override val supportsLatest = false - - private val preferences by lazy { - Injekt.get().getSharedPreferences("source_$id", 0x0000) - } - - // ============================== Popular =============================== - override fun popularAnimeSelector() = "ul.listing.items li a" - - override fun popularAnimeRequest(page: Int) = GET("$baseUrl/popular?page=$page") - - override fun popularAnimeFromElement(element: Element) = SAnime.create().apply { - setUrlWithoutDomain(element.attr("href")) - element.selectFirst("div.img div.picture img")!!.run { - thumbnail_url = attr("src") - title = attr("alt") - } - } - - override fun popularAnimeNextPageSelector() = "li.next a" - - // =============================== Latest =============================== - override fun latestUpdatesRequest(page: Int) = throw UnsupportedOperationException() - override fun latestUpdatesSelector() = throw UnsupportedOperationException() - override fun latestUpdatesFromElement(element: Element) = throw UnsupportedOperationException() - override fun latestUpdatesNextPageSelector() = throw UnsupportedOperationException() - - // =============================== Search =============================== - override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { - val url = if (query.isNotBlank()) { - "$baseUrl/search.html?keyword=$query&page=$page" - } else { - filters - .filterIsInstance() - .firstOrNull() - ?.takeIf { it.state > 0 } - ?.let { filter -> - val type = getTypeList()[filter.state].query - "$baseUrl/$type?page=$page" - } - ?: throw Exception("Choose Filter") - } - return GET(url, headers) - } - - override fun searchAnimeSelector() = popularAnimeSelector() - override fun searchAnimeFromElement(element: Element) = popularAnimeFromElement(element) - override fun searchAnimeNextPageSelector() = popularAnimeNextPageSelector() - - // =========================== Anime Details ============================ - override fun animeDetailsParse(document: Document) = SAnime.create().apply { - val vidDetails = document.selectFirst("div.video-details")!! - title = vidDetails.selectFirst("span.date")!!.text() - description = vidDetails.selectFirst("div.post-entry")?.text() - thumbnail_url = document.selectFirst("meta[image]")?.attr("content") - } - - // ============================== Episodes ============================== - override fun episodeListSelector() = "ul.listing.items.lists li a" - - override fun episodeFromElement(element: Element) = SEpisode.create().apply { - setUrlWithoutDomain(element.attr("href")) - val epNum = element.selectFirst("div.name")!!.text().substringAfter("Episode ") - name = element.selectFirst("div.type span")!!.text() + " Episode: $epNum" - episode_number = when { - epNum.isNotEmpty() -> epNum.toFloatOrNull() ?: 1F - else -> 1F - } - date_upload = element.selectFirst("span.date")?.text()?.toDate() ?: 0L - } - - // ============================ Video Links ============================= - override fun videoListRequest(episode: SEpisode): Request { - val document = client.newCall(GET(baseUrl + episode.url)).execute() - .asJsoup() - val iframe = document.selectFirst("iframe")!!.attr("abs:src") - return GET(iframe) - } - - override fun videoListParse(response: Response): List