diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/M4uhd.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/M4uhd.kt new file mode 100644 index 00000000..a14d658e --- /dev/null +++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/M4uhd.kt @@ -0,0 +1,46 @@ +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.M3u8Helper +import com.lagradost.cloudstream3.utils.getQualityFromName +import java.net.URI + +open class AsianLoad : ExtractorApi() { + override var name = "M4uhd" + override var mainUrl = "https://ww1.m4uhd.tv" + override val requiresReferer = true + + private val sourceRegex = Regex("""sources:[\W\w]*?file:\s*?["'](.*?)["']""") + override suspend fun getUrl(url: String, referer: String?): List { + val extractedLinksList: MutableList = mutableListOf() + with(app.get(url, referer = referer)) { + sourceRegex.findAll(this.text).forEach { sourceMatch -> + val extractedUrl = sourceMatch.groupValues[1] + // Trusting this isn't mp4, may fuck up stuff + if (URI(extractedUrl).path.endsWith(".m3u8")) { + M3u8Helper.generateM3u8( + name, + extractedUrl, + url, + headers = mapOf("referer" to this.url) + ).forEach { link -> + extractedLinksList.add(link) + } + } else if (extractedUrl.endsWith(".mp4")) { + extractedLinksList.add( + ExtractorLink( + name, + name, + extractedUrl, + url.replace(" ", "%20"), + getQualityFromName(sourceMatch.groupValues[2]), + ) + ) + } + } + return extractedLinksList + } + } +}