Just get all Anilist recs that match the query
This commit is contained in:
parent
57351c68d5
commit
8169c9afce
@ -98,7 +98,7 @@ class Anilist : API("https://graphql.anilist.co/") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun languageContains(obj: JsonObject, language: String, search: String): Boolean {
|
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 {
|
private fun getTitle(obj: JsonObject): String {
|
||||||
@ -109,7 +109,7 @@ class Anilist : API("https://graphql.anilist.co/") {
|
|||||||
val native = titleObj["native"]?.jsonPrimitive?.contentOrNull
|
val native = titleObj["native"]?.jsonPrimitive?.contentOrNull
|
||||||
val synonym = obj["synonyms"]!!.jsonArray.getOrNull(0)?.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 {
|
return when {
|
||||||
!english.isNullOrBlank() -> english
|
!english.isNullOrBlank() -> english
|
||||||
@ -174,16 +174,15 @@ class Anilist : API("https://graphql.anilist.co/") {
|
|||||||
.jsonArray
|
.jsonArray
|
||||||
.ifEmpty { throw Exception("'$search' not found") }
|
.ifEmpty { throw Exception("'$search' not found") }
|
||||||
|
|
||||||
val result = media.sortedWith(
|
val result = media.filter {
|
||||||
compareBy(
|
val jsonObject = it.jsonObject
|
||||||
{ languageContains(it.jsonObject, "romaji", search) },
|
languageContains(jsonObject, "romaji", search) ||
|
||||||
{ languageContains(it.jsonObject, "english", search) },
|
languageContains(jsonObject, "english", search) ||
|
||||||
{ languageContains(it.jsonObject, "native", search) },
|
languageContains(jsonObject, "native", search) ||
|
||||||
{ countOccurrence(it.jsonObject["synonyms"]!!.jsonArray, search) > 0 },
|
countOccurrence(jsonObject["synonyms"]!!.jsonArray, search) > 0
|
||||||
),
|
}
|
||||||
).last().jsonObject
|
|
||||||
|
|
||||||
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 rec = it.jsonObject["node"]!!.jsonObject["mediaRecommendation"]!!.jsonObject
|
||||||
val recTitle = getTitle(rec)
|
val recTitle = getTitle(rec)
|
||||||
logcat { "ANILIST > RECOMMENDATION: $recTitle" }
|
logcat { "ANILIST > RECOMMENDATION: $recTitle" }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user