fix(pt/CineVision): Fix latest updates and video extractor (#1624)

* fix: Update BaseURL

* fix: Fix latest updates page

* fix: Fix video extractor

* feat: Create Embedflix extractor

* chore: Bump version
This commit is contained in:
Claudemirovsky
2023-05-20 07:01:31 -03:00
committed by GitHub
parent 028e98d4f2
commit d58bb7fc79
4 changed files with 67 additions and 8 deletions

View File

@ -0,0 +1,3 @@
dependencies {
implementation("dev.datlag.jsunpacker:jsunpacker:1.0.1")
}

View File

@ -1,11 +1,13 @@
package eu.kanade.tachiyomi.animeextension.pt.cinevision
import eu.kanade.tachiyomi.animeextension.pt.cinevision.extractors.EmbedflixExtractor
import eu.kanade.tachiyomi.animeextension.pt.cinevision.extractors.StreamlareExtractor
import eu.kanade.tachiyomi.animeextension.pt.cinevision.extractors.VidmolyExtractor
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.multisrc.dooplay.DooPlay
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.FormBody
import okhttp3.Response
import org.jsoup.nodes.Element
import uy.kohesive.injekt.api.get
@ -13,12 +15,14 @@ import uy.kohesive.injekt.api.get
class CineVision : DooPlay(
"pt-BR",
"CineVision",
"https://cinevision.vc",
"https://cinevisionv3.online",
) {
// ============================== Popular ===============================
override fun popularAnimeSelector(): String = "article.w_item_b > a"
// =============================== Latest ===============================
override val latestUpdatesPath = "episodios"
override fun latestUpdatesNextPageSelector(): String = "div.resppages > a > span.fa-chevron-right"
// ============================ Video Links =============================
@ -36,22 +40,38 @@ class CineVision : DooPlay(
VidmolyExtractor(client).getVideoList(url, name)
"streamlare.com" in url ->
StreamlareExtractor(client).videosFromUrl(url, name)
"embedflix.in" in url ->
EmbedflixExtractor(client).videosFromUrl(url)
else -> emptyList<Video>()
}
}
private fun getPlayerUrl(player: Element): String {
val type = player.attr("data-type")
val id = player.attr("data-post")
val num = player.attr("data-nume")
return client.newCall(GET("$baseUrl/wp-json/dooplayer/v2/$id/$type/$num"))
val body = FormBody.Builder()
.add("action", "doo_player_ajax")
.add("post", player.attr("data-post"))
.add("nume", player.attr("data-nume"))
.add("type", player.attr("data-type"))
.build()
return client.newCall(POST("$baseUrl/wp-admin/admin-ajax.php", headers, body))
.execute()
.use { response ->
response.body.string()
.substringAfter("\"embed_url\":\"")
.substringBefore("\",")
.replace("\\", "")
.let { "https:$it" }
.let { url ->
when {
url.contains("iframe") -> {
url.substringAfter(" src=\"")
.substringBefore("\" ")
.let { "https:$it" }
}
else -> url
}
}
}
}

View File

@ -0,0 +1,36 @@
package eu.kanade.tachiyomi.animeextension.pt.cinevision.extractors
import dev.datlag.jsunpacker.JsUnpacker
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.OkHttpClient
class EmbedflixExtractor(private val client: OkHttpClient) {
fun videosFromUrl(url: String): List<Video> {
val newUrl = url.replace("/e/", "/api.php?action=getAds&key=0&lang=DUB&s=")
val iframeUrl = client.newCall(GET(newUrl)).execute()
.use { it.asJsoup() }
.selectFirst("iframe")
?.attr("src") ?: return emptyList()
val playerData = client.newCall(GET(iframeUrl)).execute()
.use { it.body.string() }
.let(JsUnpacker::unpackAndCombine)
?: return emptyList()
val masterUrl = playerData.substringAfter("file:\"").substringBefore('"')
val playlistData = client.newCall(GET(masterUrl)).execute()
.use { it.body.string() }
val separator = "#EXT-X-STREAM-INF:"
return playlistData.substringAfter(separator).split(separator).map {
val quality = it.substringAfter("RESOLUTION=")
.substringAfter("x")
.substringBefore(",") + "p"
val videoUrl = it.substringAfter("\n").substringBefore("\n")
Video(videoUrl, "EmbedFlix(DUB) - $quality", videoUrl)
}
}
}

View File

@ -16,7 +16,7 @@ class DooPlayGenerator : ThemeSourceGenerator {
SingleLang("AnimesFox BR", "https://animesfoxbr.com", "pt-BR", isNsfw = false),
SingleLang("AnimePlayer", "https://animeplayer.com.br", "pt-BR", isNsfw = true),
SingleLang("Cinemathek", "https://cinemathek.net", "de", isNsfw = true, overrideVersionCode = 11),
SingleLang("CineVision", "https://cinevision.vc", "pt-BR", isNsfw = true, overrideVersionCode = 4),
SingleLang("CineVision", "https://cinevisionv3.online", "pt-BR", isNsfw = true, overrideVersionCode = 5),
SingleLang("GoAnimes", "https://goanimes.net", "pt-BR", isNsfw = true),
SingleLang("pactedanime", "https://pactedanime.com", "en", isNsfw = false, overrideVersionCode = 4),
SingleLang("AnimeOnline360", "https://animeonline360.me", "en", isNsfw = false),