Initial commit
This commit is contained in:
commit
21bfbfb139
520 changed files with 47819 additions and 0 deletions
59
app/src/main/java/ani/dantotsu/others/Jikan.kt
Normal file
59
app/src/main/java/ani/dantotsu/others/Jikan.kt
Normal file
|
@ -0,0 +1,59 @@
|
|||
package ani.dantotsu.others
|
||||
|
||||
import ani.dantotsu.media.anime.Episode
|
||||
import ani.dantotsu.client
|
||||
import ani.dantotsu.tryWithSuspend
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
object Jikan {
|
||||
|
||||
const val apiUrl = "https://api.jikan.moe/v4/"
|
||||
|
||||
suspend inline fun <reified T : Any> query(endpoint: String): T? {
|
||||
return tryWithSuspend { client.get("$apiUrl$endpoint").parsed() }
|
||||
}
|
||||
|
||||
suspend fun getEpisodes(malId: Int): Map<String, Episode> {
|
||||
var hasNextPage = true
|
||||
var page = 0
|
||||
val eps = mutableMapOf<String, Episode>()
|
||||
while (hasNextPage) {
|
||||
page++
|
||||
val res = query<EpisodeResponse>("anime/$malId/episodes?page=$page")
|
||||
res?.data?.forEach {
|
||||
val ep = it.malID.toString()
|
||||
eps[ep] = Episode(ep, title = it.title,
|
||||
//Personal revenge with 34566 :prayge:
|
||||
filler = if(malId!=34566) it.filler else true
|
||||
)
|
||||
}
|
||||
hasNextPage = res?.pagination?.hasNextPage == true
|
||||
}
|
||||
return eps
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class EpisodeResponse(
|
||||
val pagination: Pagination? = null,
|
||||
val data: List<Datum>? = null
|
||||
) {
|
||||
@Serializable
|
||||
data class Datum(
|
||||
@SerialName("mal_id")
|
||||
val malID: Int,
|
||||
val title: String? = null,
|
||||
val filler: Boolean,
|
||||
// val recap: Boolean,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class Pagination(
|
||||
@SerialName("has_next_page")
|
||||
val hasNextPage: Boolean? = null
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue