From 77227683d69cf0004972d1dbb2c6f238fc725776 Mon Sep 17 00:00:00 2001 From: mobby45 <68152858+mobby45@users.noreply.github.com> Date: Tue, 9 Jul 2024 18:04:29 +0200 Subject: [PATCH 1/6] AnimeWorld StreamTape Readd --- .../tachiyomi/animeextension/it/animeworld/ANIMEWORLD.kt | 5 +++++ 1 file changed, 5 insertions(+) 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 d0043b39..6725ce77 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 @@ -14,6 +14,7 @@ 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.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.util.asJsoup import kotlinx.serialization.Serializable @@ -148,6 +149,10 @@ class ANIMEWORLD : ConfigurableAnimeSource, ParsedAnimeHttpSource() { DoodExtractor(client).videoFromUrl(url, redirect = true) ?.let(::listOf) } + url.contains("streamtape") -> { + StreamTapeExtractor(client).videoFromUrl(url.replace("/v/", "/e/")) + ?.let(::listOf) + } url.contains("filemoon") -> { FilemoonExtractor(client).videosFromUrl(url, prefix = "${server.first} - ", headers = headers) } -- 2.47.2 From c785ee750c343db64750f6703bdafec656c6bc34 Mon Sep 17 00:00:00 2001 From: mobby45 <68152858+mobby45@users.noreply.github.com> Date: Tue, 9 Jul 2024 18:08:01 +0200 Subject: [PATCH 2/6] Delete src/it/animeworld/src/eu/kanade/tachiyomi/animeextension/it/animeworld/ANIMEWORLD.kt Fixing it --- .../it/animeworld/ANIMEWORLD.kt | 536 ------------------ 1 file changed, 536 deletions(-) delete mode 100644 src/it/animeworld/src/eu/kanade/tachiyomi/animeextension/it/animeworld/ANIMEWORLD.kt 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 deleted file mode 100644 index d0043b39..00000000 --- a/src/it/animeworld/src/eu/kanade/tachiyomi/animeextension/it/animeworld/ANIMEWORLD.kt +++ /dev/null @@ -1,536 +0,0 @@ -package eu.kanade.tachiyomi.animeextension.it.animeworld - -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 -import eu.kanade.tachiyomi.animesource.model.SAnime -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.network.GET -import eu.kanade.tachiyomi.util.asJsoup -import kotlinx.serialization.Serializable -import kotlinx.serialization.json.Json -import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.Request -import okhttp3.Response -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import uy.kohesive.injekt.injectLazy -import java.lang.Exception - -class ANIMEWORLD : ConfigurableAnimeSource, ParsedAnimeHttpSource() { - - override val name = "ANIMEWORLD.tv" - - // TODO: Check frequency of url changes to potentially - // add back overridable baseurl preference - override val baseUrl = "https://www.animeworld.so" - - override val lang = "it" - - override val supportsLatest = true - - private val json: Json by injectLazy() - - private val preferences: SharedPreferences by lazy { - Injekt.get().getSharedPreferences("source_$id", 0x0000) - } - - // Popular Anime - Same Format as Search - - override fun popularAnimeSelector(): String = searchAnimeSelector() - override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/filter?sort=6&page=$page") - override fun popularAnimeFromElement(element: Element): SAnime = searchAnimeFromElement(element) - override fun popularAnimeNextPageSelector(): String = searchAnimeNextPageSelector() - - // Episodes - - override fun episodeListParse(response: Response): List { - return super.episodeListParse(response).reversed() - } - - override fun episodeListSelector() = "div.server.active ul.episodes li.episode a" - - override fun episodeFromElement(element: Element): SEpisode { - val episode = SEpisode.create() - episode.setUrlWithoutDomain(element.attr("abs:href")) - episode.name = "Episode: " + element.text() - val epNum = getNumberFromEpsString(element.text()) - episode.episode_number = when { - epNum.isNotEmpty() -> epNum.toFloatOrNull() ?: 1F - else -> 1F - } - return episode - } - - private fun getNumberFromEpsString(epsStr: String): String { - return epsStr.filter { it.isDigit() } - } - - // Video urls - - override fun videoListRequest(episode: SEpisode): Request { - val iframe = baseUrl + episode.url - return GET(iframe) - } - - override fun videoListParse(response: Response): List