From 507a4200b68d43c0db6d940c7b00be4dddceb0fc Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Thu, 9 Feb 2023 23:51:58 +0100 Subject: [PATCH] Add gogo extractor (#1258) --- src/all/animexin/build.gradle | 2 +- .../animeextension/all/animexin/AnimeXin.kt | 4 + .../extractors/VidstreamingExtractor.kt | 119 ++++++++++++++++++ 3 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 src/all/animexin/src/eu/kanade/tachiyomi/animeextension/all/animexin/extractors/VidstreamingExtractor.kt diff --git a/src/all/animexin/build.gradle b/src/all/animexin/build.gradle index 9b821677d..02025d95a 100644 --- a/src/all/animexin/build.gradle +++ b/src/all/animexin/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'AnimeXin' pkgNameSuffix = 'all.animexin' extClass = '.AnimeXin' - extVersionCode = 1 + extVersionCode = 2 libVersion = '13' } diff --git a/src/all/animexin/src/eu/kanade/tachiyomi/animeextension/all/animexin/AnimeXin.kt b/src/all/animexin/src/eu/kanade/tachiyomi/animeextension/all/animexin/AnimeXin.kt index 15c6ffb6d..d3946aa29 100644 --- a/src/all/animexin/src/eu/kanade/tachiyomi/animeextension/all/animexin/AnimeXin.kt +++ b/src/all/animexin/src/eu/kanade/tachiyomi/animeextension/all/animexin/AnimeXin.kt @@ -10,6 +10,7 @@ import eu.kanade.tachiyomi.animeextension.all.animexin.extractors.DoodExtractor import eu.kanade.tachiyomi.animeextension.all.animexin.extractors.FembedExtractor import eu.kanade.tachiyomi.animeextension.all.animexin.extractors.GdrivePlayerExtractor import eu.kanade.tachiyomi.animeextension.all.animexin.extractors.StreamSBExtractor +import eu.kanade.tachiyomi.animeextension.all.animexin.extractors.VidstreamingExtractor import eu.kanade.tachiyomi.animeextension.all.animexin.extractors.YouTubeExtractor import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.model.AnimeFilterList @@ -239,6 +240,9 @@ class AnimeXin : ConfigurableAnimeSource, ParsedAnimeHttpSource() { decoded.contains("youtube.com") -> { YouTubeExtractor(client).videosFromUrl(decoded, prefix = prefix) } + decoded.contains("vidstreaming") -> { + VidstreamingExtractor(client).videosFromUrl(decoded, prefix = prefix) + } else -> null } }.getOrNull() diff --git a/src/all/animexin/src/eu/kanade/tachiyomi/animeextension/all/animexin/extractors/VidstreamingExtractor.kt b/src/all/animexin/src/eu/kanade/tachiyomi/animeextension/all/animexin/extractors/VidstreamingExtractor.kt new file mode 100644 index 000000000..b9c4df1a5 --- /dev/null +++ b/src/all/animexin/src/eu/kanade/tachiyomi/animeextension/all/animexin/extractors/VidstreamingExtractor.kt @@ -0,0 +1,119 @@ +package eu.kanade.tachiyomi.animeextension.all.animexin.extractors + +import android.util.Base64 +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import okhttp3.Headers +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.OkHttpClient +import uy.kohesive.injekt.injectLazy +import java.lang.Exception +import java.util.Locale +import javax.crypto.Cipher +import javax.crypto.spec.IvParameterSpec +import javax.crypto.spec.SecretKeySpec + +@ExperimentalSerializationApi +class VidstreamingExtractor(private val client: OkHttpClient) { + + private val json: Json by injectLazy() + + fun videosFromUrl(serverUrl: String, prefix: String): List