From 37435a7cdfcdc99e6f552c2c3d36dade893f2c3d Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Sun, 4 Jun 2023 08:47:12 +0200 Subject: [PATCH] AllAnime: Fix stuff & add new server (#1678) --- src/en/allanime/build.gradle | 2 +- .../animeextension/en/allanime/AllAnime.kt | 28 +++++++++++++++---- .../allanime/extractors/AllAnimeExtractor.kt | 1 - 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/en/allanime/build.gradle b/src/en/allanime/build.gradle index d7caadcb8..270caa6ea 100644 --- a/src/en/allanime/build.gradle +++ b/src/en/allanime/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'AllAnime' pkgNameSuffix = 'en.allanime' extClass = '.AllAnime' - extVersionCode = 20 + extVersionCode = 21 libVersion = '13' } diff --git a/src/en/allanime/src/eu/kanade/tachiyomi/animeextension/en/allanime/AllAnime.kt b/src/en/allanime/src/eu/kanade/tachiyomi/animeextension/en/allanime/AllAnime.kt index d2ed21ed2..48bacab07 100644 --- a/src/en/allanime/src/eu/kanade/tachiyomi/animeextension/en/allanime/AllAnime.kt +++ b/src/en/allanime/src/eu/kanade/tachiyomi/animeextension/en/allanime/AllAnime.kt @@ -244,22 +244,28 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() { ) videoJson.data.episode.sourceUrls.forEach { video -> + val videoUrl = if (video.sourceUrl.startsWith("#")) { + hexToText(video.sourceUrl.substringAfter("#")) + } else { + video.sourceUrl + } + val matchingMapping = mappings.firstOrNull { (altHoster, urlMatches) -> - altHosterSelection.contains(altHoster) && video.sourceUrl.containsAny(urlMatches) + altHosterSelection.contains(altHoster) && videoUrl.containsAny(urlMatches) } when { - video.sourceUrl.startsWith("/apivtwo/") && INTERAL_HOSTER_NAMES.any { + videoUrl.startsWith("/apivtwo/") && INTERAL_HOSTER_NAMES.any { Regex("""\b${it.lowercase()}\b""").find(video.sourceName.lowercase()) != null && hosterSelection.contains(it.lowercase()) } -> { - serverList.add(Server(video.sourceUrl, "internal ${video.sourceName}", video.priority)) + serverList.add(Server(videoUrl, "internal ${video.sourceName}", video.priority)) } altHosterSelection.contains("player") && video.type == "player" -> { - serverList.add(Server(video.sourceUrl, "player", video.priority)) + serverList.add(Server(videoUrl, "player", video.priority)) } matchingMapping != null -> { - serverList.add(Server(video.sourceUrl, matchingMapping.first, video.priority)) + serverList.add(Server(videoUrl, matchingMapping.first, video.priority)) } } } @@ -340,6 +346,10 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() { }.filterNotNull().flatten(), ) + if (videoList.isEmpty()) { + throw Exception("No videos found") + } + return prioritySort(videoList) } @@ -403,6 +413,12 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() { return keywords.any { this.contains(it) } } + fun hexToText(inputString: String): String { + return inputString.chunked(2).map { + it.toInt(16).toByte() + }.toByteArray().toString(Charsets.UTF_8) + } + // From Dopebox private fun Iterable.parallelMap(f: suspend (A) -> B): List = runBlocking { @@ -544,7 +560,7 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() { companion object { private const val PAGE_SIZE = 26 // number of items to retrieve when calling API private val INTERAL_HOSTER_NAMES = arrayOf( - "Default", "Ac", "Ak", "Kir", "Luf-mp4", + "Default", "Ac", "Ak", "Kir", "Rab", "Luf-mp4", "Si-Hls", "S-mp4", "Ac-Hls", "Uv-mp4", "Pn-Hls", ) diff --git a/src/en/allanime/src/eu/kanade/tachiyomi/animeextension/en/allanime/extractors/AllAnimeExtractor.kt b/src/en/allanime/src/eu/kanade/tachiyomi/animeextension/en/allanime/extractors/AllAnimeExtractor.kt index 6f1fca737..5b69343bd 100644 --- a/src/en/allanime/src/eu/kanade/tachiyomi/animeextension/en/allanime/extractors/AllAnimeExtractor.kt +++ b/src/en/allanime/src/eu/kanade/tachiyomi/animeextension/en/allanime/extractors/AllAnimeExtractor.kt @@ -4,7 +4,6 @@ import eu.kanade.tachiyomi.animesource.model.Track import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.network.GET import kotlinx.serialization.Serializable -import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json import okhttp3.Headers import okhttp3.HttpUrl.Companion.toHttpUrl