mirror of
https://github.com/hexated/cloudstream-extensions-hexated.git
synced 2024-08-15 00:03:22 +00:00
fixed some providers
This commit is contained in:
parent
6a68f2213a
commit
9d0175ff0f
8 changed files with 114 additions and 20 deletions
|
@ -1,5 +1,5 @@
|
||||||
// use an integer for version numbers
|
// use an integer for version numbers
|
||||||
version = 3
|
version = 4
|
||||||
|
|
||||||
|
|
||||||
cloudstream {
|
cloudstream {
|
||||||
|
|
|
@ -9,7 +9,7 @@ import java.util.ArrayList
|
||||||
|
|
||||||
|
|
||||||
class Gomunimeis : MainAPI() {
|
class Gomunimeis : MainAPI() {
|
||||||
override var mainUrl = "https://gomunime.is"
|
override var mainUrl = "https://anoboy.life"
|
||||||
override var name = "Gomunime.is"
|
override var name = "Gomunime.is"
|
||||||
override val hasMainPage = true
|
override val hasMainPage = true
|
||||||
override var lang = "id"
|
override var lang = "id"
|
||||||
|
@ -66,7 +66,7 @@ class Gomunimeis : MainAPI() {
|
||||||
|
|
||||||
return newAnimeSearchResponse(
|
return newAnimeSearchResponse(
|
||||||
postTitle ?: return null,
|
postTitle ?: return null,
|
||||||
"$mainUrl/anime/$postName.$salt",
|
"$mainUrl/anime/$postName",
|
||||||
TvType.TvSeries,
|
TvType.TvSeries,
|
||||||
) {
|
) {
|
||||||
this.posterUrl = "$mainImageUrl/$image"
|
this.posterUrl = "$mainImageUrl/$image"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// use an integer for version numbers
|
// use an integer for version numbers
|
||||||
version = 12
|
version = 13
|
||||||
|
|
||||||
|
|
||||||
cloudstream {
|
cloudstream {
|
||||||
|
|
93
OploverzProvider/src/main/kotlin/com/hexated/Extractors.kt
Normal file
93
OploverzProvider/src/main/kotlin/com/hexated/Extractors.kt
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
package com.hexated
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
|
import com.lagradost.cloudstream3.SubtitleFile
|
||||||
|
import com.lagradost.cloudstream3.app
|
||||||
|
import com.lagradost.cloudstream3.utils.*
|
||||||
|
|
||||||
|
class Krakenfiles : ExtractorApi() {
|
||||||
|
override val name = "Krakenfiles"
|
||||||
|
override val mainUrl = "https://krakenfiles.com"
|
||||||
|
override val requiresReferer = false
|
||||||
|
|
||||||
|
override suspend fun getUrl(
|
||||||
|
url: String,
|
||||||
|
referer: String?,
|
||||||
|
subtitleCallback: (SubtitleFile) -> Unit,
|
||||||
|
callback: (ExtractorLink) -> Unit
|
||||||
|
) {
|
||||||
|
val id = Regex("(?://|\\.)(krakenfiles\\.com)/(?:view|embed-video)?/([\\da-zA-Z]+)").find(url)?.groupValues?.get(2)
|
||||||
|
val doc = app.get("$mainUrl/embed-video/$id").document
|
||||||
|
val link = doc.selectFirst("source")?.attr("src")
|
||||||
|
|
||||||
|
callback.invoke(
|
||||||
|
ExtractorLink(
|
||||||
|
this.name,
|
||||||
|
this.name,
|
||||||
|
httpsify(link ?: return),
|
||||||
|
"",
|
||||||
|
Qualities.Unknown.value
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
data class Source(
|
||||||
|
@JsonProperty("url") val url: String? = null,
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class Gofile : ExtractorApi() {
|
||||||
|
override val name = "Gofile"
|
||||||
|
override val mainUrl = "https://gofile.io"
|
||||||
|
override val requiresReferer = false
|
||||||
|
private val mainApi = "https://api.gofile.io"
|
||||||
|
|
||||||
|
override suspend fun getUrl(
|
||||||
|
url: String,
|
||||||
|
referer: String?,
|
||||||
|
subtitleCallback: (SubtitleFile) -> Unit,
|
||||||
|
callback: (ExtractorLink) -> Unit
|
||||||
|
) {
|
||||||
|
val id =
|
||||||
|
Regex("(?://|\\.)(gofile\\.io)/(?:\\?c=|d/)([\\da-zA-Z]+)").find(url)?.groupValues?.get(
|
||||||
|
2
|
||||||
|
)
|
||||||
|
val token = app.get("$mainApi/createAccount").parsedSafe<Account>()?.data?.get("token")
|
||||||
|
app.get("$mainApi/getContent?contentId=$id&token=$token&websiteToken=12345")
|
||||||
|
.parsedSafe<Source>()?.data?.contents?.forEach {
|
||||||
|
callback.invoke(
|
||||||
|
ExtractorLink(
|
||||||
|
this.name,
|
||||||
|
this.name,
|
||||||
|
it.value["link"] ?: return,
|
||||||
|
"",
|
||||||
|
getQuality(it.value["name"]),
|
||||||
|
headers = mapOf(
|
||||||
|
"Cookie" to "accountToken=$token"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getQuality(str: String?): Int {
|
||||||
|
return Regex("(\\d{3,4})[pP]").find(str ?: "")?.groupValues?.getOrNull(1)?.toIntOrNull()
|
||||||
|
?: Qualities.Unknown.value
|
||||||
|
}
|
||||||
|
|
||||||
|
data class Account(
|
||||||
|
@JsonProperty("data") val data: HashMap<String, String>? = null,
|
||||||
|
)
|
||||||
|
|
||||||
|
data class Data(
|
||||||
|
@JsonProperty("contents") val contents: HashMap<String, HashMap<String, String>>? = null,
|
||||||
|
)
|
||||||
|
|
||||||
|
data class Source(
|
||||||
|
@JsonProperty("data") val data: Data? = null,
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
|
@ -216,7 +216,7 @@ class OploverzProvider : MainAPI() {
|
||||||
link.name,
|
link.name,
|
||||||
link.url,
|
link.url,
|
||||||
link.referer,
|
link.referer,
|
||||||
if (source.startsWith(acefile)) getQualityFromName(quality) else link.quality,
|
getQualityFromName(quality),
|
||||||
link.isM3u8,
|
link.isM3u8,
|
||||||
link.headers,
|
link.headers,
|
||||||
link.extractorData
|
link.extractorData
|
||||||
|
|
|
@ -11,5 +11,7 @@ class OploverzProviderPlugin: Plugin() {
|
||||||
// All providers should be added in this manner. Please don't edit the providers list directly.
|
// All providers should be added in this manner. Please don't edit the providers list directly.
|
||||||
registerMainAPI(OploverzProvider())
|
registerMainAPI(OploverzProvider())
|
||||||
registerExtractorAPI(Streamhide())
|
registerExtractorAPI(Streamhide())
|
||||||
|
registerExtractorAPI(Krakenfiles())
|
||||||
|
registerExtractorAPI(Gofile())
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
import org.jetbrains.kotlin.konan.properties.Properties
|
import org.jetbrains.kotlin.konan.properties.Properties
|
||||||
|
|
||||||
// use an integer for version numbers
|
// use an integer for version numbers
|
||||||
version = 125
|
version = 126
|
||||||
|
|
||||||
android {
|
android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
|
|
|
@ -932,21 +932,16 @@ object SoraExtractor : SoraStream() {
|
||||||
.parsedSafe<AllanimeResponses>()?.data?.episode?.sourceUrls?.find { it.sourceName == "Ac" }
|
.parsedSafe<AllanimeResponses>()?.data?.episode?.sourceUrls?.find { it.sourceName == "Ac" }
|
||||||
val serverUrl = fixUrl(
|
val serverUrl = fixUrl(
|
||||||
server?.sourceUrl?.replace("/clock", "/clock.json") ?: return@apmap,
|
server?.sourceUrl?.replace("/clock", "/clock.json") ?: return@apmap,
|
||||||
if(tl == "sub") "https://allanimenews.com" else "https://mblog.allanimenews.com"
|
"https://blog.allanime.pro"
|
||||||
)
|
)
|
||||||
app.get(serverUrl)
|
app.get(serverUrl)
|
||||||
.parsedSafe<AllanimeLinks>()?.links?.forEach { link ->
|
.parsedSafe<AllanimeLinks>()?.links?.filter { it.resolutionStr == "RAW" && it.hls == true }?.forEach { source ->
|
||||||
link.portData?.streams?.filter {
|
val tlName = if (translation == "sub") "Raw" else "English Dub"
|
||||||
(it.format == "adaptive_hls" || it.format == "vo_adaptive_hls") && it.hardsub_lang.isNullOrEmpty()
|
M3u8Helper.generateM3u8(
|
||||||
}?.forEach { source ->
|
"Vrv [$tlName]",
|
||||||
val name = if (source.format == "vo_adaptive_hls") "Vrv" else "Crunchyroll"
|
source.link ?: return@apmap,
|
||||||
val translation = if (tl == "sub") "Raw" else "English Dub"
|
"https://static.crunchyroll.com/",
|
||||||
M3u8Helper.generateM3u8(
|
).forEach(callback)
|
||||||
"$name [$translation]",
|
|
||||||
source.url ?: return@apmap,
|
|
||||||
"https://static.crunchyroll.com/",
|
|
||||||
).forEach(callback)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3328,7 +3323,11 @@ data class AllanimePortData(
|
||||||
)
|
)
|
||||||
|
|
||||||
data class AllanimeLink(
|
data class AllanimeLink(
|
||||||
@JsonProperty("portData") val portData: AllanimePortData? = null
|
@JsonProperty("portData") val portData: AllanimePortData? = null,
|
||||||
|
@JsonProperty("resolutionStr") val resolutionStr: String? = null,
|
||||||
|
@JsonProperty("src") val src: String? = null,
|
||||||
|
@JsonProperty("link") val link: String? = null,
|
||||||
|
@JsonProperty("hls") val hls: Boolean? = null,
|
||||||
)
|
)
|
||||||
|
|
||||||
data class AllanimeLinks(
|
data class AllanimeLinks(
|
||||||
|
|
Loading…
Reference in a new issue