refactor: Convert ar/animetitans to multisrc/animestream (#1777)
This commit is contained in:
@ -0,0 +1,26 @@
|
||||
package eu.kanade.tachiyomi.animeextension.ar.animetitans.extractors
|
||||
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import okhttp3.Headers
|
||||
import okhttp3.OkHttpClient
|
||||
|
||||
class AnimeTitansExtractor(private val client: OkHttpClient) {
|
||||
fun videosFromUrl(url: String, headers: Headers, baseUrl: String): List<Video> {
|
||||
val newHeaders = headers.newBuilder().add("Referer", baseUrl).build()
|
||||
val callPlayer = client.newCall(GET(url)).execute().use { it.asJsoup() }
|
||||
val masterUrl = callPlayer.data().substringAfter("source: \"").substringBefore("\",")
|
||||
val domain = masterUrl.substringBefore("/videowl") // .replace("https", "http")
|
||||
val masterPlaylist = client.newCall(GET(masterUrl, newHeaders)).execute()
|
||||
.use { it.body.string() }
|
||||
|
||||
val separator = "#EXT-X-STREAM-INF:"
|
||||
return masterPlaylist.substringAfter(separator).split(separator).map {
|
||||
val resolution = it.substringAfter("RESOLUTION=").substringAfter("x").substringBefore("\n") + "p"
|
||||
val quality = "AnimeTitans: $resolution"
|
||||
val videoUrl = domain + it.substringAfter("\n").substringBefore("\n")
|
||||
Video(videoUrl, quality, videoUrl, headers = newHeaders)
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package eu.kanade.tachiyomi.animeextension.ar.animetitans.extractors
|
||||
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import okhttp3.OkHttpClient
|
||||
|
||||
class SharedExtractor(private val client: OkHttpClient) {
|
||||
fun videoFromUrl(url: String, quality: String): Video? {
|
||||
val document = client.newCall(GET(url)).execute().asJsoup()
|
||||
return document.selectFirst("source")?.let {
|
||||
Video(it.attr("src"), quality, it.attr("src"))
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package eu.kanade.tachiyomi.animeextension.ar.animetitans.extractors
|
||||
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import okhttp3.Headers
|
||||
import okhttp3.OkHttpClient
|
||||
|
||||
class VidYardExtractor(private val client: OkHttpClient) {
|
||||
companion object {
|
||||
private const val VIDYARD_URL = "https://play.vidyard.com"
|
||||
}
|
||||
|
||||
fun videosFromUrl(url: String, headers: Headers): List<Video> {
|
||||
val newHeaders = headers.newBuilder().add("Referer", VIDYARD_URL).build()
|
||||
val id = url.substringAfter("com/").substringBefore("?")
|
||||
val playerUrl = "$VIDYARD_URL/player/" + id + ".json"
|
||||
val callPlayer = client.newCall(GET(playerUrl, newHeaders)).execute()
|
||||
.use { it.body.string() }
|
||||
val data = callPlayer.substringAfter("hls\":[").substringBefore("]")
|
||||
val sources = data.split("profile\":\"").drop(1)
|
||||
|
||||
return sources.map { source ->
|
||||
val src = source.substringAfter("url\":\"").substringBefore("\"")
|
||||
val quality = source.substringBefore("\"")
|
||||
Video(src, quality, src, headers = newHeaders)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user