diff --git a/src/de/filmpalast/build.gradle b/src/de/filmpalast/build.gradle index 0c3125acd..cc7229928 100644 --- a/src/de/filmpalast/build.gradle +++ b/src/de/filmpalast/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'FilmPalast' pkgNameSuffix = 'de.filmpalast' extClass = '.FilmPalast' - extVersionCode = 3 + extVersionCode = 4 libVersion = '12' } diff --git a/src/de/filmpalast/src/eu/kanade/tachiyomi/animeextension/de/filmpalast/FilmPalast.kt b/src/de/filmpalast/src/eu/kanade/tachiyomi/animeextension/de/filmpalast/FilmPalast.kt index 051c099c4..a20a78a51 100644 --- a/src/de/filmpalast/src/eu/kanade/tachiyomi/animeextension/de/filmpalast/FilmPalast.kt +++ b/src/de/filmpalast/src/eu/kanade/tachiyomi/animeextension/de/filmpalast/FilmPalast.kt @@ -6,6 +6,7 @@ import androidx.preference.ListPreference import androidx.preference.MultiSelectListPreference import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.animeextension.de.filmpalast.extractors.EvoloadExtractor +import eu.kanade.tachiyomi.animeextension.de.filmpalast.extractors.VoeExtractor import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.SAnime @@ -88,10 +89,7 @@ class FilmPalast : ConfigurableAnimeSource, ParsedAnimeHttpSource() { when { url.contains("https://voe.sx") && hosterSelection?.contains("voe") == true -> { val quality = "Voe" - val doc = client.newCall(GET(url)).execute().asJsoup() - val script = doc.select("script:containsData(const sources = {)").toString() - val videoUrl = script.substringAfter("\"hls\": \"").substringBefore("\",") - val video = Video(url, quality, videoUrl, null) + val video = VoeExtractor(client).videoFromUrl(url, quality) if (video != null) { videoList.add(video) } @@ -104,27 +102,12 @@ class FilmPalast : ConfigurableAnimeSource, ParsedAnimeHttpSource() { url.contains("https://streamtape.com") && hosterSelection?.contains("stape") == true -> { try { with( - client.newCall( - GET( - url, - headers = Headers.headersOf( - "Referer", - baseUrl, - "Cookie", - "Fuck Streamtape because they add concatenation to fuck up scrapers" - ) - ) - ) + client.newCall(GET(url, headers = Headers.headersOf("Referer", baseUrl, "Cookie", "Fuck Streamtape because they add concatenation to fuck up scrapers"))) .execute().asJsoup() ) { - linkRegex.find( - this.select("script:containsData(document.getElementById('robotlink'))").toString() - )?.let { + linkRegex.find(this.select("script:containsData(document.getElementById('robotlink'))").toString())?.let { val quality = "Streamtape" - val videoUrl = "https://streamtape.com/get_video?${it.groupValues[1]}&stream=1".replace( - """" + '""", - "" - ) + val videoUrl = "https://streamtape.com/get_video?${it.groupValues[1]}&stream=1".replace("""" + '""", "") val video = Video(videoUrl, quality, videoUrl, null) if (video != null) { videoList.add(video) diff --git a/src/de/filmpalast/src/eu/kanade/tachiyomi/animeextension/de/filmpalast/extractors/EvoloadExtractor.kt b/src/de/filmpalast/src/eu/kanade/tachiyomi/animeextension/de/filmpalast/extractors/EvoloadExtractor.kt index 9e165fe9b..3fba0013d 100644 --- a/src/de/filmpalast/src/eu/kanade/tachiyomi/animeextension/de/filmpalast/extractors/EvoloadExtractor.kt +++ b/src/de/filmpalast/src/eu/kanade/tachiyomi/animeextension/de/filmpalast/extractors/EvoloadExtractor.kt @@ -22,10 +22,24 @@ class EvoloadExtractor(private val client: OkHttpClient) { body = "{\"code\":\"$id\",\"token\":\"ok\",\"csrv_token\":\"$csrv_token\",\"pass\":\"$captchaPass\",\"reff\":\"https://filmpalast.to/\"}".toRequestBody("application/json".toMediaType()) ) ).execute().body!!.string() - val src = file.substringAfter("\"src\":\"").substringBefore("\",") - val res = client.newCall(POST(src)).execute() - val videoUrl = res.request.url.toString() - videoList.addAll(listOf(Video(url, quality, videoUrl, null))) + + if (file.contains("backup")) { + val videoUrl = file.substringAfter("\"encoded_src\":\"").substringBefore("\",") + when { + !file.substringAfter("\"xstatus\":\"").substringBefore("\",").contains("del") -> { + val video = Video(url, quality, videoUrl, null) + videoList.add(video) + } + } + } else { + val videoUrl = file.substringAfter("\"src\":\"").substringBefore("\",") + when { + !file.substringAfter("\"xstatus\":\"").substringBefore("\",").contains("del") -> { + val video = Video(url, quality, videoUrl, null) + videoList.add(video) + } + } + } return videoList } } diff --git a/src/de/filmpalast/src/eu/kanade/tachiyomi/animeextension/de/filmpalast/extractors/VoeExtractor.kt b/src/de/filmpalast/src/eu/kanade/tachiyomi/animeextension/de/filmpalast/extractors/VoeExtractor.kt new file mode 100644 index 000000000..2b95dcc05 --- /dev/null +++ b/src/de/filmpalast/src/eu/kanade/tachiyomi/animeextension/de/filmpalast/extractors/VoeExtractor.kt @@ -0,0 +1,17 @@ +package eu.kanade.tachiyomi.animeextension.de.filmpalast.extractors + +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.OkHttpClient + +class VoeExtractor(private val client: OkHttpClient) { + + fun videoFromUrl(url: String, quality: String): Video? { + val document = client.newCall(GET(url)).execute().asJsoup() + val script = document.select("script:containsData(function d04ad2e48229ae25a282e15c7c2f69a2(dea04c5949242bfd216e35def894b930))") + .firstOrNull()?.data()?.substringAfter("\"hls\": \"") ?: return null + val videoUrl = script.substringAfter("\"hls\": \"").substringBefore("\",") + return Video(url, quality, videoUrl, null) + } +}