diff --git a/src/all/animeonsen/build.gradle b/src/all/animeonsen/build.gradle index afc818108..0a862eec8 100644 --- a/src/all/animeonsen/build.gradle +++ b/src/all/animeonsen/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'AnimeOnsen' pkgNameSuffix = 'all.animeonsen' extClass = '.AnimeOnsen' - extVersionCode = 3 + extVersionCode = 4 libVersion = '13' } diff --git a/src/all/animeonsen/src/eu/kanade/tachiyomi/animeextension/all/animeonsen/AnimeOnsen.kt b/src/all/animeonsen/src/eu/kanade/tachiyomi/animeextension/all/animeonsen/AnimeOnsen.kt index 8cc5fbd04..1ba2901f9 100644 --- a/src/all/animeonsen/src/eu/kanade/tachiyomi/animeextension/all/animeonsen/AnimeOnsen.kt +++ b/src/all/animeonsen/src/eu/kanade/tachiyomi/animeextension/all/animeonsen/AnimeOnsen.kt @@ -14,10 +14,11 @@ import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.asObservableSuccess -import eu.kanade.tachiyomi.util.asJsoup import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.boolean +import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import okhttp3.Headers import okhttp3.Request @@ -50,7 +51,6 @@ class AnimeOnsen : AnimeHttpSource() { } override fun headersBuilder(): Headers.Builder = Headers.Builder() - .add("referer", baseUrl) .add("user-agent", AO_USER_AGENT) // ============================== Popular =============================== @@ -69,23 +69,22 @@ class AnimeOnsen : AnimeHttpSource() { // ============================== Episodes ============================== override fun episodeListParse(response: Response): List { - val episodes = response.asJsoup().select("div.episode-list > a") - return episodes.map { - val num = it.attr("data-episode") - val episodeSpan = it.select("div.episode > span.general") - val titleSpan = it.select("div.episode > span.title") + val contentId = response.request.url.toString().substringBeforeLast("/episodes") + .substringAfterLast("/") + val responseJson = json.decodeFromString(response.body!!.string()) + return responseJson.keys.toList().sortedDescending().map { epNum -> SEpisode.create().apply { - url = it.attr("href") - .substringAfter("/watch/") - .replace("?episode=", "/video/") - episode_number = num.toFloat() - name = episodeSpan.text() + ": " + titleSpan.text() + url = "$contentId/video/$epNum" + episode_number = epNum.toFloat() + val episodeName = + responseJson[epNum]!!.jsonObject["contentTitle_episode_en"]!!.jsonPrimitive.content + name = "Episode $epNum: $episodeName" } - }.reversed() + } } override fun episodeListRequest(anime: SAnime): Request { - return GET("$baseUrl/details/${anime.url}") + return GET("$apiUrl/content/${anime.url}/episodes") } // ============================ Video Links ============================= @@ -135,7 +134,7 @@ class AnimeOnsen : AnimeHttpSource() { author = details.mal_data?.studios?.joinToString { it.name } genre = details.mal_data?.genres?.joinToString { it.name } description = details.mal_data?.synopsis - thumbnail_url = "https://api.animeonsen.xyz/v4/image/420x600/${details.content_id}" + thumbnail_url = "https://api.animeonsen.xyz/v4/image/210x300/${details.content_id}" } return anime } @@ -168,7 +167,7 @@ class AnimeOnsen : AnimeHttpSource() { private fun AnimeListItem.toSAnime() = SAnime.create().apply { url = content_id title = content_title ?: content_title_en!! - thumbnail_url = "https://api.animeonsen.xyz/v4/image/420x600/$content_id" + thumbnail_url = "https://api.animeonsen.xyz/v4/image/210x300/$content_id" } }