From 0e1e37e2e4b41d0e5f70c440d43c515cca4215c0 Mon Sep 17 00:00:00 2001 From: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> Date: Tue, 26 Sep 2023 14:47:51 +0500 Subject: [PATCH] feat(src/en): New Source: AsiaFlix (#2260) --- .../tachiyomi/lib/cryptoaes/CryptoAES.kt | 36 ++ src/en/asiaflix/AndroidManifest.xml | 2 + src/en/asiaflix/build.gradle | 23 ++ .../asiaflix/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3278 bytes .../asiaflix/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1827 bytes .../asiaflix/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4358 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7777 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 11440 bytes src/en/asiaflix/res/web_hi_res_512.png | Bin 0 -> 55492 bytes .../animeextension/en/asiaflix/AsiaFlix.kt | 315 ++++++++++++++++++ .../en/asiaflix/dto/DetailsResponseDto.kt | 39 +++ .../en/asiaflix/dto/EpisodeResponseDto.kt | 52 +++ .../en/asiaflix/dto/SearchResponseDto.kt | 20 ++ .../en/asiaflix/dto/VideoResponseDto.kt | 22 ++ 14 files changed, 509 insertions(+) create mode 100644 src/en/asiaflix/AndroidManifest.xml create mode 100644 src/en/asiaflix/build.gradle create mode 100644 src/en/asiaflix/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/en/asiaflix/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/en/asiaflix/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/en/asiaflix/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/en/asiaflix/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/en/asiaflix/res/web_hi_res_512.png create mode 100644 src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/AsiaFlix.kt create mode 100644 src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/DetailsResponseDto.kt create mode 100644 src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/EpisodeResponseDto.kt create mode 100644 src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/SearchResponseDto.kt create mode 100644 src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/VideoResponseDto.kt diff --git a/lib/cryptoaes/src/main/java/eu/kanade/tachiyomi/lib/cryptoaes/CryptoAES.kt b/lib/cryptoaes/src/main/java/eu/kanade/tachiyomi/lib/cryptoaes/CryptoAES.kt index 5859d3efe..d0275ed8b 100644 --- a/lib/cryptoaes/src/main/java/eu/kanade/tachiyomi/lib/cryptoaes/CryptoAES.kt +++ b/lib/cryptoaes/src/main/java/eu/kanade/tachiyomi/lib/cryptoaes/CryptoAES.kt @@ -94,6 +94,22 @@ object CryptoAES { } } + /** + * Encrypt using CryptoJS defaults compatible method. + * + * @param plainText plaintext + * @param keyBytes key as a bytearray + * @param ivBytes iv as a bytearray + */ + fun encrypt(plainText: String, keyBytes: ByteArray, ivBytes: ByteArray): String { + return try { + val cipherTextBytes = plainText.toByteArray() + encryptAES(cipherTextBytes, keyBytes, ivBytes) + } catch (e: Exception) { + "" + } + } + /** * Decrypt using CryptoJS defaults compatible method. * @@ -114,6 +130,26 @@ object CryptoAES { } } + /** + * Encrypt using CryptoJS defaults compatible method. + * + * @param plainTextBytes encrypted text as a bytearray + * @param keyBytes key as a bytearray + * @param ivBytes iv as a bytearray + */ + private fun encryptAES(plainTextBytes: ByteArray, keyBytes: ByteArray, ivBytes: ByteArray): String { + return try { + val cipher = try { + Cipher.getInstance(HASH_CIPHER) + } catch (e: Throwable) { Cipher.getInstance(HASH_CIPHER_FALLBACK) } + val keyS = SecretKeySpec(keyBytes, AES) + cipher.init(Cipher.ENCRYPT_MODE, keyS, IvParameterSpec(ivBytes)) + Base64.encodeToString(cipher.doFinal(plainTextBytes), Base64.DEFAULT) + } catch (e: Exception) { + "" + } + } + /** * Generates a key and an initialization vector (IV) with the given salt and password. * diff --git a/src/en/asiaflix/AndroidManifest.xml b/src/en/asiaflix/AndroidManifest.xml new file mode 100644 index 000000000..8072ee00d --- /dev/null +++ b/src/en/asiaflix/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/src/en/asiaflix/build.gradle b/src/en/asiaflix/build.gradle new file mode 100644 index 000000000..f767bba69 --- /dev/null +++ b/src/en/asiaflix/build.gradle @@ -0,0 +1,23 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.serialization) +} + +ext { + extName = 'AsiaFlix' + pkgNameSuffix = 'en.asiaflix' + extClass = '.AsiaFlix' + extVersionCode = 1 +} + +dependencies { + implementation(project(':lib-cryptoaes')) + implementation(project(':lib-playlist-utils')) + implementation(project(':lib-streamwish-extractor')) + implementation(project(':lib-dood-extractor')) + implementation(project(':lib-streamtape-extractor')) + implementation(project(':lib-mixdrop-extractor')) +} + +apply from: "$rootDir/common.gradle" diff --git a/src/en/asiaflix/res/mipmap-hdpi/ic_launcher.png b/src/en/asiaflix/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..be5530f9e62d8854ca5fcf3d02eeab9d1dbae6f7 GIT binary patch literal 3278 zcmV;<3^DVGP){y));YIp^LpGj|A@ zz2SCe?&I9^{qFz!&i9>rrwK8;gc3;1@(Cv}3n)S%vw&s+H5No>6%?a_2=o61r~_NL zMlLo6CzmW)lFei?%L;|UqUq`B9>;O2&MOv+kr%^x+G9-TMzvY%c{tulCX?eG9UaGE z%k#&M9XpE-g?2m&P-3mO5&*5}BeaDFtC(fYx8PnYj1C;FT?adAh41D|S*|YCAb<%IRUN|uuuLWtkMqgjw zbLY;TTQfdBZd6hjpqAm`;hS^0++$Eqp9;W6Ibl#6Rgc_uol0U86W!h2YsbdM4&ZZM zry>&|ZqE!34sO83?+2h3lUu0}Y}~H_gUSl2w+-b+&%oWbO-xMeLcgbU@yG-yiGw@( z`}?<|fzR3)t+D3QN1#6Rn2&fByHWQEzgb7YP#>O3}Yw3dr=mDHFUNfM1^X6?yrBZi? z#h)f*JKXH;0Q6-~LCpsgHqu>bu>8Kp1}My>qV94SoMwZIict*%LJSJHnCenC za4!D>37&;Sktt`SKwj2bslv8r4q($q^h z=2s|(raZG30Oh_!zcf89UUr+P+_0tsiW=QA=*X5tn|Oyv zRi*&~Y62j1ctdegjCwWW5Y)4(r3F}JMzR7cp97_@)NY_(()MR_IWdZ&y6J$Tz__NN zW7h)9qltFWmw>ryB`k%<+S)2!Q$0LZL=_xXC9xSmde=G#K!;~4 zbt&z@+Sn+j#vmIwJchN&I{f#e$ySk4XE_vD|13_6bOA0O z7rIgb*}(BfrPo0{J4BmUoS?}8f2sP;IJ57L?_HWdgB>0>+9qS zUxKf?T3EF|ifaBCAxW@f2V_#x0PgcwFtlF{O~}EQ$1|?ni{Si6Z_b0;`XP?J$#${G zb+ceJpTzNuRR`Si71JMBS-`e)o=AZskA$Xu{`P}~f_MRt5iScLU1zR`diKD*dNgmxybMF{LU4W&aYbI(4&8AV zz%C4iYWFY(>u+J6XcwLc(K-U2t94^V2%vMo7StiB-42f5d2BoFcx6y{!O7;+c# znvY@CJ!JbUlEd8y&>X$or4$g{kL@^PE%Koos-{Fr^VU4~6PS!;45OR93kB@;SZ!t- zWrdfn>j+mtaRZ8~#Rk#c-GZ*{lGi(VO9BKlYN$eyHd}2-cmN(Tth$At>lDavi1@ zk=Z|vi5*b+qUg*j4Aa{&t=eXqRt>}!MJ5K-1WzeNtV5{qKaF5rz%?1K_*m##PUml`XPex8H<-n*;d1Vw4)ddeha`nfr^}QNL?<$pr>FA<3=@` z5(ss9Ju(|_VzB1>wOO3}LFPoPFoy>K z7|p1noCTqV6oeNXwR6%eO!vW<;iNQnc~arsW?8Wl!}E+(d#Qa@fid|Tfz#Y6C!CV} z#^Ev>0sWwxS;5VaQLkhHtBG?LaqN=-^pYvR0Y_Y=C?t__T8?;1E)9Vxv?){TlAI&Y7%|cN83UItloXGw{nVJ9x(P{3C!q0u`O~ zN{<_m5Ape#uEb%|xF0GS$9e8(XIL5rgvJB!2l0{e;|R`IxfhkEHt-%TI`a?$>385> ze8$i6NRttfg^LG`vHhgMz}2Sa-uE`01op{1JFNMT3k**Z-;I+VeBf` zPm;9%gXpjwaQ&mtdy2m6n|02 z)e0+47@D?F;yDlI^ZA|FSJTg-SX_7Fm(I6fKImb5u6k{`*}=NWVBF>b2hReW5xgI? zA7A-{x~d#E>?fI=Nf-d6uL9C?Q-^I-Rcl^!IpFXbaIaCoxeXsrVRavdsMj`^xx$^% z~#8!%DF*|rfgFwW=GXwC`zeIBiz_TW%G+D?ZWijx?esiY1M7C&=_ zD(bx0EQ+}yx)9?Ge*#V@T&W!Od1CppHii-iSN|!oG7%KB3C(SefVdKfzZ(Cq3+##w zApbZYjO{tiHMRcMeMtV_(3bw!jjbP(<(ad9B0$XongwL(ONPV#3mW+9-)XUe(*OVf M07*qoM6N<$f;5sYvj6}9 literal 0 HcmV?d00001 diff --git a/src/en/asiaflix/res/mipmap-mdpi/ic_launcher.png b/src/en/asiaflix/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a6c085f679faf6d175ee1ff502a4450e5b8ed6c4 GIT binary patch literal 1827 zcmV+;2i*9HP)&A08qX3u~>;ix(St>!<=or5gG6H~JyqBHJL9JxK z0kCS-s;M9YvhGyiYSFWf161#;8Gy?3I+N?%69qVIOdCLdf4|Rw?0J=8Tquw;-P^oh z3%@1j)FxAmdFN5!_<83|-Y>t0wITr31wbX67$!JiBxuNH%~s~5y*r6U>GObxUT=~HOmLb}|8taAefe`_SE!2kr0h11AHJQn4B-O64w z097UC+<%mk^r%@5O7{GV2-qxuj2lgKzZBS6+`qxj0-W2vaA6azWL3K!C}cb?7cy-C z-QC?)l~_#nAdLGCMne7mb`tXW*q(LHciD~fmI)b2f&C#E7y}diU}hvx6GY`zWunUn z;Gd;JRx^Mq24K`4XndQ<{WzcFJU^GEa|VQja|U<<0R8HKYrk71+Cq5;)OOT_PL^08 zdsSs5+{N1hEbbtQ9QG(^Aw0K&Ain@a|!FSN@EfgnYh4zIQ$9{@DV7y=Ig}#_u|U`#yur z((wKcu;4U-QZ|xniJ1Fhu}Blx#iq?bI-Rb{LTvOwWS)(}Fwc7^Gw#=gXS^Gz?s7&M z6wwuXjz&-uxX~Mp$LVfVXW2=ALGRc2ol@*v!!>4MK>&gba033`NFnzJHdPh&0r_qQ zNSk(`Cj5$;uo?~CFhKa5r+04Lf*DGlO`Czv&dw?ZM&bDnz<@6w*>G12l0nk6()9_* z=smRA%^2neuUV=W8Qk}EE=L(zRsmnt1VCnhv&V6>nN~}IDVZB-yj+#15%AAKMmOQ- z5%flnKt{gOFb8KGSu#PgwE=W=bW||#5d3};*{3`m(RoPWkO*F%fJzqLMKC{RG*m2d z?L|!($I{L{kkQKkVS)wWtUsXlQ&QSoFo5><_6h*+Bdc#kadLywt)%-LL&{%EvM0sy zCbS&;ky0HNJSm++O?VZRnVqo>GU}3QLJs$QmCrj1KdMce0U1COto;e{>64P@G$tB` z6mFE)mz2wm?Xcn(qlKCzYYLV{&)XUL6VI-Lgr1VxY-ZvIFmM6))CHiet<7iP8Tjh3 znZ)}<^(5j3?Hyzk^1K)J$;n21j=pIlWF*+*-!Jfua0oS_2hYC&7UZ^s+lR4Pv?YQW z35hlXGJs(KSYtEc-oh@9euVyibDD_CO$B5Pir)yNBxk9s2GOR%tKvgd=|iONUtSP^u!&UHqofoyHlN{QTpIwEvXuQ~-FfjjMkL_7?11D3|MBt?X(3B;)pI8av8= zSw4&*%rL&rhI0?VfR+;g>zxZT1F7iZqW}b%Urqp#DqJqZ79lj;SFCsd{{c{2EsHgG R?jZmG002ovPDHLkV1gn;RIC61 literal 0 HcmV?d00001 diff --git a/src/en/asiaflix/res/mipmap-xhdpi/ic_launcher.png b/src/en/asiaflix/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..85a527f8481bab87b0cbbda2997f55a013265541 GIT binary patch literal 4358 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 literal 0 HcmV?d00001 diff --git a/src/en/asiaflix/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/asiaflix/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..74ebdbd4719aebeba8bc681c9ebe3969ce164925 GIT binary patch literal 11440 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 literal 0 HcmV?d00001 diff --git a/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/AsiaFlix.kt b/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/AsiaFlix.kt new file mode 100644 index 000000000..98731c9dd --- /dev/null +++ b/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/AsiaFlix.kt @@ -0,0 +1,315 @@ +package eu.kanade.tachiyomi.animeextension.en.asiaflix + +import android.app.Application +import androidx.preference.ListPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.animeextension.en.asiaflix.dto.DetailsResponseDto +import eu.kanade.tachiyomi.animeextension.en.asiaflix.dto.EncryptedResponseDto +import eu.kanade.tachiyomi.animeextension.en.asiaflix.dto.EpisodeResponseDto +import eu.kanade.tachiyomi.animeextension.en.asiaflix.dto.SearchDto +import eu.kanade.tachiyomi.animeextension.en.asiaflix.dto.SearchEntry +import eu.kanade.tachiyomi.animeextension.en.asiaflix.dto.SourceDto +import eu.kanade.tachiyomi.animeextension.en.asiaflix.dto.StreamHeadDto +import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource +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.Video +import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource +import eu.kanade.tachiyomi.lib.cryptoaes.CryptoAES +import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor +import eu.kanade.tachiyomi.lib.mixdropextractor.MixDropExtractor +import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils +import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor +import eu.kanade.tachiyomi.lib.streamwishextractor.StreamWishExtractor +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.asObservableSuccess +import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll +import kotlinx.coroutines.runBlocking +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.decodeFromJsonElement +import kotlinx.serialization.json.floatOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Document +import rx.Observable +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get +import uy.kohesive.injekt.injectLazy +import java.util.Locale +import kotlin.math.min + +class AsiaFlix : AnimeHttpSource(), ConfigurableAnimeSource { + + override val name = "AsiaFlix" + + override val baseUrl = "https://asiaflix.app" + + private val apiUrl = "https://api.asiaflix.app/api/v2" + + override val lang = "en" + + override val supportsLatest = true + + private val json: Json by injectLazy() + + override val client = network.cloudflareClient + + private val apiHeaders by lazy { + headersBuilder() + .set("Accept", "application/json, text/plain, */*") + .set("Referer", "$baseUrl/") + .set("Origin", baseUrl) + .set("X-Requested-By", "asiaflix-web") + .build() + } + + private val preferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + + // ============================== Popular =============================== + override fun popularAnimeRequest(page: Int): Request { + val url = "$apiUrl/drama/explore/full?schedule=0&sort=1&fields=name,+image,+altNames,+synopsis,+genre,+tvStatus&limit=$LIMIT&page=$page" + + return GET(url, apiHeaders) + } + + override fun popularAnimeParse(response: Response): AnimesPage { + val result = response.parseAs>() + val series = result[1].parseAs>() + + val entries = series.map(DetailsResponseDto::toSAnime) + val hasNextPage = entries.size == LIMIT + + return AnimesPage(entries, hasNextPage) + } + + // =============================== Latest =============================== + override fun latestUpdatesRequest(page: Int): Request { + val url = "$apiUrl/drama/explore/full?schedule=0&sort=3&fields=name,+image,+altNames,+synopsis,+genre,+tvStatus&limit=$LIMIT&page=$page" + + return GET(url, apiHeaders) + } + + override fun latestUpdatesParse(response: Response) = popularAnimeParse(response) + + // =============================== Search =============================== + private lateinit var searchEntries: SearchDto + + override fun fetchSearchAnime(page: Int, query: String, filters: AnimeFilterList): Observable { + return if (page == 1) { + super.fetchSearchAnime(page, query, filters) + } else { + Observable.just(paginatedSearchParse(page)) + } + } + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val url = "$apiUrl/drama/search".toHttpUrl().newBuilder() + .addQueryParameter("q", query.trim()) + .build() + .toString() + + return GET(url, apiHeaders) + } + + override fun searchAnimeParse(response: Response): AnimesPage { + searchEntries = response.parseAs() + + return paginatedSearchParse(1) + } + + private fun paginatedSearchParse(page: Int): AnimesPage { + val end = min(page * 20, searchEntries.size) + val entries = searchEntries.subList((page - 1) * 20, end).map(SearchEntry::toSAnime) + + return AnimesPage(entries, end < searchEntries.size) + } + + // =========================== Anime Details ============================ + override fun fetchAnimeDetails(anime: SAnime): Observable { + return client.newCall(internalAnimeDetailsRequest(anime)) + .asObservableSuccess() + .map(::animeDetailsParse) + } + + // workaround to get correct WebView url + override fun animeDetailsRequest(anime: SAnime): Request { + val slug = anime.title.titleToSlug() + return GET("$baseUrl/show-details/$slug/${anime.url}") + } + + private fun internalAnimeDetailsRequest(anime: SAnime): Request { + return GET("$apiUrl/drama?id=${anime.url}", apiHeaders) + } + + override fun animeDetailsParse(response: Response): SAnime { + return response.parseAs().toSAnime() + } + + // ============================== Episodes ============================== + override fun episodeListRequest(anime: SAnime) = internalAnimeDetailsRequest(anime) + + override fun episodeListParse(response: Response): List { + val result = response.parseAs() + + return result.episodes.map { + SEpisode.create().apply { + name = "Episode ${it.number}" + episode_number = it.number.floatOrNull ?: -1f + scanlator = it.sub + url = it.url + } + }.sortedByDescending { it.episode_number } + } + + // ============================ Video Links ============================= + private val streamHead by lazy { + client.newCall(GET("$apiUrl/utility/get-stream-headers", apiHeaders)) + .execute() + .parseAs() + .source + } + + override fun videoListRequest(episode: SEpisode): Request { + return GET(streamHead + episode.url, headers) + } + + private val playlistUtils by lazy { PlaylistUtils(client, headers) } + private val streamWishExtractor by lazy { StreamWishExtractor(client, headers) } + private val doodStreamExtractor by lazy { DoodExtractor(client) } + private val streamTapeExtractor by lazy { StreamTapeExtractor(client) } + private val mixDropExtractor by lazy { MixDropExtractor(client) } + + override fun videoListParse(response: Response): List.parallelCatchingFlatMap(crossinline f: suspend (A) -> Iterable): List = + runBlocking { + map { + async(Dispatchers.Default) { + runCatching { f(it) }.getOrElse { emptyList() } + } + }.awaitAll().flatten() + } + + companion object { + private const val LIMIT = 20 + + // TODO: find way to dynamically extract password and iv + private val PASSWORD = "93422192433952489752342908585752".toByteArray() + private val IV = "9262859232435825".toByteArray() + + fun String.titleToSlug() = trim() + .lowercase(Locale.US) + .replace(TITLE_SPECIAL_CHAR_REGEX, "-") + .replace(TRAILING_HYPHEN_REGEX, "") + + private val TITLE_SPECIAL_CHAR_REGEX = "[^a-z0-9]+".toRegex() + private val TRAILING_HYPHEN_REGEX = "-+$".toRegex() + + private const val PREF_QUALITY_KEY = "Preferred_quality" + private const val PREF_QUALITY_TITLE = "Preferred quality" + private const val PREF_QUALITY_DEFAULT = "720" + private val PREF_QUALITY_ENTRIES = arrayOf("1080p", "720p", "480p", "360p", "Doodstream", "StreamTape", "MixDrop") + private val PREF_QUALITY_VALUES = arrayOf("1080", "720", "480", "360", "Doodstream", "StreamTape", "MixDrop") + } +} diff --git a/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/DetailsResponseDto.kt b/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/DetailsResponseDto.kt new file mode 100644 index 000000000..b8ec4e245 --- /dev/null +++ b/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/DetailsResponseDto.kt @@ -0,0 +1,39 @@ +package eu.kanade.tachiyomi.animeextension.en.asiaflix.dto + +import eu.kanade.tachiyomi.animesource.model.SAnime +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DetailsResponseDto( + @SerialName("_id") val id: String, + val name: String, + val altNames: String, + val synopsis: String, + val image: String, + val tvStatus: String, + val genre: String, +) { + fun toSAnime() = SAnime.create().apply { + title = name + url = id + thumbnail_url = image + genre = this@DetailsResponseDto.genre + status = when (tvStatus) { + "Ongoing" -> SAnime.ONGOING + "Completed" -> SAnime.COMPLETED + else -> SAnime.UNKNOWN + } + description = buildString { + append(synopsis) + append("\n\n") + + altNames.split(",") + .map(String::trim) + .filter(String::isNotEmpty) + .joinToString("\n") { "• $it" } + .also { append("Alternative Names: \n$it") } + } + initialized = true + } +} diff --git a/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/EpisodeResponseDto.kt b/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/EpisodeResponseDto.kt new file mode 100644 index 000000000..7d196ec4e --- /dev/null +++ b/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/EpisodeResponseDto.kt @@ -0,0 +1,52 @@ +package eu.kanade.tachiyomi.animeextension.en.asiaflix.dto + +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonPrimitive +import okhttp3.HttpUrl.Companion.toHttpUrlOrNull + +@Serializable +data class EpisodeResponseDto( + val episodes: List, +) + +@Serializable +data class EpisodeDto( + val number: JsonPrimitive, + val type: String, + val videoUrl: String, +) { + val url = getUrlWithoutDomain(videoUrl) + .replace("/ajax.php", "/streaming.php") + + val sub get() = when { + type.contains("sub", true) -> "Subbed" + type.contains("dub", true) -> "Dubbed" + else -> null + } + + companion object { + private fun getUrlWithoutDomain(url: String): String { + val httpUrl = url.toHttpUrlOrNull() + + val path = httpUrl?.encodedPath + + val queries = httpUrl?.encodedQuery.let { + if (it.isNullOrEmpty()) { + "" + } else { + "?$it" + } + } + + val frag = httpUrl?.encodedFragment.let { + if (it.isNullOrEmpty()) { + "" + } else { + "#$it" + } + } + + return path + queries + frag + } + } +} diff --git a/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/SearchResponseDto.kt b/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/SearchResponseDto.kt new file mode 100644 index 000000000..aee98086d --- /dev/null +++ b/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/SearchResponseDto.kt @@ -0,0 +1,20 @@ +package eu.kanade.tachiyomi.animeextension.en.asiaflix.dto + +import eu.kanade.tachiyomi.animesource.model.SAnime +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +typealias SearchDto = List + +@Serializable +data class SearchEntry( + @SerialName("_id") val id: String, + val name: String, + val image: String, +) { + fun toSAnime() = SAnime.create().apply { + title = name + url = id + thumbnail_url = image + } +} diff --git a/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/VideoResponseDto.kt b/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/VideoResponseDto.kt new file mode 100644 index 000000000..528195092 --- /dev/null +++ b/src/en/asiaflix/src/eu/kanade/tachiyomi/animeextension/en/asiaflix/dto/VideoResponseDto.kt @@ -0,0 +1,22 @@ +package eu.kanade.tachiyomi.animeextension.en.asiaflix.dto + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class StreamHeadDto( + @SerialName("stream_source") val source: String, +) + +@Serializable +data class EncryptedResponseDto(val data: String) + +@Serializable +data class SourceDto( + val source: List, +) + +@Serializable +data class FileDto( + val file: String, +)