diff --git a/src/en/myanime/build.gradle b/src/en/myanime/build.gradle index f3b7ce0cd..d5b4bd6b7 100644 --- a/src/en/myanime/build.gradle +++ b/src/en/myanime/build.gradle @@ -6,12 +6,13 @@ ext { extName = 'Myanime' pkgNameSuffix = 'en.myanime' extClass = '.Myanime' - extVersionCode = 1 + extVersionCode = 2 libVersion = '13' } dependencies { implementation(project(':lib-okru-extractor')) + implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1" } diff --git a/src/en/myanime/src/eu/kanade/tachiyomi/animeextension/en/myanime/Myanime.kt b/src/en/myanime/src/eu/kanade/tachiyomi/animeextension/en/myanime/Myanime.kt index 02b90a858..c8f6948ac 100644 --- a/src/en/myanime/src/eu/kanade/tachiyomi/animeextension/en/myanime/Myanime.kt +++ b/src/en/myanime/src/eu/kanade/tachiyomi/animeextension/en/myanime/Myanime.kt @@ -5,6 +5,7 @@ import android.content.SharedPreferences import androidx.preference.ListPreference import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.animeextension.en.myanime.extractors.DailymotionExtractor +import eu.kanade.tachiyomi.animeextension.en.myanime.extractors.GdrivePlayerExtractor import eu.kanade.tachiyomi.animeextension.en.myanime.extractors.YouTubeExtractor import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.model.AnimeFilter @@ -201,6 +202,11 @@ class Myanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() { episode.episode_number = 0F episode.setUrlWithoutDomain(response.request.url.encodedPath) episodeList.add(episode) + } else if (document.selectFirst("span > a[href*=/tag/]") != null) { + val url = document.selectFirst("span > a[href*=/tag/]")!!.attr("href") + episodeList.addAll( + episodeListParse(client.newCall(GET(url)).execute()), + ) } return episodeList @@ -232,6 +238,9 @@ class Myanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() { url.contains("youtube.com") -> { YouTubeExtractor(client).videosFromUrl(url, "YouTube - ") } + url.contains("gdriveplayer") -> { + GdrivePlayerExtractor(client).videosFromUrl(url, name = "Gdriveplayer") + } else -> null } }.getOrNull() diff --git a/src/en/myanime/src/eu/kanade/tachiyomi/animeextension/en/myanime/extractors/GdrivePlayerExtractor.kt b/src/en/myanime/src/eu/kanade/tachiyomi/animeextension/en/myanime/extractors/GdrivePlayerExtractor.kt new file mode 100644 index 000000000..4ec192c90 --- /dev/null +++ b/src/en/myanime/src/eu/kanade/tachiyomi/animeextension/en/myanime/extractors/GdrivePlayerExtractor.kt @@ -0,0 +1,156 @@ +package eu.kanade.tachiyomi.animeextension.en.myanime.extractors + +import android.util.Base64 +import dev.datlag.jsunpacker.JsUnpacker +import eu.kanade.tachiyomi.animesource.model.Track +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.network.GET +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonPrimitive +import okhttp3.Headers +import okhttp3.OkHttpClient +import org.jsoup.Jsoup +import java.security.DigestException +import java.security.MessageDigest +import javax.crypto.Cipher +import javax.crypto.spec.IvParameterSpec +import javax.crypto.spec.SecretKeySpec + +class GdrivePlayerExtractor(private val client: OkHttpClient) { + + fun videosFromUrl(url: String, name: String): List