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