Skip to content

Commit

Permalink
feat: Implement Streamtape extractor
Browse files Browse the repository at this point in the history
  • Loading branch information
Claudemirovsky committed Nov 19, 2023
1 parent 0bfe01c commit 5b714d6
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
4 changes: 4 additions & 0 deletions src/id/kuramanime/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,8 @@ ext {
libVersion = '13'
}

dependencies {
implementation(project(":lib-streamtape-extractor"))
}

apply from: "$rootDir/common.gradle"
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,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.streamtapeextractor.StreamTapeExtractor
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.Headers
Expand Down Expand Up @@ -129,7 +130,9 @@ class Kuramanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun videoListSelector() = "video#player > source"

// Shall we add "archive", "archive-v2"? archive.org usually returns a beautiful 403 xD
private val supportedHosters = listOf("kuramadrive", "kuramadrive-v2")
private val supportedHosters = listOf("kuramadrive", "kuramadrive-v2", "streamtape")

private val streamtapeExtractor by lazy { StreamTapeExtractor(client) }

override fun videoListParse(response: Response): List<Video> {
val doc = response.use { it.asJsoup() }
Expand All @@ -155,9 +158,14 @@ class Kuramanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val playerDoc = client.newCall(GET(newUrl.toString(), headers)).execute()
.use { it.asJsoup() }

playerDoc.select("video#player > source").map {
val src = it.attr("src")
Video(src, "${it.attr("size")}p - $serverName", src)
if (server == "streamtape") {
val url = playerDoc.selectFirst("div.video-content iframe")!!.attr("src")
streamtapeExtractor.videosFromUrl(url)
} else {
playerDoc.select("video#player > source").map {
val src = it.attr("src")
Video(src, "${it.attr("size")}p - $serverName", src)
}
}
}.getOrElse { emptyList<Video>() }
}
Expand Down

0 comments on commit 5b714d6

Please sign in to comment.