add infoHash to stremio
(i've yet to find a working link)
This commit is contained in:
parent
4f74324be3
commit
a3a4df3768
|
@ -13,6 +13,8 @@ import com.lagradost.cloudstream3.utils.loadExtractor
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import java.net.URLEncoder
|
import java.net.URLEncoder
|
||||||
|
|
||||||
|
private const val TRACKER_LIST_URL = "https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt"
|
||||||
|
|
||||||
class StremioProvider : MainAPI() {
|
class StremioProvider : MainAPI() {
|
||||||
override var mainUrl = "https://stremio.github.io/stremio-static-addon-example"
|
override var mainUrl = "https://stremio.github.io/stremio-static-addon-example"
|
||||||
override var name = "Stremio example"
|
override var name = "Stremio example"
|
||||||
|
@ -53,7 +55,6 @@ class StremioProvider : MainAPI() {
|
||||||
subtitleCallback: (SubtitleFile) -> Unit,
|
subtitleCallback: (SubtitleFile) -> Unit,
|
||||||
callback: (ExtractorLink) -> Unit
|
callback: (ExtractorLink) -> Unit
|
||||||
): Boolean {
|
): Boolean {
|
||||||
Log.i("Stremio", data)
|
|
||||||
val res = tryParseJson<StreamsResponse>(app.get(data).text) ?: return false
|
val res = tryParseJson<StreamsResponse>(app.get(data).text) ?: return false
|
||||||
res.streams.forEach { stream ->
|
res.streams.forEach { stream ->
|
||||||
stream.runCallback(subtitleCallback, callback)
|
stream.runCallback(subtitleCallback, callback)
|
||||||
|
@ -164,7 +165,9 @@ class StremioProvider : MainAPI() {
|
||||||
val url: String?,
|
val url: String?,
|
||||||
val ytId: String?,
|
val ytId: String?,
|
||||||
val externalUrl: String?,
|
val externalUrl: String?,
|
||||||
val behaviorHints: JSONObject?
|
val behaviorHints: JSONObject?,
|
||||||
|
val infoHash: String?,
|
||||||
|
val sources: List<String> = emptyList()
|
||||||
) {
|
) {
|
||||||
suspend fun runCallback(subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit) {
|
suspend fun runCallback(subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit) {
|
||||||
if (url != null) {
|
if (url != null) {
|
||||||
|
@ -205,6 +208,33 @@ class StremioProvider : MainAPI() {
|
||||||
if (externalUrl != null) {
|
if (externalUrl != null) {
|
||||||
loadExtractor(externalUrl, subtitleCallback, callback)
|
loadExtractor(externalUrl, subtitleCallback, callback)
|
||||||
}
|
}
|
||||||
|
if (infoHash != null) {
|
||||||
|
val resp = app.get(TRACKER_LIST_URL).text
|
||||||
|
val otherTrackers = resp
|
||||||
|
.split("\n")
|
||||||
|
.filterIndexed{i, s -> i%2==0}
|
||||||
|
.filter{s -> !s.isNullOrEmpty()}
|
||||||
|
.map{it -> "&tr=$it"}
|
||||||
|
.joinToString("")
|
||||||
|
|
||||||
|
val sourceTrackers = sources
|
||||||
|
.filter{it->it.startsWith("tracker:")}
|
||||||
|
.map{it->it.removePrefix("tracker:")}
|
||||||
|
.filter{s -> !s.isNullOrEmpty()}
|
||||||
|
.map{it -> "&tr=$it"}
|
||||||
|
.joinToString("")
|
||||||
|
|
||||||
|
val magnet = "magnet:?xt=urn:btih:${infoHash}${sourceTrackers}"
|
||||||
|
callback.invoke(
|
||||||
|
ExtractorLink(
|
||||||
|
name ?: "",
|
||||||
|
title ?: name ?: "",
|
||||||
|
magnet,
|
||||||
|
"",
|
||||||
|
Qualities.Unknown.value
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue