Dantotsu/app/src/main/java/ani/dantotsu/others/MalSyncBackup.kt
Finnley Somdahl afa960c808 reformat
2023-12-01 01:22:15 -06:00

45 lines
No EOL
1.6 KiB
Kotlin

package ani.dantotsu.others
import ani.dantotsu.client
import ani.dantotsu.parsers.ShowResponse
import ani.dantotsu.tryWithSuspend
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
object MalSyncBackup {
@Serializable
data class MalBackUpSync(
@SerialName("Pages") val pages: Map<String, Map<String, Page>>? = null
)
@Serializable
data class Page(
val identifier: String,
val title: String,
val url: String? = null,
val image: String? = null,
val active: Boolean? = null,
)
suspend fun get(id: Int, name: String, dub: Boolean = false): ShowResponse? {
return tryWithSuspend {
val json =
client.get("https://raw.githubusercontent.com/MALSync/MAL-Sync-Backup/master/data/anilist/anime/$id.json")
if (json.text != "404: Not Found")
json.parsed<MalBackUpSync>().pages?.get(name)?.forEach {
val page = it.value
val isDub = page.title.lowercase().replace(" ", "").endsWith("(dub)")
val slug = if (dub == isDub) page.identifier else null
if (slug != null && page.active == true && page.url != null) {
val url = when (name) {
"Gogoanime" -> slug
"Tenshi" -> slug
else -> page.url
}
return@tryWithSuspend ShowResponse(page.title, url, page.image ?: "")
}
}
return@tryWithSuspend null
}
}
}