diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/YoutubeExtractor.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/YoutubeExtractor.kt index 9a059468..de458739 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/extractors/YoutubeExtractor.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/YoutubeExtractor.kt @@ -5,6 +5,7 @@ import com.lagradost.cloudstream3.mvvm.Resource import com.lagradost.cloudstream3.mvvm.safeApiCall import com.lagradost.cloudstream3.utils.ExtractorApi import com.lagradost.cloudstream3.utils.ExtractorLink +import com.lagradost.cloudstream3.utils.schemaStripRegex import org.schabi.newpipe.extractor.ServiceList import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeStreamLinkHandlerFactory @@ -35,7 +36,11 @@ open class YoutubeExtractor : ExtractorApi() { val streams = safeApiCall { val streams = ytVideos[url] ?: let { val link = - YoutubeStreamLinkHandlerFactory.getInstance().fromUrl(url) + YoutubeStreamLinkHandlerFactory.getInstance().fromUrl( + url.replace( + schemaStripRegex, "" + ) + ) val s = object : YoutubeStreamExtractor( ServiceList.YouTube, diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt index b89ca004..1bb6dbb0 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt @@ -40,7 +40,7 @@ data class ExtractorLinkPlayList( override val headers: Map = mapOf(), /** Used for getExtractorVerifierJob() */ override val extractorData: String? = null, - ) : ExtractorLink( +) : ExtractorLink( source, name, // Blank as un-used @@ -92,6 +92,12 @@ data class ExtractorSubtitleLink( override val headers: Map = mapOf() ) : VideoDownloadManager.IDownloadableMinimum +/** + * Removes https:// and www. + * To match urls regardless of schema, perhaps Uri() can be used? + */ +val schemaStripRegex = Regex("""^(https:|)//(www\.|)""") + enum class Qualities(var value: Int) { Unknown(400), P144(144), // 144p @@ -146,7 +152,9 @@ suspend fun loadExtractor( callback: (ExtractorLink) -> Unit ): Boolean { for (extractor in extractorApis) { - if (url.startsWith(extractor.mainUrl)) { + if (url.replace(schemaStripRegex, "") + .startsWith(extractor.mainUrl.replace(schemaStripRegex, "")) + ) { extractor.getSafeUrl(url, referer)?.forEach(callback) return true }