diff --git a/lib/streamsb-extractor/build.gradle.kts b/lib/streamsb-extractor/build.gradle.kts deleted file mode 100644 index 0a07a0456..000000000 --- a/lib/streamsb-extractor/build.gradle.kts +++ /dev/null @@ -1,18 +0,0 @@ -plugins { - id("com.android.library") - id("kotlinx-serialization") // for the DTO - kotlin("android") -} - -android { - compileSdk = AndroidConfig.compileSdk - namespace = "eu.kanade.tachiyomi.lib.streamsbextractor" - - defaultConfig { - minSdk = AndroidConfig.minSdk - } -} - -dependencies { - compileOnly(libs.bundles.common) -} diff --git a/lib/streamsb-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamsbextractor/StreamSBExtractor.kt b/lib/streamsb-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamsbextractor/StreamSBExtractor.kt deleted file mode 100644 index fd337c325..000000000 --- a/lib/streamsb-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamsbextractor/StreamSBExtractor.kt +++ /dev/null @@ -1,145 +0,0 @@ -package eu.kanade.tachiyomi.lib.streamsbextractor - -import android.app.Application -import eu.kanade.tachiyomi.animesource.model.Track -import eu.kanade.tachiyomi.animesource.model.Video -import eu.kanade.tachiyomi.network.GET -import kotlinx.serialization.decodeFromString -import kotlinx.serialization.json.Json -import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.OkHttpClient -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import uy.kohesive.injekt.injectLazy - -class StreamSBExtractor(private val client: OkHttpClient) { - - companion object { - private const val PREF_ENDPOINT_KEY = "streamsb_api_endpoint" - private const val PREF_ENDPOINT_DEFAULT = "/sources16" - private const val ENDPOINT_URL = "https://raw.githubusercontent.com/Claudemirovsky/streamsb-endpoint/master/endpoint.txt" - } - - private val json: Json by injectLazy() - - private val preferences by lazy { - Injekt.get().getSharedPreferences(javaClass.simpleName, 0x0000) - } - - private fun getEndpoint() = preferences.getString(PREF_ENDPOINT_KEY, PREF_ENDPOINT_DEFAULT)!! - - private fun updateEndpoint() { - client.newCall(GET(ENDPOINT_URL)).execute() - .use { it.body.string() } - .let { - preferences.edit().putString(PREF_ENDPOINT_KEY, it).commit() - } - } - - protected fun bytesToHex(bytes: ByteArray): String { - val hexArray = "0123456789ABCDEF".toCharArray() - val hexChars = CharArray(bytes.size * 2) - for (j in bytes.indices) { - val v = bytes[j].toInt() and 0xFF - - hexChars[j * 2] = hexArray[v ushr 4] - hexChars[j * 2 + 1] = hexArray[v and 0x0F] - } - return String(hexChars) - } - - // animension, asianload and dramacool uses "common = false" - private fun fixUrl(url: String, common: Boolean): String { - val host = url.toHttpUrl().host - val sbUrl = "https://$host" + getEndpoint() - val id = url.substringAfter(host) - .substringAfter("/e/") - .substringAfter("/embed-") - .substringBefore("?") - .substringBefore(".html") - .substringAfter("/") - return sbUrl + if (common) { - val hexBytes = bytesToHex(id.toByteArray()) - "/625a364258615242766475327c7c${hexBytes}7c7c4761574550654f7461566d347c7c73747265616d7362" - } else { - "/${bytesToHex("||$id||||streamsb".toByteArray())}/" - } - } - - fun videosFromUrl( - url: String, - headers: Headers, - prefix: String = "", - suffix: String = "", - common: Boolean = true, - manualData: Boolean = false, - externalSubs: List = emptyList(), - ): List