From d56976e5de1ea722123fb13e0aaed4dfeafeabcc Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Fri, 20 Oct 2023 18:49:47 +0000 Subject: [PATCH] feat(en/aniwave,fmovies): Minor improvements (#2402) * Adds descriptive user-agent for enimax * Aniwave * Don't spam preferences when loading episode list * Make lang preference take precedence, helpful for the (very few) cases where sub and dub have different resolutions available * Fix video name for filemoon --- src/en/aniwave/build.gradle | 2 +- .../animeextension/en/nineanime/Aniwave.kt | 24 ++++++++++++------- .../en/nineanime/AniwaveUtils.kt | 9 ++++++- src/en/fmovies/build.gradle | 2 +- .../en/fmovies/FMoviesHelper.kt | 12 +++++++--- 5 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/en/aniwave/build.gradle b/src/en/aniwave/build.gradle index b8c8a58ea..19b58d104 100644 --- a/src/en/aniwave/build.gradle +++ b/src/en/aniwave/build.gradle @@ -8,7 +8,7 @@ ext { extName = 'Aniwave' pkgNameSuffix = 'en.nineanime' extClass = '.Aniwave' - extVersionCode = 55 + extVersionCode = 56 libVersion = '13' } diff --git a/src/en/aniwave/src/eu/kanade/tachiyomi/animeextension/en/nineanime/Aniwave.kt b/src/en/aniwave/src/eu/kanade/tachiyomi/animeextension/en/nineanime/Aniwave.kt index 02e578681..badfa2ce2 100644 --- a/src/en/aniwave/src/eu/kanade/tachiyomi/animeextension/en/nineanime/Aniwave.kt +++ b/src/en/aniwave/src/eu/kanade/tachiyomi/animeextension/en/nineanime/Aniwave.kt @@ -63,6 +63,8 @@ class Aniwave : ConfigurableAnimeSource, ParsedAnimeHttpSource() { add("Referer", "$baseUrl/") }.build() + private val markFiller by lazy { preferences.getBoolean(PREF_MARK_FILLERS_KEY, PREF_MARK_FILLERS_DEFAULT) } + // ============================== Popular =============================== override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/filter?sort=trending&page=$page", refererHeaders) @@ -177,7 +179,7 @@ class Aniwave : ConfigurableAnimeSource, ParsedAnimeHttpSource() { val dub = if (element.attr("data-dub").toInt().toBoolean()) "Dub" else "" val softSub = if (SOFTSUB_REGEX.find(title) != null) "SoftSub" else "" - val extraInfo = if (element.hasClass("filler") && preferences.getBoolean(PREF_MARK_FILLERS_KEY, PREF_MARK_FILLERS_DEFAULT)) { + val extraInfo = if (element.hasClass("filler") && markFiller) { " • Filler Episode" } else { "" @@ -226,7 +228,7 @@ class Aniwave : ConfigurableAnimeSource, ParsedAnimeHttpSource() { val hosterSelection = preferences.getStringSet(PREF_HOSTER_KEY, PREF_HOSTER_DEFAULT)!! val typeSelection = preferences.getStringSet(PREF_TYPE_TOGGLE_KEY, PREF_TYPES_TOGGLE_DEFAULT)!! - return document.select("div.servers > div").parallelMap { elem -> + return document.select("div.servers > div").parallelFlatMap { elem -> val type = elem.attr("data-type").replaceFirstChar { it.uppercase() } elem.select("li").mapNotNull { serverElement -> val serverId = serverElement.attr("data-link-id") @@ -237,9 +239,7 @@ class Aniwave : ConfigurableAnimeSource, ParsedAnimeHttpSource() { VideoData(type, serverId, serverName) } } - .flatten() - .parallelMap { extractVideo(it, epurl) } - .flatten() + .parallelFlatMap { extractVideo(it, epurl) } .ifEmpty { throw Exception("Failed to fetch videos") } } @@ -275,7 +275,7 @@ class Aniwave : ConfigurableAnimeSource, ParsedAnimeHttpSource() { val embedLink = utils.callEnimax(parsed.result.url, "decrypt") when (server.serverName) { "vidplay", "mycloud" -> vidsrcExtractor.videosFromUrl(embedLink, server.serverName, server.type) - "filemoon" -> filemoonExtractor.videosFromUrl(embedLink, "Filemoon - ${server.type}") + "filemoon" -> filemoonExtractor.videosFromUrl(embedLink, "Filemoon - ${server.type} - ") "streamtape" -> streamtapeExtractor.videoFromUrl(embedLink, "StreamTape - ${server.type}")?.let(::listOf) ?: emptyList() "mp4upload" -> mp4uploadExtractor.videosFromUrl(embedLink, headers, suffix = " - ${server.type}") else -> emptyList() @@ -295,9 +295,9 @@ class Aniwave : ConfigurableAnimeSource, ParsedAnimeHttpSource() { val server = preferences.getString(PREF_SERVER_KEY, PREF_SERVER_DEFAULT)!! return this.sortedWith( - compareByDescending