diff --git a/lib/fastream-extractor/build.gradle.kts b/lib/fastream-extractor/build.gradle.kts new file mode 100644 index 000000000..1b68d9856 --- /dev/null +++ b/lib/fastream-extractor/build.gradle.kts @@ -0,0 +1,17 @@ +plugins { + id("com.android.library") + kotlin("android") +} + +android { + compileSdk = AndroidConfig.compileSdk + namespace = "eu.kanade.tachiyomi.lib.fastreamextractor" + + defaultConfig { + minSdk = AndroidConfig.minSdk + } +} + +dependencies { + compileOnly(libs.bundles.common) +} diff --git a/lib/fastream-extractor/src/main/java/eu/kanade/tachiyomi/lib/fastreamextractor/FastreamExtractor.kt b/lib/fastream-extractor/src/main/java/eu/kanade/tachiyomi/lib/fastreamextractor/FastreamExtractor.kt new file mode 100644 index 000000000..d422ee7e3 --- /dev/null +++ b/lib/fastream-extractor/src/main/java/eu/kanade/tachiyomi/lib/fastreamextractor/FastreamExtractor.kt @@ -0,0 +1,72 @@ +package eu.kanade.tachiyomi.lib.fastreamextractor + +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonObject +import okhttp3.OkHttpClient +import uy.kohesive.injekt.injectLazy + +class FastreamExtractor(private val client: OkHttpClient) { + + private val json: Json by injectLazy() + + private fun fetchUrls(text: String?): List { + if (text.isNullOrEmpty()) return listOf() + val linkRegex = "(http|ftp|https):\\/\\/([\\w_-]+(?:(?:\\.[\\w_-]+)+))([\\w.,@?^=%&:\\/~+#-]*[\\w@?^=%&\\/~+#-])".toRegex() + return linkRegex.findAll(text).map { it.value.trim().removeSurrounding("\"") }.toList() + } + + fun videoFromUrl(url: String, server: String = "Fastream"): List