refactor: Convert ar/animetitans to multisrc/animestream (#1777)

This commit is contained in:
Claudemirovsky
2023-06-24 06:01:03 +00:00
committed by GitHub
parent 2bbd7d9358
commit 7cf524d70e
19 changed files with 140 additions and 812 deletions

View File

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

View File

@ -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"))
}
}
}

View File

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