From fba3cd492481b905c57711c009c09c8e63cfaebd Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Sun, 10 Mar 2024 13:20:42 +0000 Subject: [PATCH] feat(src/en): New source: Animeflix (#3033) --- src/en/animeflixlive/build.gradle | 12 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3092 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1934 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4530 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7973 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10748 bytes .../en/animeflixlive/AnimeflixLive.kt | 491 ++++++++++++++++++ .../animeextension/en/animeflixlive/Dto.kt | 123 +++++ .../en/animeflixlive/Filters.kt | 81 +++ 9 files changed, 707 insertions(+) create mode 100644 src/en/animeflixlive/build.gradle create mode 100644 src/en/animeflixlive/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/en/animeflixlive/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/en/animeflixlive/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/en/animeflixlive/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/en/animeflixlive/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/en/animeflixlive/src/eu/kanade/tachiyomi/animeextension/en/animeflixlive/AnimeflixLive.kt create mode 100644 src/en/animeflixlive/src/eu/kanade/tachiyomi/animeextension/en/animeflixlive/Dto.kt create mode 100644 src/en/animeflixlive/src/eu/kanade/tachiyomi/animeextension/en/animeflixlive/Filters.kt diff --git a/src/en/animeflixlive/build.gradle b/src/en/animeflixlive/build.gradle new file mode 100644 index 000000000..363e5055b --- /dev/null +++ b/src/en/animeflixlive/build.gradle @@ -0,0 +1,12 @@ +ext { + extName = 'Animeflix.live' + extClass = '.AnimeflixLive' + extVersionCode = 1 +} + +apply from: "$rootDir/common.gradle" + +dependencies { + implementation(project(':lib:gogostream-extractor')) + implementation(project(':lib:playlist-utils')) +} diff --git a/src/en/animeflixlive/res/mipmap-hdpi/ic_launcher.png b/src/en/animeflixlive/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f630587cf4dec1e7c0b09ceda9bc2da809347db8 GIT binary patch literal 3092 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�B z@hF^S3$MeO%xBhns6jN7W21hA=lrM74N-*`%1(2|V(~cMzdkcFbJav(15g+n8+&JA zVc}I>*epTQK-$Ko&eZ~j#q%Y&YPEWBZf^ZEHkqj3k`vlSxq*Z>UF>-9_F$6SOB`!s=$ohB)$hkHfeP5{{G+H5ul zG0j{%0Q~*h(9qDuh!VJ9lq=(ZOo222oq&R0)-lh&l2^fDS|9>ovw({h%fh3lsl{e;iu4_=rc%h#=qzZz ze~Auz^UidV_S2%DvjrGHmIczRv5!{KKB~|f!Lc(`gR;Qa@W1WiLIj`_`tTrU0JT~z zut4m9uGaXN>auYyeXr;}q2f1_mMuDRuE*tj@Fu zRl)G@X$^H@$hcpK3oT9H`vKq#fVlXR2`n3ca=QcoUD)`e90Xb&?@{po18<0$0DG68 zrygmAC~-)kC&es%MpvAi)&vPz+@er_e}B>flEUpRz#n^ARB4-6k$nddjaIWCghw#` zD{+Ok)2s$SnOM!=K2fe1fQ#_l=TmPrO$a6sQ4i!p@E9})&xg!?i7PfGr)hfQQ(3C5rhXX^*x2d4qV)p@mk^(o{5w3I{^IPt1g z6;Mc--|hpUVim2p=OdyU{AUFzjYB;6L4kS=3h}#1Q0Nm-NuS?TR!X37vj8eTiw~%> zAeJZT6MLviJH2Y8agJIw-=kpyjSMS%4&itCvl4lSR_Gi+iv@y`*93AH@&7^UP5@*- z7&H957iy$9pR$#F= z!jaDgrG2^;lEol~Wdo=n4^RNW)P9;zJWNIU2>ega2QTC&F&Nz=@>0! zQposbHUJE$_4W0&%>ycp#r)k1{_j8>()c4Ue-TU64Rt?D<=77bCuiYz0E9`!cA?eD z0y+Sj1#DJ0LPH3RMJ0=-I(rm!BEYO@{~rCRxN zxvd3st(C$16W$2Q=Xh!1aS4o0z4*sXMj`{;GV;VY9Qn_by2z#|XA6|e3P7s{JPtodTA@Yo&H(iE^jy?sPtqyO0z|tI`#A^1v{33jP1orQ zahdX(z>`=jJPA9507HR~Al>cO)&~Y<%v(1fz+Pkvg%ZgtP|!gvkRHz={u>rJD(2|` z0E7oC;1vLU*OCuT0qg|Iiq?Q*g|b2bL0s3TmoihE4+t%upjxr;cx@c)m4B6tUnz@wAf00(6%ofb{^*<9CjE;u0aY0 zp&y|Fwjf`OB06yyeHCM>=zkA#bshQQZOoGL8-_lWD}XNR)}pDQcFRqrMZK?;hF5Q zQawj4ESr{j+JAf)uV*@z4+A!#{gyhA`OZJM3*@&Et;07*qoM6N<$f;C8#^8f$< literal 0 HcmV?d00001 diff --git a/src/en/animeflixlive/res/mipmap-xhdpi/ic_launcher.png b/src/en/animeflixlive/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..818568c2ad745b0f12a480e7e030587b38803f23 GIT binary patch literal 4530 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 b;=um_-FxrMNz>{y00000NkvXXu0mjfQ70?P literal 0 HcmV?d00001 diff --git a/src/en/animeflixlive/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/animeflixlive/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5ebf96144c0dc70bece78c3bd9d2ddf28c93cac6 GIT binary patch literal 10748 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 mo>kX>_VwX{hnuq~Ji(ryOGKRTnc$786M$().getSharedPreferences("source_$id", 0x0000) + } + + private val apiHeaders = headersBuilder().apply { + add("Accept", "*/*") + add("Host", apiUrl.toHttpUrl().host) + add("Origin", baseUrl) + add("Referer", "$baseUrl/") + }.build() + + private val docHeaders = headersBuilder().apply { + add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8") + add("Host", apiUrl.toHttpUrl().host) + add("Referer", "$baseUrl/") + }.build() + + // ============================== Popular =============================== + + override fun popularAnimeRequest(page: Int): Request = + GET("$apiUrl/popular?page=${page - 1}", apiHeaders) + + override fun popularAnimeParse(response: Response): AnimesPage { + val parsed = response.parseAs>() + val titlePref = preferences.titleType + + val animeList = parsed.map { + it.toSAnime(titlePref) + } + + return AnimesPage(animeList, animeList.size == PAGE_SIZE) + } + + // =============================== Latest =============================== + + override fun latestUpdatesRequest(page: Int): Request = + GET("$apiUrl/trending?page=${page - 1}", apiHeaders) + + override fun latestUpdatesParse(response: Response): AnimesPage { + val parsed = response.parseAs() + val titlePref = preferences.titleType + + val animeList = parsed.trending.map { + it.toSAnime(titlePref) + } + + return AnimesPage(animeList, animeList.size == PAGE_SIZE) + } + + // =============================== Search =============================== + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val sort = filters.filterIsInstance().first().getValue() + val type = filters.filterIsInstance().first().getValues() + val genre = filters.filterIsInstance().first().getValues() + val subPage = filters.filterIsInstance().first().getValue() + + if (subPage.isNotBlank()) { + return GET("$apiUrl/$subPage?page=${page - 1}", apiHeaders) + } + + if (query.isEmpty()) { + throw Exception("Search must not be empty") + } + + val filtersObj = buildJsonObject { + put("sort", sort) + if (type.isNotEmpty()) { + put("type", json.encodeToString(type)) + } + if (genre.isNotEmpty()) { + put("genre", json.encodeToString(genre)) + } + }.toJsonString() + + val url = apiUrl.toHttpUrl().newBuilder().apply { + addPathSegment("info") + addPathSegment("") + addQueryParameter("query", query) + addQueryParameter("limit", "15") + addQueryParameter("filters", filtersObj) + addQueryParameter("k", query.substr(0, 3).sk()) + }.build() + + return GET(url, apiHeaders) + } + + override fun searchAnimeParse(response: Response): AnimesPage { + val parsed = response.parseAs>() + val titlePref = preferences.titleType + + val animeList = parsed.map { + it.toSAnime(titlePref) + } + + val hasNextPage = if (response.request.url.queryParameter("limit") == null) { + animeList.size == 44 + } else { + animeList.size == 15 + } + + return AnimesPage(animeList, hasNextPage) + } + + // ============================== Filters =============================== + + override fun getFilterList(): AnimeFilterList = AnimeFilterList( + SortFilter(), + TypeFilter(), + GenreFilter(), + AnimeFilter.Separator(), + AnimeFilter.Header("NOTE: Subpage overrides search and other filters!"), + SubPageFilter(), + ) + + // =========================== Anime Details ============================ + + override fun animeDetailsRequest(anime: SAnime): Request { + return GET("$apiUrl/getslug/${anime.url}", apiHeaders) + } + + override fun getAnimeUrl(anime: SAnime): String { + return "$baseUrl/search/${anime.title}?anime=${anime.url}" + } + + override fun animeDetailsParse(response: Response): SAnime { + val titlePref = preferences.titleType + return response.parseAs().toSAnime(titlePref) + } + + // ============================== Episodes ============================== + + override fun episodeListRequest(anime: SAnime): Request { + val lang = preferences.lang + + val url = apiUrl.toHttpUrl().newBuilder().apply { + addPathSegment("episodes") + addQueryParameter("id", anime.url) + addQueryParameter("dub", (lang == "Dub").toString()) + addQueryParameter("c", anime.url.sk()) + }.build() + + return GET(url, apiHeaders) + } + + override fun episodeListParse(response: Response): List { + val slug = response.request.url.queryParameter("id")!! + + return response.parseAs().episodes.map { + it.toSEpisode(slug) + }.sortedByDescending { it.episode_number } + } + + // ============================ Video Links ============================= + + override fun videoListRequest(episode: SEpisode): Request { + val url = "$apiUrl${episode.url}".toHttpUrl().newBuilder().apply { + addQueryParameter("server", "") + addQueryParameter("c", episode.url.substringAfter("/watch/").sk()) + }.build() + + return GET(url, apiHeaders) + } + + override fun videoListParse(response: Response): List