From 4a530a770465040ea2c48d58676529b9d0241415 Mon Sep 17 00:00:00 2001 From: LuftVerbot <97435834+LuftVerbot@users.noreply.github.com> Date: Sat, 14 Oct 2023 16:35:22 +0200 Subject: [PATCH] feat(src/de): New source: Moflix-Stream (#2364) --- .../lib/playlistutils/PlaylistUtils.kt | 13 +- .../streamvidextractor/StreamVidExtractor.kt | 8 +- src/de/moflixstream/AndroidManifest.xml | 2 + src/de/moflixstream/build.gradle | 22 ++ .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2132 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1276 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3202 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 5535 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 8274 bytes .../de/moflixstream/MoflixStream.kt | 365 ++++++++++++++++++ .../extractors/UnpackerExtractor.kt | 31 ++ .../extractors/VidGuardExtractor.kt | 124 ++++++ 12 files changed, 558 insertions(+), 7 deletions(-) create mode 100644 src/de/moflixstream/AndroidManifest.xml create mode 100644 src/de/moflixstream/build.gradle create mode 100644 src/de/moflixstream/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/de/moflixstream/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/de/moflixstream/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/de/moflixstream/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/de/moflixstream/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/de/moflixstream/src/eu/kanade/tachiyomi/animeextension/de/moflixstream/MoflixStream.kt create mode 100644 src/de/moflixstream/src/eu/kanade/tachiyomi/animeextension/de/moflixstream/extractors/UnpackerExtractor.kt create mode 100644 src/de/moflixstream/src/eu/kanade/tachiyomi/animeextension/de/moflixstream/extractors/VidGuardExtractor.kt diff --git a/lib/playlist-utils/src/main/java/eu/kanade/tachiyomi/lib/playlistutils/PlaylistUtils.kt b/lib/playlist-utils/src/main/java/eu/kanade/tachiyomi/lib/playlistutils/PlaylistUtils.kt index a902e80ab..f31091063 100644 --- a/lib/playlist-utils/src/main/java/eu/kanade/tachiyomi/lib/playlistutils/PlaylistUtils.kt +++ b/lib/playlist-utils/src/main/java/eu/kanade/tachiyomi/lib/playlistutils/PlaylistUtils.kt @@ -97,14 +97,17 @@ class PlaylistUtils(private val client: OkHttpClient, private val headers: Heade val playlistHttpUrl = playlistUrl.toHttpUrl() - val masterBase = playlistHttpUrl.newBuilder().apply { + val masterUrlBasePath = playlistHttpUrl.newBuilder().apply { removePathSegment(playlistHttpUrl.pathSize - 1) - }.build().toString() + "/" + addPathSegment("") + query(null) + fragment(null) + }.build().toString() // Get subtitles val subtitleTracks = subtitleList + SUBTITLE_REGEX.findAll(masterPlaylist).mapNotNull { Track( - getAbsoluteUrl(it.groupValues[2], playlistUrl, masterBase) ?: return@mapNotNull null, + getAbsoluteUrl(it.groupValues[2], playlistUrl, masterUrlBasePath ) ?: return@mapNotNull null, it.groupValues[1] ) }.toList() @@ -112,7 +115,7 @@ class PlaylistUtils(private val client: OkHttpClient, private val headers: Heade // Get audio tracks val audioTracks = audioList + AUDIO_REGEX.findAll(masterPlaylist).mapNotNull { Track( - getAbsoluteUrl(it.groupValues[2], playlistUrl, masterBase) ?: return@mapNotNull null, + getAbsoluteUrl(it.groupValues[2], playlistUrl, masterUrlBasePath ) ?: return@mapNotNull null, it.groupValues[1] ) }.toList() @@ -124,7 +127,7 @@ class PlaylistUtils(private val client: OkHttpClient, private val headers: Heade .substringBefore(",") + "p" val videoUrl = it.substringAfter("\n").substringBefore("\n").let { url -> - getAbsoluteUrl(url, playlistUrl, masterBase) + getAbsoluteUrl(url, playlistUrl, masterUrlBasePath ) } ?: return@mapNotNull null diff --git a/lib/streamvid-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamvidextractor/StreamVidExtractor.kt b/lib/streamvid-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamvidextractor/StreamVidExtractor.kt index 75f31b99e..7e9831746 100644 --- a/lib/streamvid-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamvidextractor/StreamVidExtractor.kt +++ b/lib/streamvid-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamvidextractor/StreamVidExtractor.kt @@ -8,14 +8,18 @@ import eu.kanade.tachiyomi.util.asJsoup import okhttp3.OkHttpClient class StreamVidExtractor(private val client: OkHttpClient) { - fun videosFromUrl(url: String, prefix: String = ""): List