From 740340f5befe2e0bfad1620b693567df349b4d24 Mon Sep 17 00:00:00 2001
From: Zaw <42999156+ImZaw@users.noreply.github.com>
Date: Thu, 25 Aug 2022 15:47:02 +0300
Subject: [PATCH] removed extractors since its in the app now
---
Extractors/build.gradle.kts | 10 ---
Extractors/src/main/AndroidManifest.xml | 2 -
.../kotlin/com/extractors/DoodExtractor.kt | 62 -------------------
.../kotlin/com/extractors/ExtractorPlugin.kt | 28 ---------
.../com/extractors/JWPlayerExtractor.kt | 61 ------------------
.../com/extractors/StreamTapeExtractor.kt | 33 ----------
.../com/extractors/StreamlareExtractor.kt | 60 ------------------
.../com/extractors/UpstreamExtractor.kt | 59 ------------------
.../kotlin/com/extractors/UqloadExtractor.kt | 49 ---------------
.../kotlin/com/extractors/VoeExtractor.kt | 51 ---------------
10 files changed, 415 deletions(-)
delete mode 100644 Extractors/build.gradle.kts
delete mode 100644 Extractors/src/main/AndroidManifest.xml
delete mode 100644 Extractors/src/main/kotlin/com/extractors/DoodExtractor.kt
delete mode 100644 Extractors/src/main/kotlin/com/extractors/ExtractorPlugin.kt
delete mode 100644 Extractors/src/main/kotlin/com/extractors/JWPlayerExtractor.kt
delete mode 100644 Extractors/src/main/kotlin/com/extractors/StreamTapeExtractor.kt
delete mode 100644 Extractors/src/main/kotlin/com/extractors/StreamlareExtractor.kt
delete mode 100644 Extractors/src/main/kotlin/com/extractors/UpstreamExtractor.kt
delete mode 100644 Extractors/src/main/kotlin/com/extractors/UqloadExtractor.kt
delete mode 100644 Extractors/src/main/kotlin/com/extractors/VoeExtractor.kt
diff --git a/Extractors/build.gradle.kts b/Extractors/build.gradle.kts
deleted file mode 100644
index 0c115e1..0000000
--- a/Extractors/build.gradle.kts
+++ /dev/null
@@ -1,10 +0,0 @@
-version = 1
-
-cloudstream {
- description = ""
- authors = listOf( "ImZaw" )
-
- status = 1
-
- tvTypes = listOf( "Others" )
-}
\ No newline at end of file
diff --git a/Extractors/src/main/AndroidManifest.xml b/Extractors/src/main/AndroidManifest.xml
deleted file mode 100644
index ddff5e9..0000000
--- a/Extractors/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/Extractors/src/main/kotlin/com/extractors/DoodExtractor.kt b/Extractors/src/main/kotlin/com/extractors/DoodExtractor.kt
deleted file mode 100644
index 238ac6c..0000000
--- a/Extractors/src/main/kotlin/com/extractors/DoodExtractor.kt
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.extractors
-
-import com.lagradost.cloudstream3.app
-import com.lagradost.cloudstream3.utils.ExtractorApi
-import com.lagradost.cloudstream3.utils.ExtractorLink
-import com.lagradost.cloudstream3.utils.getQualityFromName
-
-class DoodCxExtractor : DoodLaExtractor() {
- override var mainUrl = "https://dood.cx"
-}
-
-class DoodShExtractor : DoodLaExtractor() {
- override var mainUrl = "https://dood.sh"
-}
-class DoodWatchExtractor : DoodLaExtractor() {
- override var mainUrl = "https://dood.watch"
-}
-
-class DoodPmExtractor : DoodLaExtractor() {
- override var mainUrl = "https://dood.pm"
-}
-
-class DoodToExtractor : DoodLaExtractor() {
- override var mainUrl = "https://dood.to"
-}
-
-class DoodSoExtractor : DoodLaExtractor() {
- override var mainUrl = "https://dood.so"
-}
-
-class DoodWsExtractor : DoodLaExtractor() {
- override var mainUrl = "https://dood.ws"
-}
-
-
-open class DoodLaExtractor : ExtractorApi() {
- override var name = "DoodStream"
- override var mainUrl = "https://dood.la"
- override val requiresReferer = false
-
- override fun getExtractorUrl(id: String): String {
- return "$mainUrl/d/$id"
- }
-
- override suspend fun getUrl(url: String, referer: String?): List? {
- val response0 = app.get(url).text // html of DoodStream page to look for /pass_md5/...
- val md5 =mainUrl+(Regex("/pass_md5/[^']*").find(response0)?.value ?: return null) // get https://dood.ws/pass_md5/...
- val trueUrl = app.get(md5, referer = url).text + "zUEJeL3mUN?token=" + md5.substringAfterLast("/") //direct link to extract (zUEJeL3mUN is random)
- val quality = Regex("\\d{3,4}p").find(response0.substringAfter("").substringBefore(""))?.groupValues?.get(0)
- return listOf(
- ExtractorLink(
- trueUrl,
- this.name,
- trueUrl,
- mainUrl,
- getQualityFromName(quality),
- false
- )
- ) // links are valid in 8h
-
- }
-}
\ No newline at end of file
diff --git a/Extractors/src/main/kotlin/com/extractors/ExtractorPlugin.kt b/Extractors/src/main/kotlin/com/extractors/ExtractorPlugin.kt
deleted file mode 100644
index 296714e..0000000
--- a/Extractors/src/main/kotlin/com/extractors/ExtractorPlugin.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.extractors
-
-import com.lagradost.cloudstream3.plugins.CloudstreamPlugin
-import com.lagradost.cloudstream3.plugins.Plugin
-import android.content.Context
-
-@CloudstreamPlugin
-class ExtractorPlugin: Plugin() {
- override fun load(context: Context) {
- registerExtractorAPI(DoodLaExtractor())
- registerExtractorAPI(DoodCxExtractor())
- registerExtractorAPI(DoodShExtractor())
- registerExtractorAPI(DoodWatchExtractor())
- registerExtractorAPI(DoodPmExtractor())
- registerExtractorAPI(DoodToExtractor())
- registerExtractorAPI(DoodSoExtractor())
- registerExtractorAPI(DoodWsExtractor())
- registerExtractorAPI(Uqload())
- registerExtractorAPI(Uqload1())
- registerExtractorAPI(StreamTape())
- registerExtractorAPI(VoeExtractor())
- registerExtractorAPI(JWPlayer())
- registerExtractorAPI(VidBom())
- registerExtractorAPI(UpstreamExtractor())
- registerExtractorAPI(Streamlare())
- registerExtractorAPI(Slmaxed())
- }
-}
diff --git a/Extractors/src/main/kotlin/com/extractors/JWPlayerExtractor.kt b/Extractors/src/main/kotlin/com/extractors/JWPlayerExtractor.kt
deleted file mode 100644
index b1474f9..0000000
--- a/Extractors/src/main/kotlin/com/extractors/JWPlayerExtractor.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.extractors
-
-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.Qualities
-import com.lagradost.cloudstream3.utils.getQualityFromName
-
-class VidBom : JWPlayer() {
- override val name = "Vidbom"
- override val mainUrl = "https://vidbam.org"
-}
-
-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?
- )
-
-}
\ No newline at end of file
diff --git a/Extractors/src/main/kotlin/com/extractors/StreamTapeExtractor.kt b/Extractors/src/main/kotlin/com/extractors/StreamTapeExtractor.kt
deleted file mode 100644
index 8f3b865..0000000
--- a/Extractors/src/main/kotlin/com/extractors/StreamTapeExtractor.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.extractors
-
-import com.lagradost.cloudstream3.app
-import com.lagradost.cloudstream3.utils.ExtractorApi
-import com.lagradost.cloudstream3.utils.ExtractorLink
-import com.lagradost.cloudstream3.utils.Qualities
-
-class StreamTape : ExtractorApi() {
- override var name = "StreamTape"
- override var mainUrl = "https://streamtape.com"
- override val requiresReferer = false
-
- private val linkRegex =
- Regex("""'robotlink'\)\.innerHTML = '(.+?)'\+ \('(.+?)'\)""")
-
- override suspend fun getUrl(url: String, referer: String?): List? {
- with(app.get(url)) {
- linkRegex.find(this.text)?.let {
- val extractedUrl = "https:${it.groups[1]!!.value + it.groups[2]!!.value.substring(3,)}"
- return listOf(
- ExtractorLink(
- name,
- name,
- extractedUrl,
- url,
- Qualities.Unknown.value,
- )
- )
- }
- }
- return null
- }
-}
diff --git a/Extractors/src/main/kotlin/com/extractors/StreamlareExtractor.kt b/Extractors/src/main/kotlin/com/extractors/StreamlareExtractor.kt
deleted file mode 100644
index 35fb24f..0000000
--- a/Extractors/src/main/kotlin/com/extractors/StreamlareExtractor.kt
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.extractors
-
-import com.fasterxml.jackson.annotation.JsonProperty
-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.nicehttp.RequestBodyTypes
-import okhttp3.MediaType.Companion.toMediaTypeOrNull
-import okhttp3.RequestBody.Companion.toRequestBody
-
-
-class Streamlare : Slmaxed() {
- override val mainUrl = "https://streamlare.com/"
-}
-
-open class Slmaxed : ExtractorApi() {
- override val name = "Streamlare"
- override val mainUrl = "https://slmaxed.com/"
- override val requiresReferer = true
-
- // https://slmaxed.com/e/oLvgezw3LjPzbp8E -> oLvgezw3LjPzbp8E
- val embedRegex = Regex("""/e/([^/]*)""")
-
-
- data class JsonResponse(
- @JsonProperty val status: String? = null,
- @JsonProperty val message: String? = null,
- @JsonProperty val type: String? = null,
- @JsonProperty val token: String? = null,
- @JsonProperty val result: Map? = null
- )
-
- data class Result(
- @JsonProperty val label: String? = null,
- @JsonProperty val file: String? = null,
- @JsonProperty val type: String? = null
- )
-
- override suspend fun getUrl(url: String, referer: String?): List? {
- val id = embedRegex.find(url)!!.groupValues[1]
- val json = app.post(
- "${mainUrl}api/video/stream/get",
- requestBody = """{"id":"$id"}""".toRequestBody(RequestBodyTypes.JSON.toMediaTypeOrNull())
- ).parsed()
- return json.result?.mapNotNull {
- it.value.let { result ->
- ExtractorLink(
- this.name,
- this.name,
- result.file ?: return@mapNotNull null,
- url,
- result.label?.replace("p", "", ignoreCase = true)?.trim()?.toIntOrNull()
- ?: Qualities.Unknown.value,
- isM3u8 = result.type?.contains("hls", ignoreCase = true) == true
- )
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Extractors/src/main/kotlin/com/extractors/UpstreamExtractor.kt b/Extractors/src/main/kotlin/com/extractors/UpstreamExtractor.kt
deleted file mode 100644
index a2ec2d8..0000000
--- a/Extractors/src/main/kotlin/com/extractors/UpstreamExtractor.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.extractors
-
-import com.lagradost.cloudstream3.app
-import com.lagradost.cloudstream3.utils.ExtractorApi
-import com.lagradost.cloudstream3.utils.ExtractorLink
-import com.lagradost.cloudstream3.utils.Qualities
-
-class UpstreamExtractor: ExtractorApi() {
- override val name: String = "Upstream.to"
- override val mainUrl: String = "https://upstream.to"
- override val requiresReferer = true
-
- override suspend fun getUrl(url: String, referer: String?): List {
- // WIP: m3u8 link fetched but sometimes not playing
- //Log.i(this.name, "Result => (no extractor) ${url}")
- val sources: MutableList = mutableListOf()
- val doc = app.get(url, referer = referer).text
- if (doc.isNotBlank()) {
- var reg = Regex("(?<=master)(.*)(?=hls)")
- val result = reg.find(doc)?.groupValues?.map {
- it.trim('|')
- }?.toList()
- reg = Regex("(?<=\\|file\\|)(.*)(?=\\|remove\\|)")
- val domainList = reg.find(doc)?.groupValues?.get(1)?.split("|")
- var domain = when (!domainList.isNullOrEmpty()) {
- true -> {
- if (domainList.isNotEmpty()) {
- var domName = ""
- for (part in domainList) {
- domName = "${part}.${domName}"
- }
- domName.trimEnd('.')
- } else { "" }
- }
- false -> ""
- }
- //Log.i(this.name, "Result => (domain) ${domain}")
- if (domain.isEmpty()) {
- domain = "s96.upstreamcdn.co"
- //Log.i(this.name, "Result => (default domain) ${domain}")
- }
-
- result?.forEach {
- val linkUrl = "https://${domain}/hls/${it}/master.m3u8"
- sources.add(
- ExtractorLink(
- name = "Upstream m3u8",
- source = this.name,
- url = linkUrl,
- quality = Qualities.Unknown.value,
- referer = referer ?: linkUrl,
- isM3u8 = true
- )
- )
- }
- }
- return sources
- }
-}
\ No newline at end of file
diff --git a/Extractors/src/main/kotlin/com/extractors/UqloadExtractor.kt b/Extractors/src/main/kotlin/com/extractors/UqloadExtractor.kt
deleted file mode 100644
index 06fd459..0000000
--- a/Extractors/src/main/kotlin/com/extractors/UqloadExtractor.kt
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.extractors
-
-import com.lagradost.cloudstream3.utils.*
-import com.lagradost.cloudstream3.app
-
-class Uqload1 : Uqload() {
- override var mainUrl = "https://uqload.com"
-}
-
-open class Uqload : ExtractorApi() {
- override val name: String = "Uqload"
- override val mainUrl: String = "https://www.uqload.com"
- private val srcRegex = Regex("""sources:.\[(.*?)\]""") // would be possible to use the parse and find src attribute
- override val requiresReferer = true
-
-
- override suspend fun getUrl(url: String, referer: String?): List? {
- val lang = url.substring(0, 2)
- val flag =
- if (lang == "vo") {
- " \uD83C\uDDEC\uD83C\uDDE7"
- }
- else if (lang == "vf"){
- " \uD83C\uDDE8\uD83C\uDDF5"
- } else {
- ""
- }
-
- val cleaned_url = if (lang == "ht") { // if url doesn't contain a flag and the url starts with http://
- url
- } else {
- url.substring(2, url.length)
- }
- with(app.get(cleaned_url)) { // raised error ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED (3003) is due to the response: "error_nofile"
- srcRegex.find(this.text)?.groupValues?.get(1)?.replace("\"", "")?.let { link ->
- return listOf(
- ExtractorLink(
- name,
- name + flag,
- link,
- cleaned_url,
- Qualities.Unknown.value,
- )
- )
- }
- }
- return null
- }
-}
diff --git a/Extractors/src/main/kotlin/com/extractors/VoeExtractor.kt b/Extractors/src/main/kotlin/com/extractors/VoeExtractor.kt
deleted file mode 100644
index 6b6fd6f..0000000
--- a/Extractors/src/main/kotlin/com/extractors/VoeExtractor.kt
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.extractors
-
-import com.fasterxml.jackson.annotation.JsonProperty
-import com.lagradost.cloudstream3.app
-import com.lagradost.cloudstream3.utils.AppUtils.parseJson
-import com.lagradost.cloudstream3.utils.ExtractorApi
-import com.lagradost.cloudstream3.utils.ExtractorLink
-import com.lagradost.cloudstream3.utils.getQualityFromName
-
-open class VoeExtractor : ExtractorApi() {
- override val name: String = "Voe"
- override val mainUrl: String = "https://voe.sx"
- override val requiresReferer = false
-
- private data class ResponseLinks(
- @JsonProperty("hls") val url: String?,
- @JsonProperty("video_height") val label: Int?
- //val type: String // Mp4
- )
-
- override suspend fun getUrl(url: String, referer: String?): List {
- val extractedLinksList: MutableList = mutableListOf()
- val doc = app.get(url).text
- if (doc.isNotBlank()) {
- val start = "const sources ="
- var src = doc.substring(doc.indexOf(start))
- src = src.substring(start.length, src.indexOf(";"))
- .replace("0,", "0")
- .trim()
- //Log.i(this.name, "Result => (src) ${src}")
- parseJson(src)?.let { voelink ->
- //Log.i(this.name, "Result => (voelink) ${voelink}")
- val linkUrl = voelink.url
- val linkLabel = voelink.label?.toString() ?: ""
- if (!linkUrl.isNullOrEmpty()) {
- extractedLinksList.add(
- ExtractorLink(
- name = this.name,
- source = this.name,
- url = linkUrl,
- quality = getQualityFromName(linkLabel),
- referer = url,
- isM3u8 = true
- )
- )
- }
- }
- }
- return extractedLinksList
- }
-}
\ No newline at end of file