From 6ee7153b7469d91af3c1f6263f817601ff15cbf2 Mon Sep 17 00:00:00 2001 From: Claudemirovsky <63046606+Claudemirovsky@users.noreply.github.com> Date: Thu, 20 Oct 2022 03:12:50 -0300 Subject: [PATCH] Convert StreamTape to shared lib (#953) --- lib/streamtape-extractor/build.gradle.kts | 25 ++++++++++++++++++ .../src/main/AndroidManifest.xml | 2 ++ .../StreamTapeExtractor.kt | 26 +++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 lib/streamtape-extractor/build.gradle.kts create mode 100644 lib/streamtape-extractor/src/main/AndroidManifest.xml create mode 100644 lib/streamtape-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamtapeextractor/StreamTapeExtractor.kt diff --git a/lib/streamtape-extractor/build.gradle.kts b/lib/streamtape-extractor/build.gradle.kts new file mode 100644 index 000000000..114a95458 --- /dev/null +++ b/lib/streamtape-extractor/build.gradle.kts @@ -0,0 +1,25 @@ +plugins { + id("com.android.library") + kotlin("android") +} + +android { + compileSdk = AndroidConfig.compileSdk + + defaultConfig { + minSdk = AndroidConfig.minSdk + targetSdk = AndroidConfig.targetSdk + } +} + +repositories { + mavenCentral() +} + +dependencies { + compileOnly(libs.kotlin.stdlib) + compileOnly(libs.okhttp) + compileOnly(libs.aniyomi.lib) + compileOnly(libs.jsoup) +} +// BUMPS: 0 \ No newline at end of file diff --git a/lib/streamtape-extractor/src/main/AndroidManifest.xml b/lib/streamtape-extractor/src/main/AndroidManifest.xml new file mode 100644 index 000000000..094f9f2f4 --- /dev/null +++ b/lib/streamtape-extractor/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/lib/streamtape-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamtapeextractor/StreamTapeExtractor.kt b/lib/streamtape-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamtapeextractor/StreamTapeExtractor.kt new file mode 100644 index 000000000..4de3f49c2 --- /dev/null +++ b/lib/streamtape-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamtapeextractor/StreamTapeExtractor.kt @@ -0,0 +1,26 @@ +package eu.kanade.tachiyomi.lib.streamtapeextractor + +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.OkHttpClient + +class StreamTapeExtractor(private val client: OkHttpClient) { + fun videoFromUrl(url: String, quality: String = "StreamTape"): Video? { + val baseUrl = "https://streamtape.com/e/" + val newUrl = if (!url.startsWith(baseUrl)) { + // ["https", "", "", "", "", ...] + val id = runCatching { url.split("/").get(4) }.getOrNull() ?: return null + baseUrl + id + } else { url } + val document = client.newCall(GET(newUrl)).execute().asJsoup() + val targetLine = "document.getElementById('robotlink')" + val script = document.selectFirst("script:containsData($targetLine)") + ?.data() + ?.substringAfter("$targetLine.innerHTML = '") + ?: return null + val videoUrl = "https:" + script.substringBefore("'") + + script.substringAfter("+ ('xcd").substringBefore("'") + return Video(videoUrl, quality, videoUrl) + } +}