diff --git a/multisrc/overrides/dooplay/multimovies/additional.gradle b/multisrc/overrides/dooplay/multimovies/additional.gradle new file mode 100644 index 000000000..19ced95f5 --- /dev/null +++ b/multisrc/overrides/dooplay/multimovies/additional.gradle @@ -0,0 +1,8 @@ +dependencies { + implementation(project(':lib-streamsb-extractor')) + implementation(project(':lib-voe-extractor')) + implementation(project(':lib-dood-extractor')) + implementation(project(':lib-mixdrop-extractor')) + implementation(project(':lib-cryptoaes')) + implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1" +} diff --git a/src/en/multimovies/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/dooplay/multimovies/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from src/en/multimovies/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/dooplay/multimovies/res/mipmap-hdpi/ic_launcher.png diff --git a/src/en/multimovies/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/dooplay/multimovies/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from src/en/multimovies/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/dooplay/multimovies/res/mipmap-mdpi/ic_launcher.png diff --git a/src/en/multimovies/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/dooplay/multimovies/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from src/en/multimovies/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/dooplay/multimovies/res/mipmap-xhdpi/ic_launcher.png diff --git a/src/en/multimovies/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/dooplay/multimovies/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from src/en/multimovies/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/dooplay/multimovies/res/mipmap-xxhdpi/ic_launcher.png diff --git a/src/en/multimovies/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/dooplay/multimovies/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from src/en/multimovies/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/dooplay/multimovies/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/dooplay/multimovies/src/Multimovies.kt b/multisrc/overrides/dooplay/multimovies/src/Multimovies.kt new file mode 100644 index 000000000..619e876e8 --- /dev/null +++ b/multisrc/overrides/dooplay/multimovies/src/Multimovies.kt @@ -0,0 +1,196 @@ +package eu.kanade.tachiyomi.animeextension.en.multimovies + +import androidx.preference.ListPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.animeextension.en.multimovies.extractors.AutoEmbedExtractor +import eu.kanade.tachiyomi.animeextension.en.multimovies.extractors.MultimoviesCloudExtractor +import eu.kanade.tachiyomi.animesource.model.AnimeFilterList +import eu.kanade.tachiyomi.animesource.model.SEpisode +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor +import eu.kanade.tachiyomi.multisrc.dooplay.DooPlay +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.POST +import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.FormBody +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Element + +class Multimovies : DooPlay( + "en", + "Multimovies", + "https://multimovies.tech", +) { + override val client = network.cloudflareClient + + // ============================== Popular =============================== + override fun popularAnimeRequest(page: Int) = GET("$baseUrl/genre/anime-series/page/$page/") + + override fun popularAnimeSelector() = latestUpdatesSelector() + + override fun popularAnimeNextPageSelector() = latestUpdatesNextPageSelector() + + // ============================== Episodes ============================== + override val seasonListSelector = "div#seasons > div:not(:contains(no episodes this season))" + + override fun episodeListParse(response: Response): List { + val doc = response.use { getRealAnimeDoc(it.asJsoup()) } + val seasonList = doc.select(seasonListSelector) + return if ("/movies/" in doc.location()) { + SEpisode.create().apply { + setUrlWithoutDomain(doc.location()) + episode_number = 1F + name = episodeMovieText + }.let(::listOf) + } else if (seasonList.size < 1) { + throw Exception("The source provides ZERO episodes.") + } else { + seasonList.flatMap(::getSeasonEpisodes).reversed() + } + } + + // ============================ Video Links ============================= + override val prefQualityValues = arrayOf("1080p", "720p", "480p", "360p", "240p") + override val prefQualityEntries = arrayOf("1080", "720", "480", "360", "240") + + override fun videoListParse(response: Response): List