mirror of
https://github.com/recloudstream/cloudstream-extensions.git
synced 2024-08-15 03:03:54 +00:00
Ported over all movie providers (some disabled)
This commit is contained in:
parent
c0509c5db9
commit
5c5a8d142f
283 changed files with 17532 additions and 76 deletions
22
OlgplyProvider/build.gradle.kts
Normal file
22
OlgplyProvider/build.gradle.kts
Normal file
|
@ -0,0 +1,22 @@
|
|||
// use an integer for version numbers
|
||||
version = 1
|
||||
|
||||
|
||||
cloudstream {
|
||||
// All of these properties are optional, you can safely remove them
|
||||
|
||||
// description = "Lorem Ipsum"
|
||||
// authors = listOf("Cloudburst")
|
||||
|
||||
/**
|
||||
* Status int as the following:
|
||||
* 0: Down
|
||||
* 1: Ok
|
||||
* 2: Slow
|
||||
* 3: Beta only
|
||||
* */
|
||||
status = 1 // will be 3 if unspecified
|
||||
|
||||
// Set to true to get an 18+ symbol next to the plugin
|
||||
adult = false // will be false if unspecified
|
||||
}
|
2
OlgplyProvider/src/main/AndroidManifest.xml
Normal file
2
OlgplyProvider/src/main/AndroidManifest.xml
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest package="com.lagradost"/>
|
111
OlgplyProvider/src/main/kotlin/com/lagradost/OlgplyProvider.kt
Normal file
111
OlgplyProvider/src/main/kotlin/com/lagradost/OlgplyProvider.kt
Normal file
|
@ -0,0 +1,111 @@
|
|||
package com.lagradost
|
||||
|
||||
import com.lagradost.cloudstream3.SubtitleFile
|
||||
import com.lagradost.cloudstream3.TvType
|
||||
import com.lagradost.cloudstream3.app
|
||||
import com.lagradost.cloudstream3.metaproviders.TmdbLink
|
||||
import com.lagradost.cloudstream3.metaproviders.TmdbProvider
|
||||
import com.lagradost.cloudstream3.network.WebViewResolver
|
||||
import com.lagradost.cloudstream3.utils.AppUtils.parseJson
|
||||
import com.lagradost.cloudstream3.utils.ExtractorLink
|
||||
import com.lagradost.cloudstream3.utils.Qualities
|
||||
import com.lagradost.nicehttp.requestCreator
|
||||
import org.mozilla.javascript.Context
|
||||
import org.mozilla.javascript.Scriptable
|
||||
import org.mozilla.javascript.ScriptableObject
|
||||
|
||||
class OlgplyProvider : TmdbProvider() {
|
||||
override var mainUrl = "https://olgply.com"
|
||||
override val apiName = "Olgply"
|
||||
override var name = "Olgply"
|
||||
override val instantLinkLoading = true
|
||||
override val useMetaLoadResponse = true
|
||||
override val supportedTypes = setOf(TvType.TvSeries, TvType.Movie)
|
||||
|
||||
private suspend fun loadLinksWithWebView(
|
||||
url: String,
|
||||
// subtitleCallback: (SubtitleFile) -> Unit,
|
||||
callback: (ExtractorLink) -> Unit
|
||||
) {
|
||||
val foundVideo = WebViewResolver(
|
||||
Regex("""movies4discord""")
|
||||
).resolveUsingWebView(
|
||||
requestCreator("GET", url)
|
||||
).first ?: return
|
||||
|
||||
callback.invoke(
|
||||
ExtractorLink(
|
||||
this.name,
|
||||
"Movies4Discord",
|
||||
foundVideo.url.toString(),
|
||||
"",
|
||||
Qualities.Unknown.value
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
override suspend fun loadLinks(
|
||||
data: String,
|
||||
isCasting: Boolean,
|
||||
subtitleCallback: (SubtitleFile) -> Unit,
|
||||
callback: (ExtractorLink) -> Unit
|
||||
): Boolean {
|
||||
val mappedData = parseJson<TmdbLink>(data)
|
||||
val tmdbId = mappedData.tmdbID ?: return false
|
||||
val jsRegex = Regex("""eval\(.*\);""")
|
||||
|
||||
val apiUrl =
|
||||
"https://olgply.xyz/${tmdbId}${mappedData.season?.let { "/$it" } ?: ""}${mappedData.episode?.let { "/$it" } ?: ""}"
|
||||
val html =
|
||||
app.get(apiUrl).text
|
||||
val rhino = Context.enter()
|
||||
rhino.optimizationLevel = -1
|
||||
val scope: Scriptable = rhino.initSafeStandardObjects()
|
||||
val documentJs = """
|
||||
Plyr = function(){};
|
||||
|
||||
hlsPrototype = {
|
||||
loadSource(url) {
|
||||
this.url = url;
|
||||
}
|
||||
};
|
||||
|
||||
function Hls() {};
|
||||
Hls.isSupported = function(){return true};
|
||||
|
||||
Hls.prototype = hlsPrototype;
|
||||
Hls.prototype.constructor = Hls;
|
||||
|
||||
document = {
|
||||
"querySelector" : function() {}
|
||||
};
|
||||
""".trimIndent()
|
||||
|
||||
val foundJs = jsRegex.find(html)?.groupValues?.getOrNull(0) ?: return false
|
||||
try {
|
||||
rhino.evaluateString(scope, documentJs + foundJs, "JavaScript", 1, null)
|
||||
} catch (e: Exception) {
|
||||
}
|
||||
|
||||
val hls = scope.get("hls", scope) as? ScriptableObject
|
||||
|
||||
if (hls != null) {
|
||||
callback.invoke(
|
||||
ExtractorLink(
|
||||
this.name,
|
||||
this.name,
|
||||
hls["url"].toString(),
|
||||
this.mainUrl + "/",
|
||||
Qualities.Unknown.value,
|
||||
headers = mapOf("range" to "bytes=0-"),
|
||||
isM3u8 = true
|
||||
)
|
||||
)
|
||||
} else {
|
||||
// Disgraceful fallback, but the js for Movies4Discord refuses to work correctly :(
|
||||
loadLinksWithWebView(apiUrl, callback)
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
|
||||
package com.lagradost
|
||||
|
||||
import com.lagradost.cloudstream3.plugins.CloudstreamPlugin
|
||||
import com.lagradost.cloudstream3.plugins.Plugin
|
||||
import android.content.Context
|
||||
|
||||
@CloudstreamPlugin
|
||||
class OlgplyProviderPlugin: Plugin() {
|
||||
override fun load(context: Context) {
|
||||
// All providers should be added in this manner. Please don't edit the providers list directly.
|
||||
registerMainAPI(OlgplyProvider())
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue