feat(en/dramacool): Add StreamWishExtractor (#2034)

This commit is contained in:
Lawrence Allen
2023-08-11 01:53:27 +08:00
committed by GitHub
parent 01aff3a98a
commit fe3ad90f39
3 changed files with 33 additions and 1 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'DramaCool'
pkgNameSuffix = 'en.dramacool'
extClass = '.DramaCool'
extVersionCode = 38
extVersionCode = 39
libVersion = '13'
}
@ -13,6 +13,8 @@ dependencies {
implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-streamsb-extractor'))
implementation(project(':lib-dood-extractor'))
implementation(project(':lib-playlist-utils'))
implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1"
}
apply from: "$rootDir/common.gradle"

View File

@ -7,6 +7,7 @@ import androidx.preference.EditTextPreference
import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.AppInfo
import eu.kanade.tachiyomi.animeextension.en.dramacool.extractors.StreamWishExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.AnimesPage
@ -169,6 +170,11 @@ class DramaCool : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
}
url.contains("dwish") -> {
val video = StreamWishExtractor(client, headers).videosFromUrl(url)
videoList.addAll(video)
}
url.contains("streamtape") -> {
val video = StreamTapeExtractor(client).videoFromUrl(url)
if (video != null) {

View File

@ -0,0 +1,24 @@
package eu.kanade.tachiyomi.animeextension.en.dramacool.extractors
import dev.datlag.jsunpacker.JsUnpacker
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.Headers
import okhttp3.OkHttpClient
class StreamWishExtractor(private val client: OkHttpClient, private val headers: Headers) {
fun videosFromUrl(url: String, videoNameGen: (String) -> String = { quality -> "StreamWish - $quality" }): List<Video> {
val doc = client.newCall(GET(url, headers = headers)).execute().asJsoup()
val jsEval = doc.selectFirst("script:containsData(m3u8)")?.data() ?: return emptyList()
val masterUrl = JsUnpacker.unpackAndCombine(jsEval)
?.substringAfter("source")
?.substringAfter("file:\"")
?.substringBefore("\"")
?: return emptyList()
return PlaylistUtils(client, headers).extractFromHls(masterUrl, videoNameGen = videoNameGen)
}
}