From 8169c9afce225af358d59eb34856f7f68b0c6579 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Tue, 18 Oct 2022 20:03:26 -0400 Subject: [PATCH] Just get all Anilist recs that match the query --- .../java/exh/recs/RecommendsPagingSource.kt | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/exh/recs/RecommendsPagingSource.kt b/app/src/main/java/exh/recs/RecommendsPagingSource.kt index 4fba25f85..60d353bac 100644 --- a/app/src/main/java/exh/recs/RecommendsPagingSource.kt +++ b/app/src/main/java/exh/recs/RecommendsPagingSource.kt @@ -98,7 +98,7 @@ class Anilist : API("https://graphql.anilist.co/") { } private fun languageContains(obj: JsonObject, language: String, search: String): Boolean { - return obj["title"]?.jsonObject?.get(language)?.jsonPrimitive?.content?.contains(search, true) == true + return obj["title"]?.jsonObject?.get(language)?.jsonPrimitive?.contentOrNull?.contains(search, true) == true } private fun getTitle(obj: JsonObject): String { @@ -109,7 +109,7 @@ class Anilist : API("https://graphql.anilist.co/") { val native = titleObj["native"]?.jsonPrimitive?.contentOrNull val synonym = obj["synonyms"]!!.jsonArray.getOrNull(0)?.jsonPrimitive?.contentOrNull - val isJP = obj["countryOfOrigin"]!!.jsonPrimitive.content == "JP" + val isJP = obj["countryOfOrigin"]?.jsonPrimitive?.contentOrNull == "JP" return when { !english.isNullOrBlank() -> english @@ -174,16 +174,15 @@ class Anilist : API("https://graphql.anilist.co/") { .jsonArray .ifEmpty { throw Exception("'$search' not found") } - val result = media.sortedWith( - compareBy( - { languageContains(it.jsonObject, "romaji", search) }, - { languageContains(it.jsonObject, "english", search) }, - { languageContains(it.jsonObject, "native", search) }, - { countOccurrence(it.jsonObject["synonyms"]!!.jsonArray, search) > 0 }, - ), - ).last().jsonObject + val result = media.filter { + val jsonObject = it.jsonObject + languageContains(jsonObject, "romaji", search) || + languageContains(jsonObject, "english", search) || + languageContains(jsonObject, "native", search) || + countOccurrence(jsonObject["synonyms"]!!.jsonArray, search) > 0 + } - return result["recommendations"]!!.jsonObject["edges"]!!.jsonArray.map { + return result.flatMap { it.jsonObject["recommendations"]!!.jsonObject["edges"]!!.jsonArray }.map { val rec = it.jsonObject["node"]!!.jsonObject["mediaRecommendation"]!!.jsonObject val recTitle = getTitle(rec) logcat { "ANILIST > RECOMMENDATION: $recTitle" }