From 09270205a754fdad4b2b31a1fabf201e7f4d8988 Mon Sep 17 00:00:00 2001 From: Dark25 Date: Sat, 5 Oct 2024 02:03:28 +0200 Subject: [PATCH] Fix(it/ANIMEWORLD): Update ANIMEWORLD.tv (#287) --- src/it/animeworld/build.gradle | 5 +- .../it/animeworld/ANIMEWORLD.kt | 37 +++++-------- .../extractors/StreamHideExtractor.kt | 52 ------------------- 3 files changed, 17 insertions(+), 77 deletions(-) delete mode 100644 src/it/animeworld/src/eu/kanade/tachiyomi/animeextension/it/animeworld/extractors/StreamHideExtractor.kt diff --git a/src/it/animeworld/build.gradle b/src/it/animeworld/build.gradle index 29043c33..b3f00d73 100644 --- a/src/it/animeworld/build.gradle +++ b/src/it/animeworld/build.gradle @@ -1,14 +1,15 @@ ext { extName = 'ANIMEWORLD.tv' extClass = '.ANIMEWORLD' - extVersionCode = 39 + extVersionCode = 40 } apply from: "$rootDir/common.gradle" dependencies { - implementation(project(':lib:filemoon-extractor')) implementation(project(':lib:streamtape-extractor')) implementation(project(':lib:dood-extractor')) + implementation(project(':lib:streamhidevid-extractor')) + implementation(project(':lib:vidguard-extractor')) implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1" } \ No newline at end of file diff --git a/src/it/animeworld/src/eu/kanade/tachiyomi/animeextension/it/animeworld/ANIMEWORLD.kt b/src/it/animeworld/src/eu/kanade/tachiyomi/animeextension/it/animeworld/ANIMEWORLD.kt index 6725ce77..f1f6fd92 100644 --- a/src/it/animeworld/src/eu/kanade/tachiyomi/animeextension/it/animeworld/ANIMEWORLD.kt +++ b/src/it/animeworld/src/eu/kanade/tachiyomi/animeextension/it/animeworld/ANIMEWORLD.kt @@ -4,7 +4,6 @@ import android.app.Application import android.content.SharedPreferences import androidx.preference.ListPreference import androidx.preference.PreferenceScreen -import eu.kanade.tachiyomi.animeextension.it.animeworld.extractors.StreamHideExtractor import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilterList @@ -13,8 +12,9 @@ import eu.kanade.tachiyomi.animesource.model.SEpisode import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor -import eu.kanade.tachiyomi.lib.filemoonextractor.FilemoonExtractor +import eu.kanade.tachiyomi.lib.streamhidevidextractor.StreamHideVidExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor +import eu.kanade.tachiyomi.lib.vidguardextractor.VidGuardExtractor import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.util.asJsoup import kotlinx.serialization.Serializable @@ -102,17 +102,12 @@ class ANIMEWORLD : ConfigurableAnimeSource, ParsedAnimeHttpSource() { if (copyrightError.hasText()) throw Exception(copyrightError.text()) val serverList = mutableListOf>() - - val elements = document.select(videoListSelector()) val epId = document.selectFirst("div#player[data-episode-id]")?.attr("data-episode-id") val altServers = mutableListOf>() - val altList = listOf("StreamHide", "FileMoon") document.select("div.servers > div.widget-title span.server-tab").forEach { val name = it.text() - if (altList.any { t -> t.contains(name, true) }) { - altServers.add(Pair(name, it.attr("data-name"))) - } + altServers.add(Pair(name, it.attr("data-name"))) } altServers.forEach { serverPair -> @@ -128,21 +123,16 @@ class ANIMEWORLD : ConfigurableAnimeSource, ParsedAnimeHttpSource() { .build() val target = json.decodeFromString( client.newCall(GET(apiUrl, headers = apiHeaders)).execute().body.string(), - ).target + ).grabber serverList.add(Pair(serverPair.first, target)) } } - for (element in elements) { - val url = element.attr("href") - val name = element.text().substringAfter("ownload ").substringBefore(" ") - serverList.add(Pair(name, url)) - } - val videoList = serverList.flatMap { server -> val url = server.second + val url2 = server.first when { - url.contains("streamingaw") -> { + url2.contains("AnimeWorld Server") -> { listOf(Video(url, "AnimeWorld Server", url)) } url.contains("https://doo") -> { @@ -153,14 +143,14 @@ class ANIMEWORLD : ConfigurableAnimeSource, ParsedAnimeHttpSource() { StreamTapeExtractor(client).videoFromUrl(url.replace("/v/", "/e/")) ?.let(::listOf) } - url.contains("filemoon") -> { - FilemoonExtractor(client).videosFromUrl(url, prefix = "${server.first} - ", headers = headers) + url.contains("streamhide") -> { + StreamHideVidExtractor(client).videosFromUrl(url) } - server.first.contains("streamhide", true) -> { - StreamHideExtractor(client).videosFromUrl(url, headers) + url.contains("vidguard") or url.contains("listeamed") -> { + VidGuardExtractor(client).videosFromUrl(url) } else -> null - }.orEmpty() + } ?: emptyList() } return videoList @@ -518,8 +508,8 @@ class ANIMEWORLD : ConfigurableAnimeSource, ParsedAnimeHttpSource() { ListPreference(screen.context).apply { key = "preferred_server" title = "Preferred server" - entries = arrayOf("Animeworld server", "FileMoon", "StreamHide", "Doodstream", "StreamTape") - entryValues = arrayOf("Animeworld server", "FileMoon", "StreamHide", "Doodstream", "StreamTape") + entries = arrayOf("Animeworld server", "StreamHide", "Doodstream", "StreamTape", "VidGuard", "Listeamed") + entryValues = arrayOf("Animeworld server", "StreamHide", "Doodstream", "StreamTape", "VidGuard", "Listeamed") setDefaultValue("Animeworld server") summary = "%s" @@ -537,5 +527,6 @@ class ANIMEWORLD : ConfigurableAnimeSource, ParsedAnimeHttpSource() { @Serializable data class ServerResponse( val target: String, + val grabber: String, ) } diff --git a/src/it/animeworld/src/eu/kanade/tachiyomi/animeextension/it/animeworld/extractors/StreamHideExtractor.kt b/src/it/animeworld/src/eu/kanade/tachiyomi/animeextension/it/animeworld/extractors/StreamHideExtractor.kt deleted file mode 100644 index bc04d2ae..00000000 --- a/src/it/animeworld/src/eu/kanade/tachiyomi/animeextension/it/animeworld/extractors/StreamHideExtractor.kt +++ /dev/null @@ -1,52 +0,0 @@ -package eu.kanade.tachiyomi.animeextension.it.animeworld.extractors - -import dev.datlag.jsunpacker.JsUnpacker -import eu.kanade.tachiyomi.animesource.model.Video -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.OkHttpClient - -class StreamHideExtractor(private val client: OkHttpClient) { - fun videosFromUrl(url: String, headers: Headers): List