From 43435c643533f6e9979676fc0252c694789cd0f6 Mon Sep 17 00:00:00 2001 From: Dark25 Date: Thu, 19 Sep 2024 09:23:34 +0100 Subject: [PATCH] Feat(lib/ChillxExtractor): Update extractor and add extractor to Hikari (#262) * Feat(lib/ChillxExtractor): Update extractor and add extractor to Hikari * Feat(lib/ChillxExtractor): clear * Fix klint --- .../lib/chillxextractor/ChillxExtractor.kt | 24 +++++++++---------- src/all/hikari/build.gradle | 3 ++- .../animeextension/all/hikari/Hikari.kt | 8 +++---- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/lib/chillx-extractor/src/main/java/eu/kanade/tachiyomi/lib/chillxextractor/ChillxExtractor.kt b/lib/chillx-extractor/src/main/java/eu/kanade/tachiyomi/lib/chillxextractor/ChillxExtractor.kt index daa73bff..b93dd2e6 100644 --- a/lib/chillx-extractor/src/main/java/eu/kanade/tachiyomi/lib/chillxextractor/ChillxExtractor.kt +++ b/lib/chillx-extractor/src/main/java/eu/kanade/tachiyomi/lib/chillxextractor/ChillxExtractor.kt @@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.lib.chillxextractor import eu.kanade.tachiyomi.animesource.model.Track import eu.kanade.tachiyomi.animesource.model.Video -import eu.kanade.tachiyomi.lib.cryptoaes.CryptoAES.decryptWithSalt +import eu.kanade.tachiyomi.lib.cryptoaes.CryptoAES import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.util.parseAs @@ -19,11 +19,11 @@ class ChillxExtractor(private val client: OkHttpClient, private val headers: Hea private val playlistUtils by lazy { PlaylistUtils(client, headers) } companion object { - private val REGEX_MASTER_JS by lazy { Regex("""\s*=\s*'([^']+)""") } - private val REGEX_SOURCES by lazy { Regex("""sources:\s*\[\{"file":"([^"]+)""") } - private val REGEX_FILE by lazy { Regex("""file: ?"([^"]+)"""") } - private val REGEX_SOURCE by lazy { Regex("""source = ?"([^"]+)"""") } - private val REGEX_SUBS by lazy { Regex("""\[(.*?)\](https?://[^\s,]+)""") } + private val REGEX_MASTER_JS = Regex("""\s*=\s*'([^']+)""") + private val REGEX_SOURCES = Regex("""sources:\s*\[\{"file":"([^"]+)""") + private val REGEX_FILE = Regex("""file: ?"([^"]+)"""") + private val REGEX_SOURCE = Regex("""source = ?"([^"]+)"""") + private val REGEX_SUBS = Regex("""\[(.*?)\](https?://[^\s,]+)""") private const val KEY_SOURCE = "https://raw.githubusercontent.com/Rowdy-Avocado/multi-keys/keys/index.html" } @@ -38,7 +38,7 @@ class ChillxExtractor(private val client: OkHttpClient, private val headers: Hea val master = REGEX_MASTER_JS.find(body)?.groupValues?.get(1) ?: return emptyList() val aesJson = json.decodeFromString(master) val key = fetchKey() ?: throw ErrorLoadingException("Unable to get key") - val decryptedScript = decryptWithSalt(aesJson.ciphertext, aesJson.salt, key) + val decryptedScript = CryptoAES.decryptWithSalt(aesJson.ciphertext, aesJson.salt, key) .replace("\\n", "\n") .replace("\\", "") @@ -76,16 +76,14 @@ class ChillxExtractor(private val client: OkHttpClient, private val headers: Hea @Serializable data class CryptoInfo( - @SerialName("ct") - val ciphertext: String, - @SerialName("s") - val salt: String, + @SerialName("ct") val ciphertext: String, + @SerialName("s") val salt: String, ) @Serializable data class KeysData( - @SerialName("chillx") - val keys: List + @SerialName("chillx") val keys: List ) } + class ErrorLoadingException(message: String) : Exception(message) diff --git a/src/all/hikari/build.gradle b/src/all/hikari/build.gradle index 490edc08..23c6a56c 100644 --- a/src/all/hikari/build.gradle +++ b/src/all/hikari/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Hikari' extClass = '.Hikari' - extVersionCode = 7 + extVersionCode = 8 } apply from: "$rootDir/common.gradle" @@ -9,4 +9,5 @@ apply from: "$rootDir/common.gradle" dependencies { implementation(project(':lib:filemoon-extractor')) implementation(project(':lib:vidhide-extractor')) + implementation(project(':lib:chillx-extractor')) } \ No newline at end of file diff --git a/src/all/hikari/src/eu/kanade/tachiyomi/animeextension/all/hikari/Hikari.kt b/src/all/hikari/src/eu/kanade/tachiyomi/animeextension/all/hikari/Hikari.kt index cc35e0cb..aa771c1f 100644 --- a/src/all/hikari/src/eu/kanade/tachiyomi/animeextension/all/hikari/Hikari.kt +++ b/src/all/hikari/src/eu/kanade/tachiyomi/animeextension/all/hikari/Hikari.kt @@ -12,6 +12,7 @@ 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.chillxextractor.ChillxExtractor import eu.kanade.tachiyomi.lib.filemoonextractor.FilemoonExtractor import eu.kanade.tachiyomi.lib.vidhideextractor.VidHideExtractor import eu.kanade.tachiyomi.network.GET @@ -218,6 +219,7 @@ class Hikari : ParsedAnimeHttpSource(), ConfigurableAnimeSource { private val filemoonExtractor by lazy { FilemoonExtractor(client) } private val vidHideExtractor by lazy { VidHideExtractor(client, headers) } + private val chillxExtractor by lazy { ChillxExtractor(client, headers) } private val embedRegex = Regex("""getEmbed\(\s*(\d+)\s*,\s*(\d+)\s*,\s*'(\d+)'""") override fun videoListRequest(episode: SEpisode): Request { @@ -336,10 +338,8 @@ class Hikari : ParsedAnimeHttpSource(), ConfigurableAnimeSource { private fun getVideosFromEmbed(embedUrl: String, name: String): List