forked from recloudstream/cloudstream
Fixes on Bflix and Wco (#748)
This commit is contained in:
parent
a2f92d8a26
commit
58bed05a32
3 changed files with 20 additions and 11 deletions
|
@ -14,6 +14,9 @@ class Vizcloud : WcoStream() {
|
||||||
override val mainUrl: String = "https://vizcloud2.ru"
|
override val mainUrl: String = "https://vizcloud2.ru"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class Vizcloud2 : WcoStream() {
|
||||||
|
override val mainUrl: String = "https://vizcloud2.online"
|
||||||
|
}
|
||||||
|
|
||||||
open class WcoStream : ExtractorApi() {
|
open class WcoStream : ExtractorApi() {
|
||||||
override val name = "VidStream" //Cause works for animekisa and wco
|
override val name = "VidStream" //Cause works for animekisa and wco
|
||||||
|
@ -87,9 +90,10 @@ open class WcoStream : ExtractorApi() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mainUrl == "https://vidstream.pro" || mainUrl == "https://vidstreamz.online") {
|
if (mainUrl == "https://vidstream.pro" || mainUrl == "https://vidstreamz.online" || mainUrl == "https://vizcloud2.online") {
|
||||||
if (it.file.contains("m3u8")) {
|
if (it.file.contains("m3u8")) {
|
||||||
hlsHelper.m3u8Generation(M3u8Helper.M3u8Stream(it.file, null), true)
|
hlsHelper.m3u8Generation(M3u8Helper.M3u8Stream(it.file.replace("#.mp4",""), null,
|
||||||
|
headers = mapOf("Referer" to url)), true)
|
||||||
.forEach { stream ->
|
.forEach { stream ->
|
||||||
val qualityString =
|
val qualityString =
|
||||||
if ((stream.quality ?: 0) == 0) "" else "${stream.quality}p"
|
if ((stream.quality ?: 0) == 0) "" else "${stream.quality}p"
|
||||||
|
@ -98,9 +102,9 @@ open class WcoStream : ExtractorApi() {
|
||||||
name,
|
name,
|
||||||
"$name $qualityString",
|
"$name $qualityString",
|
||||||
stream.streamUrl,
|
stream.streamUrl,
|
||||||
"",
|
url,
|
||||||
getQualityFromName(stream.quality.toString()),
|
getQualityFromName(stream.quality.toString()),
|
||||||
true
|
true,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -199,8 +199,6 @@ class BflixProvider(providerUrl: String, providerName: String) : MainAPI() {
|
||||||
val soup = app.get(url).document
|
val soup = app.get(url).document
|
||||||
val movieid = soup.selectFirst("div#watch").attr("data-id")
|
val movieid = soup.selectFirst("div#watch").attr("data-id")
|
||||||
val movieidencoded = encode(getVrf(movieid) ?: return null)
|
val movieidencoded = encode(getVrf(movieid) ?: return null)
|
||||||
val tvType = if (url.contains("/movie/")) TvType.Movie else TvType.TvSeries
|
|
||||||
|
|
||||||
val title = soup.selectFirst("div.info h1").text()
|
val title = soup.selectFirst("div.info h1").text()
|
||||||
val description = soup.selectFirst(".info .desc")?.text()?.trim()
|
val description = soup.selectFirst(".info .desc")?.text()?.trim()
|
||||||
val poster: String? = try {
|
val poster: String? = try {
|
||||||
|
@ -210,7 +208,7 @@ class BflixProvider(providerUrl: String, providerName: String) : MainAPI() {
|
||||||
}
|
}
|
||||||
|
|
||||||
val tags = soup.select("div.info .meta div:contains(Genre) a").map { it.text() }
|
val tags = soup.select("div.info .meta div:contains(Genre) a").map { it.text() }
|
||||||
val episodes = if (tvType == TvType.TvSeries) Jsoup.parse(
|
val episodes = Jsoup.parse(
|
||||||
app.get(
|
app.get(
|
||||||
"$mainUrl/ajax/film/servers?id=$movieid&vrf=$movieidencoded"
|
"$mainUrl/ajax/film/servers?id=$movieid&vrf=$movieidencoded"
|
||||||
).mapped<Response>().html
|
).mapped<Response>().html
|
||||||
|
@ -225,13 +223,16 @@ class BflixProvider(providerUrl: String, providerName: String) : MainAPI() {
|
||||||
val season = if (isValid) extraData?.getOrNull(0) else null
|
val season = if (isValid) extraData?.getOrNull(0) else null
|
||||||
|
|
||||||
val eptitle = it.selectFirst(".episode a span.name").text()
|
val eptitle = it.selectFirst(".episode a span.name").text()
|
||||||
|
val secondtitle = it.selectFirst(".episode a span").text()
|
||||||
|
.replace(Regex("(Episode (\\d+):|Episode (\\d+)-|Episode (\\d+))"),"") ?: ""
|
||||||
TvSeriesEpisode(
|
TvSeriesEpisode(
|
||||||
eptitle,
|
secondtitle+eptitle,
|
||||||
season,
|
season,
|
||||||
episode,
|
episode,
|
||||||
href,
|
href,
|
||||||
)
|
)
|
||||||
} else null
|
}
|
||||||
|
val tvType = if (url.contains("/movie/") && episodes.size == 1) TvType.Movie else TvType.TvSeries
|
||||||
val recommendations =
|
val recommendations =
|
||||||
soup.select("div.bl-2 section.bl div.content div.filmlist div.item")
|
soup.select("div.bl-2 section.bl div.content div.filmlist div.item")
|
||||||
?.mapNotNull { element ->
|
?.mapNotNull { element ->
|
||||||
|
@ -263,7 +264,7 @@ class BflixProvider(providerUrl: String, providerName: String) : MainAPI() {
|
||||||
url,
|
url,
|
||||||
this.name,
|
this.name,
|
||||||
tvType,
|
tvType,
|
||||||
episodes!!,
|
episodes,
|
||||||
poster,
|
poster,
|
||||||
year?.toIntOrNull(),
|
year?.toIntOrNull(),
|
||||||
description,
|
description,
|
||||||
|
@ -332,8 +333,11 @@ class BflixProvider(providerUrl: String, providerName: String) : MainAPI() {
|
||||||
).html
|
).html
|
||||||
)
|
)
|
||||||
.select("html body #episodes").map {
|
.select("html body #episodes").map {
|
||||||
val tvType = if (data.contains("movie/")) TvType.Movie else TvType.TvSeries
|
|
||||||
val cleandata = data.replace(mainUrl, "")
|
val cleandata = data.replace(mainUrl, "")
|
||||||
|
val a = it.select("a").map {
|
||||||
|
it.attr("data-kname")
|
||||||
|
}
|
||||||
|
val tvType = if (data.contains("movie/") && a.size == 1) TvType.Movie else TvType.TvSeries
|
||||||
val servers = if (tvType == TvType.Movie) it.select(".episode a").attr("data-ep")
|
val servers = if (tvType == TvType.Movie) it.select(".episode a").attr("data-ep")
|
||||||
else
|
else
|
||||||
it.select(".episode a[href=$cleandata]").attr("data-ep")
|
it.select(".episode a[href=$cleandata]").attr("data-ep")
|
||||||
|
|
|
@ -96,6 +96,7 @@ val extractorApis: Array<ExtractorApi> = arrayOf(
|
||||||
WcoStream(),
|
WcoStream(),
|
||||||
Vidstreamz(),
|
Vidstreamz(),
|
||||||
Vizcloud(),
|
Vizcloud(),
|
||||||
|
Vizcloud2(),
|
||||||
Mp4Upload(),
|
Mp4Upload(),
|
||||||
StreamTape(),
|
StreamTape(),
|
||||||
MixDrop(),
|
MixDrop(),
|
||||||
|
|
Loading…
Reference in a new issue