diff --git a/AnimeIndoProvider/build.gradle.kts b/AnimeIndoProvider/build.gradle.kts index a1d971bc..252c7adb 100644 --- a/AnimeIndoProvider/build.gradle.kts +++ b/AnimeIndoProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 7 +version = 8 cloudstream { diff --git a/AnimeIndoProvider/src/main/kotlin/com/hexated/AnimeIndoProviderPlugin.kt b/AnimeIndoProvider/src/main/kotlin/com/hexated/AnimeIndoProviderPlugin.kt index 7f4d0a0d..d3245425 100644 --- a/AnimeIndoProvider/src/main/kotlin/com/hexated/AnimeIndoProviderPlugin.kt +++ b/AnimeIndoProvider/src/main/kotlin/com/hexated/AnimeIndoProviderPlugin.kt @@ -10,5 +10,6 @@ class AnimeIndoProviderPlugin: Plugin() { override fun load(context: Context) { // All providers should be added in this manner. Please don't edit the providers list directly. registerMainAPI(AnimeIndoProvider()) + registerExtractorAPI(Vicloud()) } } \ No newline at end of file diff --git a/AnimeIndoProvider/src/main/kotlin/com/hexated/Vicloud.kt b/AnimeIndoProvider/src/main/kotlin/com/hexated/Vicloud.kt new file mode 100644 index 00000000..5446faa1 --- /dev/null +++ b/AnimeIndoProvider/src/main/kotlin/com/hexated/Vicloud.kt @@ -0,0 +1,51 @@ +package com.hexated + +import com.fasterxml.jackson.annotation.JsonProperty +import com.lagradost.cloudstream3.SubtitleFile +import com.lagradost.cloudstream3.app +import com.lagradost.cloudstream3.utils.ExtractorApi +import com.lagradost.cloudstream3.utils.ExtractorLink +import com.lagradost.cloudstream3.utils.getQualityFromName + +open class Vicloud : ExtractorApi() { + override val name: String = "Vicloud" + override val mainUrl: String = "https://vicloud.sbs" + override val requiresReferer = false + + override suspend fun getUrl( + url: String, + referer: String?, + subtitleCallback: (SubtitleFile) -> Unit, + callback: (ExtractorLink) -> Unit + ) { + val id = Regex("\"apiQuery\":\"(.*?)\"").find(app.get(url).text)?.groupValues?.getOrNull(1) + app.get( + "$mainUrl/api/?$id=&_=${System.currentTimeMillis()}", + headers = mapOf( + "X-Requested-With" to "XMLHttpRequest" + ), + referer = url + ).parsedSafe()?.sources?.map { source -> + callback.invoke( + ExtractorLink( + name, + name, + source.file ?: return@map null, + url, + getQualityFromName(source.label), + ) + ) + } + + } + + private data class Sources( + @JsonProperty("file") val file: String? = null, + @JsonProperty("label") val label: String? = null, + ) + + private data class Responses( + @JsonProperty("sources") val sources: List? = arrayListOf(), + ) + +} \ No newline at end of file diff --git a/KuronimeProvider/build.gradle.kts b/KuronimeProvider/build.gradle.kts index 01606fee..8642b7ce 100644 --- a/KuronimeProvider/build.gradle.kts +++ b/KuronimeProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 6 +version = 7 cloudstream { diff --git a/KuronimeProvider/src/main/kotlin/com/hexated/KuronimeProvider.kt b/KuronimeProvider/src/main/kotlin/com/hexated/KuronimeProvider.kt index 70dff536..180f0a33 100644 --- a/KuronimeProvider/src/main/kotlin/com/hexated/KuronimeProvider.kt +++ b/KuronimeProvider/src/main/kotlin/com/hexated/KuronimeProvider.kt @@ -194,7 +194,7 @@ class KuronimeProvider : MainAPI() { safeApiCall { when { it.startsWith("https://animeku.org") -> invokeKuroSource(it, callback) - else -> loadExtractor("$it/", mainUrl, subtitleCallback, callback) + else -> loadExtractor(it, mainUrl, subtitleCallback, callback) } } }