From dfac8a1ac99ee0eb4533f801a72aa0dea4144950 Mon Sep 17 00:00:00 2001 From: Zaw <42999156+ImZaw@users.noreply.github.com> Date: Tue, 27 Sep 2022 18:42:00 +0300 Subject: [PATCH] shahid4u update --- Shahid4uProvider/build.gradle.kts | 2 +- .../kotlin/com/shahid4u/JWPlayerExtractor.kt | 67 +++++++++++++++++++ .../kotlin/com/shahid4u/Shahid4uPlugin.kt | 3 + .../kotlin/com/shahid4u/Shahid4uProvider.kt | 2 +- 4 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 Shahid4uProvider/src/main/kotlin/com/shahid4u/JWPlayerExtractor.kt diff --git a/Shahid4uProvider/build.gradle.kts b/Shahid4uProvider/build.gradle.kts index f29aee4..3986cae 100644 --- a/Shahid4uProvider/build.gradle.kts +++ b/Shahid4uProvider/build.gradle.kts @@ -1,4 +1,4 @@ -version = 3 +version = 4 cloudstream { description = "" diff --git a/Shahid4uProvider/src/main/kotlin/com/shahid4u/JWPlayerExtractor.kt b/Shahid4uProvider/src/main/kotlin/com/shahid4u/JWPlayerExtractor.kt new file mode 100644 index 0000000..a7ca06c --- /dev/null +++ b/Shahid4uProvider/src/main/kotlin/com/shahid4u/JWPlayerExtractor.kt @@ -0,0 +1,67 @@ +package com.shahid4u + +import com.fasterxml.jackson.annotation.JsonProperty +import com.lagradost.cloudstream3.app +import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson +import com.lagradost.cloudstream3.utils.ExtractorApi +import com.lagradost.cloudstream3.utils.ExtractorLink +import com.lagradost.cloudstream3.utils.getQualityFromName + +open class JWPlayer : ExtractorApi() { + override val name = "JWPlayer" + override val mainUrl = "https://www.jwplayer.com" + override val requiresReferer = false + + override suspend fun getUrl(url: String, referer: String?): List? { + val sources = mutableListOf() + with(app.get(url).document) { + val data = this.select("script").mapNotNull { script -> + if (script.data().contains("sources: [")) { + script.data().substringAfter("sources: [") + .substringBefore("],").replace("'", "\"") + } else if (script.data().contains("otakudesu('")) { + script.data().substringAfter("otakudesu('") + .substringBefore("');") + } else { + null + } + } + + tryParseJson>("$data")?.map { + sources.add( + ExtractorLink( + name, + name, + it.file, + referer = url, + quality = getQualityFromName( + Regex("(\\d{3,4}p)").find(it.file)?.groupValues?.get( + 1 + ) + ) + ) + ) + } + } + return sources + } + + private data class ResponseSource( + @JsonProperty("file") val file: String, + @JsonProperty("type") val type: String?, + @JsonProperty("label") val label: String? + ) + +} +class VidHD : JWPlayer() { + override val name = "VidHD" + override val mainUrl = "https://vidhd.fun" +} +class GoStream : JWPlayer() { + override val name = "GoStream" + override val mainUrl = "https://gostream.pro" +} +class Vidbom : JWPlayer() { + override val name = "Vidbom" + override val mainUrl = "https://vidbom.com" +} \ No newline at end of file diff --git a/Shahid4uProvider/src/main/kotlin/com/shahid4u/Shahid4uPlugin.kt b/Shahid4uProvider/src/main/kotlin/com/shahid4u/Shahid4uPlugin.kt index 9e825b5..a1404e1 100644 --- a/Shahid4uProvider/src/main/kotlin/com/shahid4u/Shahid4uPlugin.kt +++ b/Shahid4uProvider/src/main/kotlin/com/shahid4u/Shahid4uPlugin.kt @@ -7,5 +7,8 @@ import android.content.Context class Shahid4uPlugin: Plugin() { override fun load(context: Context) { registerMainAPI(Shahid4u()) + registerExtractorAPI(VidHD()) + registerExtractorAPI(GoStream()) + registerExtractorAPI(Vidbom()) } } \ No newline at end of file diff --git a/Shahid4uProvider/src/main/kotlin/com/shahid4u/Shahid4uProvider.kt b/Shahid4uProvider/src/main/kotlin/com/shahid4u/Shahid4uProvider.kt index 5125ab3..530fb61 100644 --- a/Shahid4uProvider/src/main/kotlin/com/shahid4u/Shahid4uProvider.kt +++ b/Shahid4uProvider/src/main/kotlin/com/shahid4u/Shahid4uProvider.kt @@ -161,7 +161,7 @@ class Shahid4u : MainAPI() { ): Boolean { val watchUrl = "$data/watch" app.get(watchUrl).document.select( - ".servers-list li:contains(ok), li:contains(Streamtape), li:contains(DoodStream), li:contains(Uqload), li:contains(Voe), li:contains(VIDBOM), li:contains(Upstream)" + ".servers-list li:contains(ok), li:contains(Streamtape), li:contains(DoodStream), li:contains(Uqload), li:contains(Voe), li:contains(VIDBOM), li:contains(Upstream), li:contains(السيرفر الخاص), li:contains(GoStream), li:contains(الخاص 1080p), li:contains(vidbom), li:contains(Vidbom)" ).apmap { val id = it.attr("data-id") val i = it.attr("data-i")