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)
+ }
+}