Xvideos - Fix extension on sources name. Cleanups.

This commit is contained in:
Jace 2022-11-19 22:12:45 +08:00
parent d2bfc2eb25
commit f68cd7e3e7
2 changed files with 61 additions and 70 deletions

View File

@ -1,5 +1,5 @@
// use an integer for version numbers // use an integer for version numbers
version = 5 version = 6
cloudstream { cloudstream {

View File

@ -17,27 +17,11 @@ class XvideosProvider : MainAPI() {
override val hasDownloadSupport = true override val hasDownloadSupport = true
override val supportedTypes = setOf(TvType.NSFW) override val supportedTypes = setOf(TvType.NSFW)
fun getDurationFromTitle(title: String?): Int? { fun getLinkAndExt(text: String) : Pair<String, String> {
if (title.isNullOrBlank()) { val validlink = text.trim().trim('"').trim('\'')
return null val valindlinkext = validlink.substringAfterLast(".")
} .substringBeforeLast("?").trim().uppercase()
var seconds = 0 return Pair(validlink, valindlinkext)
"(\\s\\d+\\shr)|(\\s\\d+\\shour)|(\\s\\d+\\smin)|(\\s\\d+\\ssec)".toRegex()
.findAll(title).forEach {
//Output: 5 hr, 41 min, 30 sec
val time_text = it.value
val time = time_text.filter { s -> s.isDigit() }.trim().toInt()
val scale = time_text.filter { s -> !s.isDigit() }.trim()
//println("Scale: $scale")
val timeval = when (scale) {
"hr", "hour" -> time * 60 * 60
"min" -> time * 60
"sec" -> time
else -> 0
}
seconds += timeval
}
return if (seconds > 0) { seconds / 60 } else 0
} }
override val mainPage = mainPageOf( override val mainPage = mainPageOf(
@ -149,7 +133,7 @@ class XvideosProvider : MainAPI() {
this.posterUrl = poster this.posterUrl = poster
this.plot = title this.plot = title
this.tags = tags this.tags = tags
this.duration = getDurationFromTitle(title) this.duration = getDurationFromString(title)
} }
} }
} }
@ -234,17 +218,18 @@ class XvideosProvider : MainAPI() {
"(?<=contentUrl\\\":)(.*)(?=\\\",)".toRegex(setOfRegexOption) "(?<=contentUrl\\\":)(.*)(?=\\\",)".toRegex(setOfRegexOption)
.findAll(scriptdata).forEach { .findAll(scriptdata).forEach {
it.groupValues.forEach { link -> it.groupValues.forEach { link ->
val validlink = link.trim().trim('"').trim('\'') val validLinkVal = getLinkAndExt(link)
val valindlinkext = validlink.substringAfterLast(".").trim().uppercase() val validlink = validLinkVal.first
val validlinkext = validLinkVal.second
Log.i(Dev, "Result Default => $validlink") Log.i(Dev, "Result Default => $validlink")
callback( callback(
ExtractorLink( ExtractorLink(
source = this.name, source = this.name,
name = "${this.name} $valindlinkext", name = "${this.name} $validlinkext",
url = validlink, url = validlink,
referer = data, referer = data,
quality = Qualities.Unknown.value, quality = Qualities.Unknown.value,
isM3u8 = valindlinkext.startsWith("M3") isM3u8 = validlinkext.startsWith("M3")
) )
) )
} }
@ -252,59 +237,65 @@ class XvideosProvider : MainAPI() {
} }
//Fetch HLS links //Fetch HLS links
Log.i(Dev, "Fetching HLS Low link..") Log.i(Dev, "Fetching HLS Low link..")
"(?<=setVideoUrlLow\\()(.*?)(?=\\);)".toRegex(setOfRegexOption) Regex("(?<=setVideoUrlLow\\()(.*?)(?=\\);)", setOfRegexOption).findAll(scriptdata)
.findAll(scriptdata).forEach { .forEach {
it.groupValues.forEach { link -> it.groupValues.forEach { link ->
val validlink = link.trim().trim('"').trim('\'') val validLinkVal = getLinkAndExt(link)
Log.i(Dev, "Result HLS Low => $validlink") val validlink = validLinkVal.first
callback( val validlinkext = validLinkVal.second
ExtractorLink( Log.i(Dev, "Result HLS Low => $validlink")
source = this.name, callback(
name = "${this.name} MP4 Low", ExtractorLink(
url = validlink, source = this.name,
referer = data, name = "${this.name} $validlinkext Low",
quality = Qualities.Unknown.value url = validlink,
) referer = data,
quality = Qualities.Unknown.value
) )
} )
} }
}
Log.i(Dev, "Fetching HLS High link..") Log.i(Dev, "Fetching HLS High link..")
"(?<=setVideoUrlHigh\\()(.*?)(?=\\);)".toRegex(setOfRegexOption) Regex("(?<=setVideoUrlHigh\\()(.*?)(?=\\);)", setOfRegexOption).findAll(scriptdata)
.findAll(scriptdata).forEach { .forEach {
it.groupValues.forEach { link -> it.groupValues.forEach { link ->
val validlink = link.trim().trim('"').trim('\'') val validLinkVal = getLinkAndExt(link)
Log.i(Dev, "Result HLS High => $validlink") val validlink = validLinkVal.first
callback( val validlinkext = validLinkVal.second
ExtractorLink( Log.i(Dev, "Result HLS High => $validlink")
source = this.name, callback(
name = "${this.name} MP4 High", ExtractorLink(
url = validlink, source = this.name,
referer = data, name = "${this.name} $validlinkext High",
quality = Qualities.Unknown.value url = validlink,
) referer = data,
quality = Qualities.Unknown.value
) )
} )
} }
}
Log.i(Dev, "Fetching HLS Default link..") Log.i(Dev, "Fetching HLS Default link..")
"(?<=setVideoHLS\\()(.*?)(?=\\);)".toRegex(setOfRegexOption) Regex("(?<=setVideoHLS\\()(.*?)(?=\\);)", setOfRegexOption).findAll(scriptdata)
.findAll(scriptdata).forEach { .forEach {
it.groupValues.forEach { link -> it.groupValues.forEach { link ->
val validlink = link.trim().trim('"').trim('\'') val validLinkVal = getLinkAndExt(link)
Log.i(Dev, "Result HLS Default => $validlink") val validlink = validLinkVal.first
callback( val validlinkext = validLinkVal.second
ExtractorLink( Log.i(Dev, "Result HLS Default => $validlink")
source = this.name, callback(
name = "${this.name} Default", ExtractorLink(
url = validlink, source = this.name,
referer = data, name = "${this.name} $validlinkext Default",
quality = Qualities.Unknown.value, url = validlink,
isM3u8 = true referer = data,
) quality = Qualities.Unknown.value,
isM3u8 = true
) )
} )
} }
}
} }
return true return true
} }