From 4905e8f8689b5487cca54272ba22235c20b161dd Mon Sep 17 00:00:00 2001 From: hexated Date: Thu, 19 Jan 2023 17:23:58 +0700 Subject: [PATCH] fix missing anime in Crunchyroll --- .../src/main/kotlin/com/hexated/SoraExtractor.kt | 12 ++++++------ SoraStream/src/main/kotlin/com/hexated/SoraStream.kt | 2 +- SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt | 6 ++++++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt index ac6a493e..2b901518 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt @@ -1665,17 +1665,17 @@ object SoraExtractor : SoraStream() { subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit ) { - val res = app.get("$consumetCrunchyrollAPI/$title") - .parsedSafe()?.results ?: return + val res = (searchCrunchyroll(title) + ?: searchCrunchyroll(title?.substringBefore(" ")))?.results - val id = (if (res.size == 1) { + val id = (if (res?.size == 1) { res.firstOrNull() } else { - res.find { - it.title.equals( + res?.find { + (it.title.equals( title, true - ) && it.type.equals("series") + ) || it.title.fixTitle().equals(title.fixTitle(), true)) && it.type.equals("series") } })?.id ?: return diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt b/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt index 62474e75..68d5a2d5 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt @@ -207,7 +207,7 @@ open class SoraStream : TmdbProvider() { val year = (res.releaseDate ?: res.firstAirDate)?.split("-")?.first()?.toIntOrNull() val rating = res.vote_average.toString().toRatingInt() val genres = res.genres?.mapNotNull { it.name } - val isAnime = genres?.contains("Animation") == true && res.original_language == "ja" + val isAnime = genres?.contains("Animation") == true && (res.original_language == "zh" || res.original_language == "ja") val keywords = res.keywords?.results?.mapNotNull { it.name }.orEmpty() .ifEmpty { res.keywords?.keywords?.mapNotNull { it.name } } diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt b/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt index af753ad7..f4c69c5b 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt @@ -1,5 +1,6 @@ package com.hexated +import com.hexated.SoraStream.Companion.consumetCrunchyrollAPI import com.hexated.SoraStream.Companion.filmxyAPI import com.hexated.SoraStream.Companion.gdbot import com.hexated.SoraStream.Companion.tvMoviesAPI @@ -468,6 +469,11 @@ fun Document.findTvMoviesIframe(): String? { ?.substringBefore("'>") } +suspend fun searchCrunchyroll(title: String?) : ConsumetSearchResponse? { + return app.get("${consumetCrunchyrollAPI}/$title") + .parsedSafe() +} + fun CrunchyrollDetails.findCrunchyrollId( title: String?, season: Int?,