From 173261c0b58f40b77c6f53eb87516b363e497f47 Mon Sep 17 00:00:00 2001 From: RowdyRushya Date: Fri, 12 Jul 2024 13:34:39 -0700 Subject: [PATCH] Ultima: AniList: Fix wrong episodes playing (https://discord.com/channels/1239637180700164136/1261144594347851848) - "season year" is not recognised by media provider sites and show "start year" was required - Fizes wrong episodes from Aniwave - Provides links form Anitaku --- Ultima/build.gradle.kts | 2 +- .../kotlin/com/RowdyAvocado/MediaProviders/Aniwave.kt | 8 +++----- .../kotlin/com/RowdyAvocado/MetaProviders/AniList.kt | 10 ++++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Ultima/build.gradle.kts b/Ultima/build.gradle.kts index 7d8e8c9..ce563d7 100644 --- a/Ultima/build.gradle.kts +++ b/Ultima/build.gradle.kts @@ -6,7 +6,7 @@ dependencies { implementation("com.google.android.material:material:1.12.0") } // use an integer for version numbers -version = 32 +version = 33 cloudstream { diff --git a/Ultima/src/main/kotlin/com/RowdyAvocado/MediaProviders/Aniwave.kt b/Ultima/src/main/kotlin/com/RowdyAvocado/MediaProviders/Aniwave.kt index 813dbe0..7465bd9 100644 --- a/Ultima/src/main/kotlin/com/RowdyAvocado/MediaProviders/Aniwave.kt +++ b/Ultima/src/main/kotlin/com/RowdyAvocado/MediaProviders/Aniwave.kt @@ -28,11 +28,9 @@ class AniwaveMediaProvider : MediaProvider() { callback: (ExtractorLink) -> Unit ) { val episode = data.episode ?: if (data.isAnime && data.type.equals("Movie")) 1 else return - val searchPage = - app.get( - "$url/filter?keyword=${data.title}&year[]=${data.year?:""}&sort=most_relevance" - ) - .document + val filterUrl = + "$url/filter?keyword=${data.title}&year[]=${data.year?:""}&sort=most_relevance" + val searchPage = app.get(filterUrl).document val id = searchPage.selectFirst("div.poster")?.attr("data-tip")?.split("?/")?.get(0) ?: return diff --git a/Ultima/src/main/kotlin/com/RowdyAvocado/MetaProviders/AniList.kt b/Ultima/src/main/kotlin/com/RowdyAvocado/MetaProviders/AniList.kt index f65d1e2..fa8a09a 100644 --- a/Ultima/src/main/kotlin/com/RowdyAvocado/MetaProviders/AniList.kt +++ b/Ultima/src/main/kotlin/com/RowdyAvocado/MetaProviders/AniList.kt @@ -130,7 +130,7 @@ class AniList(val plugin: UltimaPlugin) : MainAPI() { val id = url.removeSuffix("/").substringAfterLast("/") val data = anilistAPICall( - "query (\$id: Int = $id) { Media (id: \$id, type: ANIME) { id title { romaji english } seasonYear genres description averageScore bannerImage coverImage { extraLarge large medium } bannerImage episodes nextAiringEpisode { episode } recommendations { edges { node { id mediaRecommendation { id title { romaji english } coverImage { extraLarge large medium } } } } } } }" + "query (\$id: Int = $id) { Media (id: \$id, type: ANIME) { id title { romaji english } startDate { year } genres description averageScore bannerImage coverImage { extraLarge large medium } bannerImage episodes nextAiringEpisode { episode } recommendations { edges { node { id mediaRecommendation { id title { romaji english } coverImage { extraLarge large medium } } } } } } }" ) .data .media @@ -140,7 +140,7 @@ class AniList(val plugin: UltimaPlugin) : MainAPI() { val linkData = LinkData( title = data.getTitle(), - year = data.seasonYear, + year = data.startDate.year, season = 1, episode = i, isAnime = true @@ -151,7 +151,7 @@ class AniList(val plugin: UltimaPlugin) : MainAPI() { return newAnimeLoadResponse(data.getTitle(), url, TvType.Anime) { addAniListId(id.toInt()) addEpisodes(DubStatus.Subbed, episodes) - this.year = data.seasonYear + this.year = data.startDate.year this.plot = data.description this.backgroundPosterUrl = data.bannerImage this.posterUrl = data.getCoverImage() @@ -199,7 +199,7 @@ class AniList(val plugin: UltimaPlugin) : MainAPI() { data class anilistMedia( @JsonProperty("id") val id: Int, - @JsonProperty("seasonYear") val seasonYear: Int, + @JsonProperty("startDate") val startDate: StartDate, @JsonProperty("episodes") val episodes: Int?, @JsonProperty("title") val title: Title, @JsonProperty("genres") val genres: List, @@ -209,6 +209,8 @@ class AniList(val plugin: UltimaPlugin) : MainAPI() { @JsonProperty("nextAiringEpisode") val nextAiringEpisode: SeasonNextAiringEpisode?, @JsonProperty("recommendations") val recommendations: RecommendationConnection?, ) { + data class StartDate(@JsonProperty("year") val year: Int) + fun totalEpisodes(): Int { return nextAiringEpisode?.episode?.minus(1) ?: episodes ?: throw Exception("Unable to calculate total episodes")