From 4f8b8a09ded53bae89dd620f4af56bcb63a541cd Mon Sep 17 00:00:00 2001 From: Stormunblessed <86633626+Stormunblessed@users.noreply.github.com> Date: Thu, 7 Apr 2022 15:54:20 +0000 Subject: [PATCH] Vidstream fix (#923) --- .../animeproviders/AllAnimeProvider.kt | 79 ++++++++++++++++++- .../cloudstream3/extractors/WcoStream.kt | 6 +- .../cloudstream3/utils/ExtractorApi.kt | 1 + 3 files changed, 84 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/animeproviders/AllAnimeProvider.kt b/app/src/main/java/com/lagradost/cloudstream3/animeproviders/AllAnimeProvider.kt index 94f3272a..fe853ca9 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/animeproviders/AllAnimeProvider.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/animeproviders/AllAnimeProvider.kt @@ -5,6 +5,7 @@ import com.fasterxml.jackson.module.kotlin.readValue import com.lagradost.cloudstream3.* import com.lagradost.cloudstream3.LoadResponse.Companion.addActors import com.lagradost.cloudstream3.mvvm.safeApiCall +import com.lagradost.cloudstream3.utils.AppUtils.parseJson import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.M3u8Helper import com.lagradost.cloudstream3.utils.getQualityFromName @@ -20,7 +21,7 @@ class AllAnimeProvider : MainAPI() { override var mainUrl = "https://allanime.site" override var name = "AllAnime" override val hasQuickSearch = false - override val hasMainPage = false + override val hasMainPage = true private val hlsHelper = M3u8Helper() @@ -87,6 +88,82 @@ class AllAnimeProvider : MainAPI() { @JsonProperty("data") val data: Data ) + data class RandomMain ( + @JsonProperty("data" ) var data : DataRan? = DataRan() + ) + + data class DataRan ( + @JsonProperty("queryRandomRecommendation" ) var queryRandomRecommendation : ArrayList = arrayListOf() + ) + + data class QueryRandomRecommendation ( + @JsonProperty("_id" ) val Id : String? = null, + @JsonProperty("name" ) val name : String? = null, + @JsonProperty("englishName" ) val englishName : String? = null, + @JsonProperty("nativeName" ) val nativeName : String? = null, + @JsonProperty("thumbnail" ) val thumbnail : String? = null, + @JsonProperty("airedStart" ) val airedStart : String? = null, + @JsonProperty("availableChapters" ) val availableChapters : String? = null, + @JsonProperty("availableEpisodes" ) val availableEpisodes : String? = null, + @JsonProperty("__typename" ) val _typename : String? = null + ) + + override suspend fun getMainPage(): HomePageResponse { + val items = ArrayList() + val urls = listOf( + Pair("Top Anime", + "$mainUrl/graphql?variables=%7B%22search%22%3A%7B%22allowAdult%22%3Afalse%2C%22sortBy%22%3A%22Top%22%7D%2C%22limit%22%3A26%2C%22page%22%3A1%2C%22translationType%22%3A%22sub%22%7D&extensions=%7B%22persistedQuery%22%3A%7B%22version%22%3A1%2C%22sha256Hash%22%3A%229343797cc3d9e3f444e2d3b7db9a84d759b816a4d84512ea72d079f85bb96e98%22%7D%7D"), + Pair("Animes", + "$mainUrl/graphql?variables=%7B%22search%22%3A%7B%22allowAdult%22%3Afalse%7D%2C%22limit%22%3A26%2C%22page%22%3A1%2C%22translationType%22%3A%22sub%22%7D&extensions=%7B%22persistedQuery%22%3A%7B%22version%22%3A1%2C%22sha256Hash%22%3A%229343797cc3d9e3f444e2d3b7db9a84d759b816a4d84512ea72d079f85bb96e98%22%7D%7D"), + ) + + val random = "$mainUrl/graphql?variables=%7B%22format%22%3A%22anime%22%7D&extensions=%7B%22persistedQuery%22%3A%7B%22version%22%3A1%2C%22sha256Hash%22%3A%2221ac672633498a3698e8f6a93ce6c2b3722b29a216dcca93363bf012c360cd54%22%7D%7D" + val ranlink = app.get(random).text + val jsonran = parseJson(ranlink) + val ranhome = jsonran.data?.queryRandomRecommendation?.map { + AnimeSearchResponse( + it.name!!, + "$mainUrl/anime/${it.Id}", + this.name, + TvType.Anime, + it.thumbnail, + null, + EnumSet.of(DubStatus.Subbed, DubStatus.Dubbed), + it.nativeName, + ) + } + + items.add(HomePageList("Random", ranhome!!)) + + urls.apmap { (HomeName, url) -> + val test = app.get(url).text + val json = parseJson(test) + val home = ArrayList() + val results = json.data.shows.edges.filter { + // filtering in case there is an anime with 0 episodes available on the site. + !(it.availableEpisodes?.raw == 0 && it.availableEpisodes.sub == 0 && it.availableEpisodes.dub == 0) + } + results.map { + home.add(AnimeSearchResponse( + it.name, + "$mainUrl/anime/${it.Id}", + this.name, + TvType.Anime, + it.thumbnail, + it.airedStart?.year, + EnumSet.of(DubStatus.Subbed, DubStatus.Dubbed), + it.englishName, + it.availableEpisodes?.dub, + it.availableEpisodes?.sub + )) + } + items.add(HomePageList(HomeName, home)) + } + + if (items.size <= 0) throw ErrorLoadingException() + return HomePageResponse(items) + } + override suspend fun search(query: String): List { val link = """$mainUrl/graphql?variables=%7B%22search%22%3A%7B%22allowAdult%22%3Afalse%2C%22query%22%3A%22$query%22%7D%2C%22limit%22%3A26%2C%22page%22%3A1%2C%22translationType%22%3A%22sub%22%7D&extensions=%7B%22persistedQuery%22%3A%7B%22version%22%3A1%2C%22sha256Hash%22%3A%229343797cc3d9e3f444e2d3b7db9a84d759b816a4d84512ea72d079f85bb96e98%22%7D%7D""" diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/WcoStream.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/WcoStream.kt index f4a82186..64d02eed 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/extractors/WcoStream.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/WcoStream.kt @@ -26,6 +26,10 @@ class VizcloudXyz : WcoStream() { override var mainUrl = "https://vizcloud.xyz" } +class VizcloudLive : WcoStream() { + override var mainUrl = "https://vizcloud.live" +} + open class WcoStream : ExtractorApi() { override var name = "VidStream" //Cause works for animekisa and wco override var mainUrl = "https://vidstream.pro" @@ -99,7 +103,7 @@ open class WcoStream : ExtractorApi() { } } if (mainUrl == "https://vidstream.pro" || mainUrl == "https://vidstreamz.online" || mainUrl == "https://vizcloud2.online" - || mainUrl == "https://vizcloud.xyz") { + || mainUrl == "https://vizcloud.xyz" || mainUrl == "https://vizcloud.live") { if (it.file.contains("m3u8")) { hlsHelper.m3u8Generation(M3u8Helper.M3u8Stream(it.file.replace("#.mp4",""), null, headers = mapOf("Referer" to url)), true) diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt index c872de2e..895ba3c1 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt @@ -99,6 +99,7 @@ val extractorApis: Array = arrayOf( Vizcloud2(), VizcloudOnline(), VizcloudXyz(), + VizcloudLive(), Mp4Upload(), StreamTape(), MixDrop(),