From 4947c457e65556da464d7cf0d20d624ad87c7883 Mon Sep 17 00:00:00 2001 From: KillerDogeEmpire Date: Sat, 4 Feb 2023 20:51:12 -0800 Subject: [PATCH] Possibly added mal and anilist to DubbedAnime and Kawaiifu --- .../kotlin/com/lagradost/AnimePaheProvider.kt | 2 +- .../com/lagradost/DubbedAnimeProvider.kt | 43 ++++++++++++++++++ .../kotlin/com/lagradost/KawaiifuProvider.kt | 45 +++++++++++++++++++ 3 files changed, 89 insertions(+), 1 deletion(-) diff --git a/AnimePaheProvider/src/main/kotlin/com/lagradost/AnimePaheProvider.kt b/AnimePaheProvider/src/main/kotlin/com/lagradost/AnimePaheProvider.kt index 56c0e4a..d323bcf 100644 --- a/AnimePaheProvider/src/main/kotlin/com/lagradost/AnimePaheProvider.kt +++ b/AnimePaheProvider/src/main/kotlin/com/lagradost/AnimePaheProvider.kt @@ -18,7 +18,7 @@ import kotlin.math.pow class AnimePaheProvider : MainAPI() { // credit to https://github.com/justfoolingaround/animdl/tree/master/animdl/core/codebase/providers/animepahe companion object { - const val MAIN_URL = "https://animepahe.com" + const val MAIN_URL = "https://animepahe.ru" var cookies: Map = mapOf() private fun getType(t: String): TvType { diff --git a/DubbedAnimeProvider/src/main/kotlin/com/lagradost/DubbedAnimeProvider.kt b/DubbedAnimeProvider/src/main/kotlin/com/lagradost/DubbedAnimeProvider.kt index bb59f69..e860338 100644 --- a/DubbedAnimeProvider/src/main/kotlin/com/lagradost/DubbedAnimeProvider.kt +++ b/DubbedAnimeProvider/src/main/kotlin/com/lagradost/DubbedAnimeProvider.kt @@ -2,6 +2,8 @@ package com.lagradost import com.fasterxml.jackson.annotation.JsonProperty import com.lagradost.cloudstream3.* +import com.lagradost.cloudstream3.LoadResponse.Companion.addAniListId +import com.lagradost.cloudstream3.LoadResponse.Companion.addMalId import com.lagradost.cloudstream3.APIHolder.unixTime import com.lagradost.cloudstream3.APIHolder.unixTimeMS import com.lagradost.cloudstream3.utils.AppUtils.parseJson @@ -253,6 +255,8 @@ class DubbedAnimeProvider : MainAPI() { ?.replace("Released: ", "") ?.toIntOrNull() + val (malId, anilistId, image, cover) = getTracker(title, "tv", year) + val episodes = document.select("a.epibloks").map { val epTitle = it.selectFirst("> div.inwel > span.isgrxx")?.text() Episode(fixUrl(it.attr("href")), epTitle) @@ -262,9 +266,48 @@ class DubbedAnimeProvider : MainAPI() { return newAnimeLoadResponse(title, url, TvType.Anime) { posterUrl = img this.year = year + addMalId(malId) + addAniListId(anilistId?.toIntOrNull()) addEpisodes(DubStatus.Dubbed, episodes) plot = descript } } } + private suspend fun getTracker(title: String?, type: String?, year: Int?): Tracker { + val res = app.get("https://api.consumet.org/meta/anilist/$title") + .parsedSafe()?.results?.find { media -> + (media.title?.english.equals(title, true) || media.title?.romaji.equals( + title, + true + )) || (media.type.equals(type, true) && media.releaseDate == year) + } + return Tracker(res?.malId, res?.aniId, res?.image, res?.cover) + } + + data class Tracker( + val malId: Int? = null, + val aniId: String? = null, + val image: String? = null, + val cover: String? = null, + ) + + data class Title( + @JsonProperty("romaji") val romaji: String? = null, + @JsonProperty("english") val english: String? = null, + ) + + data class Results( + @JsonProperty("id") val aniId: String? = null, + @JsonProperty("malId") val malId: Int? = null, + @JsonProperty("title") val title: Title? = null, + @JsonProperty("releaseDate") val releaseDate: Int? = null, + @JsonProperty("type") val type: String? = null, + @JsonProperty("image") val image: String? = null, + @JsonProperty("cover") val cover: String? = null, + ) + + data class AniSearch( + @JsonProperty("results") val results: ArrayList? = arrayListOf(), + + ) } \ No newline at end of file diff --git a/KawaiifuProvider/src/main/kotlin/com/lagradost/KawaiifuProvider.kt b/KawaiifuProvider/src/main/kotlin/com/lagradost/KawaiifuProvider.kt index 84567f2..6bee106 100644 --- a/KawaiifuProvider/src/main/kotlin/com/lagradost/KawaiifuProvider.kt +++ b/KawaiifuProvider/src/main/kotlin/com/lagradost/KawaiifuProvider.kt @@ -1,6 +1,9 @@ package com.lagradost +import com.fasterxml.jackson.annotation.JsonProperty import com.lagradost.cloudstream3.* +import com.lagradost.cloudstream3.LoadResponse.Companion.addAniListId +import com.lagradost.cloudstream3.LoadResponse.Companion.addMalId import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.getQualityFromName import org.jsoup.Jsoup @@ -95,6 +98,9 @@ class KawaiifuProvider : MainAPI() { .joinToString("\n") { it.text() } val year = url.split("/").filter { it.contains("-") }[0].split("-")[1].toIntOrNull() + val (malId, anilistId, image, cover) = getTracker(title, "tv", year) + + val episodesLink = soup.selectFirst("a[href*=\".html-episode\"]")?.attr("href") ?: throw ErrorLoadingException("Error getting episode list") val episodes = Jsoup.parse( @@ -112,6 +118,8 @@ class KawaiifuProvider : MainAPI() { return newAnimeLoadResponse(title, url, TvType.Anime) { this.year = year posterUrl = poster + addMalId(malId) + addAniListId(anilistId?.toIntOrNull()) addEpisodes(DubStatus.Subbed, episodes) plot = description this.tags = tags @@ -171,4 +179,41 @@ class KawaiifuProvider : MainAPI() { } return true } + private suspend fun getTracker(title: String?, type: String?, year: Int?): Tracker { + val res = app.get("https://api.consumet.org/meta/anilist/$title") + .parsedSafe()?.results?.find { media -> + (media.title?.english.equals(title, true) || media.title?.romaji.equals( + title, + true + )) || (media.type.equals(type, true) && media.releaseDate == year) + } + return Tracker(res?.malId, res?.aniId, res?.image, res?.cover) + } + + data class Tracker( + val malId: Int? = null, + val aniId: String? = null, + val image: String? = null, + val cover: String? = null, + ) + + data class Title( + @JsonProperty("romaji") val romaji: String? = null, + @JsonProperty("english") val english: String? = null, + ) + + data class Results( + @JsonProperty("id") val aniId: String? = null, + @JsonProperty("malId") val malId: Int? = null, + @JsonProperty("title") val title: Title? = null, + @JsonProperty("releaseDate") val releaseDate: Int? = null, + @JsonProperty("type") val type: String? = null, + @JsonProperty("image") val image: String? = null, + @JsonProperty("cover") val cover: String? = null, + ) + + data class AniSearch( + @JsonProperty("results") val results: ArrayList? = arrayListOf(), + + ) }