2022-08-20 07:46:57 +00:00
|
|
|
package com.lagradost.cloudstream3.extractors
|
|
|
|
|
|
|
|
import com.lagradost.cloudstream3.app
|
|
|
|
import com.lagradost.cloudstream3.utils.ExtractorApi
|
|
|
|
import com.lagradost.cloudstream3.utils.ExtractorLink
|
|
|
|
import com.lagradost.cloudstream3.utils.Qualities
|
|
|
|
import com.lagradost.cloudstream3.utils.getAndUnpack
|
|
|
|
|
2022-11-06 11:13:45 +00:00
|
|
|
open class Mp4Upload : ExtractorApi() {
|
2022-08-20 07:46:57 +00:00
|
|
|
override var name = "Mp4Upload"
|
|
|
|
override var mainUrl = "https://www.mp4upload.com"
|
|
|
|
private val srcRegex = Regex("""player\.src\("(.*?)"""")
|
2023-08-18 23:37:48 +00:00
|
|
|
private val srcRegex2 = Regex("""player\.src\([\w\W]*src: "(.*?)"""")
|
2022-08-20 07:46:57 +00:00
|
|
|
|
2023-08-18 23:37:48 +00:00
|
|
|
override val requiresReferer = true
|
|
|
|
private val idMatch = Regex("""mp4upload\.com/(embed-|)([A-Za-z0-9]*)""")
|
2022-08-20 07:46:57 +00:00
|
|
|
override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink>? {
|
2023-08-18 23:37:48 +00:00
|
|
|
val realUrl = idMatch.find(url)?.groupValues?.get(2)?.let { id ->
|
|
|
|
"$mainUrl/embed-$id.html"
|
|
|
|
} ?: url
|
|
|
|
val response = app.get(realUrl)
|
|
|
|
val unpackedText = getAndUnpack(response.text)
|
|
|
|
val quality =
|
|
|
|
unpackedText.lowercase().substringAfter(" height=").substringBefore(" ").toIntOrNull()
|
|
|
|
srcRegex.find(unpackedText)?.groupValues?.get(1)?.let { link ->
|
|
|
|
return listOf(
|
|
|
|
ExtractorLink(
|
|
|
|
name,
|
|
|
|
name,
|
|
|
|
link,
|
|
|
|
url,
|
|
|
|
quality ?: Qualities.Unknown.value,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
srcRegex2.find(unpackedText)?.groupValues?.get(1)?.let { link ->
|
|
|
|
return listOf(
|
|
|
|
ExtractorLink(
|
|
|
|
name,
|
|
|
|
name,
|
|
|
|
link,
|
|
|
|
url,
|
|
|
|
quality ?: Qualities.Unknown.value,
|
|
|
|
)
|
|
|
|
)
|
2022-08-20 07:46:57 +00:00
|
|
|
}
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|