add new simulcasts and new titles to home screen

* simulcasts and new titles
* update some libraries
* don't crash if AoDPraser fails to parse mediaId
This commit is contained in:
2020-12-11 10:54:40 +01:00
parent 98636d326e
commit ab180ddd89
7 changed files with 131 additions and 23 deletions

View File

@ -45,10 +45,12 @@ object AoDParser {
private var csrfToken: String = ""
private var loginSuccess = false
private val mediaList = arrayListOf<Media>()
val itemMediaList = arrayListOf<ItemMedia>()
private val mediaList = arrayListOf<Media>() // actual media (data)
val itemMediaList = arrayListOf<ItemMedia>() // gui media
val highlightsList = arrayListOf<ItemMedia>()
val newEpisodesList = arrayListOf<ItemMedia>()
val newSimulcastsList = arrayListOf<ItemMedia>()
val newTitlesList = arrayListOf<ItemMedia>()
fun login(): Boolean = runBlocking {
@ -95,7 +97,7 @@ object AoDParser {
* -> blocking
*/
fun initialLoading() = runBlocking {
val newEPJob = GlobalScope.async {
val loadHomeJob = GlobalScope.async {
loadHome()
}
@ -103,7 +105,7 @@ object AoDParser {
listAnimes()
}
newEPJob.await()
loadHomeJob.await()
listJob.await()
}
@ -183,7 +185,7 @@ object AoDParser {
}
/**
* load new episodes and highlights
* load new episodes, titles and highlights
*/
private fun loadHome() = runBlocking {
if (sessionCookies.isEmpty()) login()
@ -193,19 +195,6 @@ object AoDParser {
.cookies(sessionCookies)
.get()
// get all new episodes from AoD
newEpisodesList.clear()
resHome.select("div.jcarousel-container-new").select("li").forEach {
if (it.select("span").hasClass("neweps")) {
val mediaId = it.select("a.thumbs").attr("href")
.substringAfterLast("/").toInt()
val mediaImage = it.select("a.thumbs > img").attr("src")
val mediaTitle = "${it.select("a").text()} - ${it.select("span.neweps").text()}"
newEpisodesList.add(ItemMedia(mediaId, mediaTitle, mediaImage))
}
}
// get highlights from AoD
highlightsList.clear()
resHome.select("#aod-highlights").select("div.news-item").forEach {
@ -219,6 +208,45 @@ object AoDParser {
}
}
// get all new episodes from AoD
newEpisodesList.clear()
resHome.select("h2:contains(Neue Episoden)").next().select("li").forEach {
val mediaId = it.select("a.thumbs").attr("href")
.substringAfterLast("/").toIntOrNull()
val mediaImage = it.select("a.thumbs > img").attr("src")
val mediaTitle = "${it.select("a").text()} - ${it.select("span.neweps").text()}"
if (mediaId != null) {
newEpisodesList.add(ItemMedia(mediaId, mediaTitle, mediaImage))
}
}
// get new simulcasts from AoD
newSimulcastsList.clear()
resHome.select("h2:contains(Neue Simulcasts)").next().select("li").forEach {
val mediaId = it.select("a.thumbs").attr("href")
.substringAfterLast("/").toIntOrNull()
val mediaImage = it.select("a.thumbs > img").attr("src")
val mediaTitle = it.select("a").text()
if (mediaId != null) {
newSimulcastsList.add(ItemMedia(mediaId, mediaTitle, mediaImage))
}
}
// get new titles from AoD
newTitlesList.clear()
resHome.select("h2:contains(Neue Anime-Titel)").next().select("li").forEach {
val mediaId = it.select("a.thumbs").attr("href")
.substringAfterLast("/").toIntOrNull()
val mediaImage = it.select("a.thumbs > img").attr("src")
val mediaTitle = it.select("a").text()
if (mediaId != null) {
newTitlesList.add(ItemMedia(mediaId, mediaTitle, mediaImage))
}
}
}
}