From 055c99be5a61b1e8209b28a0c445f3472dbfca24 Mon Sep 17 00:00:00 2001 From: Claudemirovsky <63046606+Claudemirovsky@users.noreply.github.com> Date: Mon, 22 May 2023 22:05:11 +0000 Subject: [PATCH] Yeet onepace and netfilm (#1637) --- src/all/netfilm/AndroidManifest.xml | 2 - src/all/netfilm/build.gradle | 13 - .../netfilm/res/mipmap-hdpi/ic_launcher.png | Bin 2267 -> 0 bytes .../netfilm/res/mipmap-mdpi/ic_launcher.png | Bin 1319 -> 0 bytes .../netfilm/res/mipmap-xhdpi/ic_launcher.png | Bin 2925 -> 0 bytes .../netfilm/res/mipmap-xxhdpi/ic_launcher.png | Bin 5195 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 7094 -> 0 bytes src/all/netfilm/res/web_hi_res_512.png | Bin 31451 -> 0 bytes .../animeextension/all/netfilm/DataModel.kt | 85 ------ .../animeextension/all/netfilm/NetFilm.kt | 279 ------------------ src/all/onepace/AndroidManifest.xml | 2 - src/all/onepace/build.gradle | 13 - .../onepace/res/mipmap-hdpi/ic_launcher.png | Bin 43739 -> 0 bytes .../onepace/res/mipmap-mdpi/ic_launcher.png | Bin 43739 -> 0 bytes .../onepace/res/mipmap-xhdpi/ic_launcher.png | Bin 43739 -> 0 bytes .../onepace/res/mipmap-xxhdpi/ic_launcher.png | Bin 43739 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 43739 -> 0 bytes .../animeextension/all/onepace/Onepace.kt | 193 ------------ .../all/onepace/OnepaceFactory.kt | 16 - .../all/onepace/ZippyExtractor.kt | 28 -- 20 files changed, 631 deletions(-) delete mode 100644 src/all/netfilm/AndroidManifest.xml delete mode 100644 src/all/netfilm/build.gradle delete mode 100644 src/all/netfilm/res/mipmap-hdpi/ic_launcher.png delete mode 100644 src/all/netfilm/res/mipmap-mdpi/ic_launcher.png delete mode 100644 src/all/netfilm/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 src/all/netfilm/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 src/all/netfilm/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 src/all/netfilm/res/web_hi_res_512.png delete mode 100644 src/all/netfilm/src/eu/kanade/tachiyomi/animeextension/all/netfilm/DataModel.kt delete mode 100644 src/all/netfilm/src/eu/kanade/tachiyomi/animeextension/all/netfilm/NetFilm.kt delete mode 100644 src/all/onepace/AndroidManifest.xml delete mode 100644 src/all/onepace/build.gradle delete mode 100644 src/all/onepace/res/mipmap-hdpi/ic_launcher.png delete mode 100644 src/all/onepace/res/mipmap-mdpi/ic_launcher.png delete mode 100644 src/all/onepace/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 src/all/onepace/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 src/all/onepace/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 src/all/onepace/src/eu/kanade/tachiyomi/animeextension/all/onepace/Onepace.kt delete mode 100644 src/all/onepace/src/eu/kanade/tachiyomi/animeextension/all/onepace/OnepaceFactory.kt delete mode 100644 src/all/onepace/src/eu/kanade/tachiyomi/animeextension/all/onepace/ZippyExtractor.kt diff --git a/src/all/netfilm/AndroidManifest.xml b/src/all/netfilm/AndroidManifest.xml deleted file mode 100644 index 568741e54..000000000 --- a/src/all/netfilm/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/src/all/netfilm/build.gradle b/src/all/netfilm/build.gradle deleted file mode 100644 index aeb08c94b..000000000 --- a/src/all/netfilm/build.gradle +++ /dev/null @@ -1,13 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply plugin: 'kotlinx-serialization' - -ext { - extName = 'NetFilm' - pkgNameSuffix = 'all.netfilm' - extClass = '.NetFilm' - extVersionCode = 2 - libVersion = '13' -} - -apply from: "$rootDir/common.gradle" diff --git a/src/all/netfilm/res/mipmap-hdpi/ic_launcher.png b/src/all/netfilm/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index a067097ecd371feb6214d44b735b104d12b2336a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2267 zcmV<12qgE3P)Wsm4fRKx-(_wGRr*tKD|HJG-;%Ioq8wot--~ZE3lSJIQ=td+(il ze)B))o_p_HOc1{`37F!1v({S8kdTnD#K@Cl zt&HFAuidq4*Gp^HuD!`pk`^Fab93|3+}zyH&1Uo1STo*8e}lnbXIop_>b$(XAF;e& ztquzi{qDGS?b^DGjEs%wTCwg{s=Pv>P|)RaZOP2c{0Iwp@s+TSFdi$ z%F24z$lHk3G94WqA7^K0zmNUzQFAjEAPWI%Z*Sj(m8)Xacq9Er5p2uJ$&mm>1#2xp z$p~oU{{+wn2(w#lG>Zf3Q&1cb%iSU_HgbRj4}b^r(U76U{cbl+rVu#N1K>!s>4pk1 zAcEUvhLEV2*UFm0qDh#X*b}vzA8|mJ&H^-i0}${bq^Lns);ZbVsGQj*!jv*MJh3DN ztacg`*q7_t9jMuo0zP+NIko2u_zl~)CICG33P90Z9sqrfSr!6fUJ7uMF{!y8D0#yS z59c^Et+?KC2Y&vr4^X%%l^4M^ptA^w6r_4F;80n!H3*ZRb-}EqnL2=OBcRkiKn#^W z5P;N-OUm#;>DxV!k@XN0()Er$Kwfe&1L~oMxNykx+6UzCyvPz|}53ZN)eMxM*Bg7jQKKCnf~ znk^WMp7z4b6=QHj8wMcRv-t!x2sp~&I&oYtl&%5DoG`|)f>`R|&&3X^k78PRk@9aQ za}WxPd!cw$Vw9V)Tud$YNObv9kOGiq!l;($MU-bt^T2|)f{-&Yd4P)40BOPDT0ujF zBM~Vq>4rHg6T$AFC8@safdJ&E^*EhND`rSl6Ve4Je$xxNlT(?1^wh(Zf|_tHcJ_cq zCLJ-;2plSELg5t63&E2wn7|g9fyfnPv>k3@P*XhuVgzaBNYyV1tw}8wa^U7taV5a` z>CrA`L_J{z*>SS^DhHEQEkLUA2;qb*0WgW`Su@q4T(Mx54`<_6j764k3_4DUVy7aL z)|i*sXg1F?AQl{YyOzwGkdreOTF%`K#A<3=@Qwfz9xSBGDd4@Mz49nmA>V*>MyV+)+F(|B zHu!piaAG$=`+0W2cBF~$=(1aI{_t1~((Dah<>(f6G42$k14fD*Ggo!Nv{IT*nBd<( z{ZP9d{Xucb4NlIx0iLVr5ER%Tl_>;YfcEPrijo0j_{4H2%v&)Y@RJ%4yds?b$`8%I zVpbRdY&6$V4ervsjw=Nj1SA=rxA+pwe?C79h_2>yemJwof@{vWwIf%d0Y$RPhcjt( zu}SxPSA!D8dL2N@orqinv_J;PeN%*=wg;fAB{Gcb4CQh)DqTyeD!CZffLL2Jxr>_+ zP(i(hvJ!u|$T0(yr@xA$rb^1YC8C3Jjq7_7C1iv5Ze{jR)TFiO; z8WUNDTgd}gh<}Axr1w?lCdVFyDyKZovh>U21gcA* z$cIzP5nJOq`~fnsFDBV%1Q3;Nxzvf-wFSD{2JW$e6OgeXg!`d9KtX%ypE4XZ8}irbUL>d6co^bIyx_A_&8MfKwV8uO+{&G z=?<&anl>689_?q~nN>HQey&0rzmEWlI&q?P;xM7OxOn{Dy?ehbEG*QS(Tuif_vU$c zCiiSrRn_Z<4jpo0iW#|Jwayn&+@XD#)EP5oWLH*J&O=`=sy=Gw z4*o%SUcR@rwY7QAo;|0~z1kvhNIj~bQ0N`Nk|5EPnm%Br1seKIuioH$J~}l>Ap}Ce zyEk&vF&z5O22?L2hLTIsrnqz)sWUp}4(%xfiGWD=u>NZbsS5-}x`);+zG@L9>DKI7 ptgB(fvBv@FAdUly0~($e{s)1+%9Qi&!eRgb002ovPDHLkV1fk(D1!h1 diff --git a/src/all/netfilm/res/mipmap-mdpi/ic_launcher.png b/src/all/netfilm/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 4cd35acc3c04c68c7103eaedb6f456821b93f8e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1319 zcmV+?1=#wDP)Em_7{?zwY3nr~ZIiVt+6EIXQrXb76HLTkYn!I-G z|L^&FAN#EY8+?;CxPEvD5VQxqJV3`}YY$4NY2CPle`$AZLV&TcvFOmy&?n8!%>$Ao zbp)lJ?rWN6I-k#99vvMWNu^RNycQ8aSXI@F(P;F&Acgby&StY;L?V%Qaok{!@c{I_ z)i8{|L!nThmgfPA#bPEL4sXSA@`4>&t|~+T9q6{j^<;fp3x;zNKc~F_C}|T2aCe;o zbfT_%Y(n!P^k4(%84NyQF{}AYl1re(BtUn&oM@Iz&@&QNmiqpc(S)1Y#K-ZP_veA@ zCjnGZa9M&#SV+mkp^plX*b;H6P%~MW7*W8;$qtAr5dJ=f65qJkNC3u~wvfl4Q{nl6 zm>Xaj0Zu4TK!92up;~X98YBQ47Gb3b{ipMgd}NaYLbU;OO10V+8~_tKyt#W0EW@*J z#vQpp0N+?4WS`H9r!jv+=tInb1-1$^?&mBTYBr$%lmVUFmFki80l*}&sG6{2k3Ox# z!MAH+!~^iwZ;S^lfVIR^lFCi!g);_pSzcHd0GT`D66XM7D%197G&p!PQqBbyKxBR2 zJ#g)Wcpj)Ho&?EZ6J9zl!ImfRw^kAt*eb+LYQ8412*4RiI8B@G61nxMBE0Z{3@e&m zu0mA+PCQ*J)&+3buZfHWaOD8a!tEM#c1K|T_evYVp7UbL0HsTV?@q;_xEgXyWNb}XzQDY z*M>Xc<^>bxXTlB@l5E2MqZ&+o6@fz58D^}v8Us+Lo7}NihXZdZ@Xv2W_~CpFplaQ1 zDy+=6LaBfuRIinw9PrHp$Ln;X*5tf-*8;qJEP?SY!OcrW`1f|$**XirU9ChA0Jez4 z&b#pHa1vx}>i?L^!%tr}m0>Cw?T%~FTo6ToBaQMvSra3yW9J>rfz4$AP0hi#A4`y1 zZ1EP)T!St}RmgV$Ubt;r)&n&5^W+lTy4LP8y=daI?cgiG70Q7+tpus$0hZG_xN#OB zpRRSJUgGUm;>f2ymC-9H?^YtYtCjAIrQTcAv&k!mDcqDQ6o-_iqxd2G?)Qv^B zbv5ZJ-uDpFm+>XN$BV5{6TZ}ny89dwW*8+{RmI2HRPgo1mbkbzZuGw2%r#D`_)h-| z0P4IFxm@ngmX;QG4-lXWaG6O%O*>Emtq)W)QM5u6pP8BYtgo+cAV9sYThGqUUPevt z-~oI`UVnv#eyH^H^lTd+A3xXI+xrSG>qLVD!R0P(Zf@@T!NI}P)6>&`p_Ux0N3_UC zV>IK?8W}Y)*whEQ74Ytw6*@W_KBTJNIx&sYGa>D37jJ+0DBfvhl6Kc)(Zhc=@Yncj dUwy-S;6I&e;!pmofMEat002ovPDHLkV1k1*c=-ST diff --git a/src/all/netfilm/res/mipmap-xhdpi/ic_launcher.png b/src/all/netfilm/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index d4c3bf66353aa7ccad286f503483a257232af878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2925 zcmV-z3zGDSP)R6n1+VrnX{}3G;g>(vN2~8E$q)-I}Rs`K;*=3h~^!t{*a9Qr-+})*j z@9w=bcVOV$^Z5O~=Q-!zlL7jrDgqg*wyrl0IsqyRflh!X6Cd)+nIjegj97_jaB%SJm6espnR}AP1?_hGPs+;5 zet{79BAOtIh8zL(|4h7drl+UhH=E6MX^boL(9s`!h(2;VKH!$q0yzT6_GjUphpKf0 zoo*p>FVeUm`T{RvwHhHHhfG=^>X79KAoG)rcRqUi(KN#GDS^;>I9r?1{l3I*Xa=J^ zH?1&ppJEC5zAWiyq(2qw0e1XILBm)yX$XiF{Al7fHr;|pw^RVm#4;l>f&^UT5fH{x zLKsqxfRR2%tOP)b2E$T10}VewQ&2={3EMR?bQdnZRWPpsa>9_F1TcV4a2vAxu=Y#0 z;fWoeVnZKG@d=1k`l&I^njj_(5V8A0C|fJtuid)P`V5R2=q~#CMcSKIKYo401QE>tRIDE_R*Ak>>9u#{i&e=i3C4_w`JulY#Y4 zN0S7cr7*NtHd$R%K&ffq9yS*SVf)JlD5+Z9UNix**1rnZ19oa{J>cw{NC4|}G~yO3 zIP;<627rd|DN1&wumAHWPl2-fW#f&O#F7zIg(vSN}ypX6!L1T7*!A@JP5>tDSGYaX>C z0c86_Fx=~fb8iT5%o6f74`3MUy;B6CS%r)8VMZ35u68v*;am_u&LBY7@B0rt{?wZJ zO}QSIA3Fc!gMq&<-Xj`Imdnqgm&7+w0+Ut*gvTBM;GxDo^Z^eq?21ODKj{oWM~eYw zJ#)Sw9`NN%4@b-@G(pd4EeZ;oAcYzb4dxO85D}lx2j_ojfYIK}{|ope3#0)lO#ol& z`R1SsHDD`W10w%y{jCdzJ2ANmM!hefz}K*>3vkt?ECFJ`b0kzX_96jmm%NzKf8!4P z<3v7qCzVezu$nDCmnlhrY=(?Ti4ov*PDA@2-7wZsJjYc$k}vXnN)jL^@zK$UkPn!X z;1JySXad^b#!b3j_P1tO9d;12}gu1dE`W@X@Eerzf*;lZ3PZJ~0kIGe4VD}M_*od} zzdjCK@2r5CiKX*Bi2y$>2oQ^ierlzLh!if;vxr(duJYSF~@Kc%qxloja00OA* z!x88_ULJlSTeMDrP*pH`75HPynIJjfx!Atu%hEo8^BKTeHhr;L_7epZ5#6}tfJ>+H!0+a*7lm=^?brZhp|Yu5+7j(GsfY^cOEf)WA(7!h6n*C=$itN`y_ z;k^LcrIo1~|rW^@_e5 z8^>iX_JSoBGhC6E@B|}H^!hG`4`wFmbEk>9OsGs&kqB3;1=T0x5;Jt|)}j-jGIu%w zIsqyppmOuN2IvH+jDX6`CtL$?@ncBrn+z(CH7T1<6alo(M=50io(j>IlarH|l%q|u zPR-8FdQB$NL)fjjzn)G6(C#Pe$jHcF%gf7alWeR>*`4w6@#`feB~N4L;yynhe1H!T z(AwJiazjJIPm^-QNz^IYv((<+{(60VJ$^el{u4B~Gh}jC;?>pF^`6aUdpL>4n{-{d zb?a9Do;`c^_Vo17i6hf^$90Cx{3%LUQGR1%W6j~ihksL5RaJxMi6!0O)$9*RK8T;K75x$DjD!_^|1rsmQp`5u@&hPtuE!KoJq{{{SL` zoHM=q!yW9o%tKAe>S?l_j;JCjr_+)MbTT_6`P}JAk`wYQ8o(!k><-QI(oK@D6Rvnf XwM3k|M1t`y00000NkvXXu0mjf0!(0d diff --git a/src/all/netfilm/res/mipmap-xxhdpi/ic_launcher.png b/src/all/netfilm/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index c9475ad6dd0c3196340be5b5451eb072a31f3c14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5195 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ⅆ&LMMQA(vy?H(%)x-GVYAM&R&!^Dxd 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 diff --git a/src/all/netfilm/src/eu/kanade/tachiyomi/animeextension/all/netfilm/DataModel.kt b/src/all/netfilm/src/eu/kanade/tachiyomi/animeextension/all/netfilm/DataModel.kt deleted file mode 100644 index 2ddf33ff2..000000000 --- a/src/all/netfilm/src/eu/kanade/tachiyomi/animeextension/all/netfilm/DataModel.kt +++ /dev/null @@ -1,85 +0,0 @@ -package eu.kanade.tachiyomi.animeextension.all.netfilm - -import kotlinx.serialization.Serializable - -@Serializable -data class CategoryResponse( - val data: List, -) { - @Serializable - data class CategoryData( - val coverVerticalUrl: String, - val domainType: Int, - val id: String, - val name: String, - val sort: String, - ) -} - -@Serializable -data class AnimeInfoResponse( - val data: InfoData, -) { - @Serializable - data class InfoData( - val coverVerticalUrl: String, - val episodeVo: List, - val id: String, - val introduction: String, - val name: String, - val category: Int, - val tagList: List, - ) { - @Serializable - data class EpisodeInfo( - val id: Int, - val seriesNo: Float, - ) - - @Serializable - data class IdInfo( - val name: String, - ) - } -} - -@Serializable -data class SearchResponse( - val data: InfoData, -) { - @Serializable - data class InfoData( - val results: List, - ) -} - -@Serializable -data class EpisodeResponse( - val data: EpisodeData, -) { - @Serializable - data class EpisodeData( - val qualities: List, - val subtitles: List, - ) { - @Serializable - data class Quality( - val quality: Int, - val url: String, - ) - - @Serializable - data class Subtitle( - val language: String, - val url: String, - ) - } -} - -@Serializable -data class LinkData( - val category: String, - val id: String, - val url: String, - val episodeId: String? = null, -) diff --git a/src/all/netfilm/src/eu/kanade/tachiyomi/animeextension/all/netfilm/NetFilm.kt b/src/all/netfilm/src/eu/kanade/tachiyomi/animeextension/all/netfilm/NetFilm.kt deleted file mode 100644 index 31d2dd0e9..000000000 --- a/src/all/netfilm/src/eu/kanade/tachiyomi/animeextension/all/netfilm/NetFilm.kt +++ /dev/null @@ -1,279 +0,0 @@ -package eu.kanade.tachiyomi.animeextension.all.netfilm - -import android.app.Application -import android.content.SharedPreferences -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.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.network.GET -import kotlinx.serialization.decodeFromString -import kotlinx.serialization.encodeToString -import kotlinx.serialization.json.Json -import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.Response -import rx.Observable -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import uy.kohesive.injekt.injectLazy -import kotlin.math.ceil -import kotlin.math.floor - -class NetFilm : ConfigurableAnimeSource, AnimeHttpSource() { - - override val name = "NetFilm" - - override val baseUrl = "https://net-film.vercel.app/api" - - private val hostName = baseUrl.toHttpUrl().host - - override val lang = "all" - - private var sort = "" - - override val supportsLatest = true - - private val json: Json by injectLazy() - - private val preferences: SharedPreferences by lazy { - Injekt.get().getSharedPreferences("source_$id", 0x0000) - } - - override val client: OkHttpClient = network.cloudflareClient - - private val newHeaders = headers.newBuilder() - .add("Accept", "application/json, text/plain, */*") - .add("appid", "eyJhbGciOiJIUzI1NiJ9") - .add("Host", hostName) - .add("Sec-Fetch-Dest", "empty") - .add("Sec-Fetch-Mode", "cors") - .add("Sec-Fetch-Site", "same-origin") - - // ============================== Popular =============================== - - override fun popularAnimeRequest(page: Int): Request { - if (page == 1) sort = "" - val popHeaders = newHeaders.add("Referer", "https://$hostName/explore").build() - return GET("$baseUrl/category?area=&category=1&order=count¶ms=COMIC&size=30&sort=$sort&subtitles=&year=", headers = popHeaders) - } - - override fun popularAnimeParse(response: Response): AnimesPage { - val parsed = json.decodeFromString(response.body.string()) - if (parsed.data.isEmpty()) { - return AnimesPage(emptyList(), false) - } - - val animeList = parsed.data.map { ani -> - SAnime.create().apply { - title = ani.name - thumbnail_url = ani.coverVerticalUrl - setUrlWithoutDomain( - LinkData( - ani.domainType.toString(), - ani.id, - response.request.url.toString(), - ).toJsonString(), - ) - } - } - - sort = parsed.data.last().sort - - return AnimesPage(animeList, animeList.size == 30) - } - - // =============================== Latest =============================== - - override fun latestUpdatesRequest(page: Int): Request { - if (page == 1) sort = "" - val latestHeaders = newHeaders.add("Referer", "https://$hostName/explore").build() - return GET("$baseUrl/category?area=&category=1&order=up¶ms=COMIC&size=30&sort=$sort&subtitles=&year=", headers = latestHeaders) - } - - override fun latestUpdatesParse(response: Response): AnimesPage = popularAnimeParse(response) - - // =============================== Search =============================== - - override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { - if (page == 1) sort = "" - return if (query.isNotEmpty()) { - val searchHeaders = newHeaders.add("Referer", "$baseUrl/search?keyword=$query&size=30").build() - GET("$baseUrl/search?keyword=$query&size=30", headers = searchHeaders) - } else { - val pageList = filters.find { it is SubPageFilter } as SubPageFilter - val pageHeaders = newHeaders.add("Referer", "https://$hostName/explore").build() - GET("$baseUrl${pageList.toUriPart()}&sort=$sort&subtitles=&year=", headers = pageHeaders) - } - } - - override fun searchAnimeParse(response: Response): AnimesPage { - val url = response.request.url.encodedPath - return if (url.startsWith("/api/category")) { - popularAnimeParse(response) - } else { - val parsed = json.decodeFromString(response.body.string()) - if (parsed.data.results.isEmpty()) { - return AnimesPage(emptyList(), false) - } - - val animeList = parsed.data.results.map { ani -> - SAnime.create().apply { - title = ani.name - thumbnail_url = ani.coverVerticalUrl - setUrlWithoutDomain( - LinkData( - ani.domainType.toString(), - ani.id, - response.request.url.toString(), - ).toJsonString(), - ) - } - } - - sort = parsed.data.results.last().sort - - AnimesPage(animeList, animeList.size == 30) - } - } - - // ============================== FILTERS =============================== - - override fun getFilterList(): AnimeFilterList = AnimeFilterList( - AnimeFilter.Header("Text search ignores filters"), - SubPageFilter(), - ) - - private class SubPageFilter : UriPartFilter( - "Sub Page", - arrayOf( - Pair("Popular Movie", "/category?area=&category=1&order=count¶ms=MOVIE,TVSPECIAL&size=30"), - Pair("Recent Movie", "/category?area=&category=1&order=up¶ms=MOVIE,TVSPECIAL&size=30"), - Pair("Popular TV Series", "/category?area=&category=1&order=count¶ms=TV,SETI,MINISERIES,VARIETY,TALK,DOCUMENTARY&size=30"), - Pair("Recent TV Series", "/category?area=&category=1&order=up¶ms=TV,SETI,MINISERIES,VARIETY,TALK,DOCUMENTARY&size=30"), - Pair("Popular Anime", "/category?area=&category=1&order=count¶ms=COMIC&size=30"), - Pair("Recent Anime", "/category?area=&category=1&order=up¶ms=COMIC&size=30"), - ), - ) - - 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 fetchAnimeDetails(anime: SAnime): Observable { - val parsed = json.decodeFromString(anime.url) - val detailsHeader = newHeaders.add("Referer", parsed.url).build() - - val resp = client.newCall( - GET("$baseUrl/detail?category=${parsed.category}&id=${parsed.id}", headers = detailsHeader), - ).execute() - val data = json.decodeFromString(resp.body.string()).data - return Observable.just( - anime.apply { - title = data.name - thumbnail_url = data.coverVerticalUrl - description = data.introduction - genre = data.tagList.joinToString(", ") { it.name } - }, - ) - } - - override fun animeDetailsParse(response: Response): SAnime = throw Exception("Not used") - - // ============================== Episodes ============================== - - override fun fetchEpisodeList(anime: SAnime): Observable> { - val parsed = json.decodeFromString(anime.url) - - val episodeHeader = newHeaders.add("Referer", parsed.url).build() - val resp = client.newCall( - GET("$baseUrl/detail?category=${parsed.category}&id=${parsed.id}", headers = episodeHeader), - ).execute() - val data = json.decodeFromString(resp.body.string()).data - val episodeList = data.episodeVo.map { ep -> - val formattedEpNum = if (floor(ep.seriesNo) == ceil(ep.seriesNo)) { - ep.seriesNo.toInt() - } else { - ep.seriesNo - } - SEpisode.create().apply { - episode_number = ep.seriesNo - setUrlWithoutDomain( - LinkData( - data.category.toString(), - data.id, - "$baseUrl/detail?category=${parsed.category}&id=${parsed.id}", - ep.id.toString(), - ).toJsonString(), - ) - name = "Episode $formattedEpNum" - } - } - return Observable.just(episodeList.reversed()) - } - - override fun episodeListParse(response: Response): List = throw Exception("Not used") - - // ============================ Video Links ============================= - - override fun fetchVideoList(episode: SEpisode): Observable> { - val parsed = json.decodeFromString(episode.url) - val videoHeaders = newHeaders.add("Referer", parsed.url).build() - val resp = client.newCall( - GET("$baseUrl/episode?category=${parsed.category}&id=${parsed.id}&episode=${parsed.episodeId!!}", headers = videoHeaders), - ).execute() - val episodeParsed = json.decodeFromString(resp.body.string()) - val subtitleList = episodeParsed.data.subtitles.map { sub -> - Track(sub.url, sub.language) - } - val videoList = episodeParsed.data.qualities.map { quality -> - Video(quality.url, "${quality.quality}p", quality.url, subtitleTracks = subtitleList) - } - return Observable.just(videoList.sort()) - } - - // ============================= Utilities ============================== - - private fun LinkData.toJsonString(): String { - return json.encodeToString(this) - } - - override fun List