diff --git a/src/ar/movizland/AndroidManifest.xml b/src/ar/movizland/AndroidManifest.xml deleted file mode 100644 index 568741e54..000000000 --- a/src/ar/movizland/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/src/ar/movizland/build.gradle b/src/ar/movizland/build.gradle deleted file mode 100644 index 9802499a8..000000000 --- a/src/ar/movizland/build.gradle +++ /dev/null @@ -1,17 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' - -ext { - extName = 'موفيزلاند' - pkgNameSuffix = 'ar.movizland' - extClass = '.Movizland' - extVersionCode = 11 - libVersion = '13' -} - -dependencies { - implementation(project(':lib-streamtape-extractor')) - implementation(project(':lib-dood-extractor')) -} - -apply from: "$rootDir/common.gradle" diff --git a/src/ar/movizland/res/mipmap-hdpi/ic_launcher.png b/src/ar/movizland/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 005bc7ea8..000000000 Binary files a/src/ar/movizland/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/ar/movizland/res/mipmap-mdpi/ic_launcher.png b/src/ar/movizland/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 28223a85f..000000000 Binary files a/src/ar/movizland/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/ar/movizland/res/mipmap-xhdpi/ic_launcher.png b/src/ar/movizland/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index fae729552..000000000 Binary files a/src/ar/movizland/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/ar/movizland/res/mipmap-xxhdpi/ic_launcher.png b/src/ar/movizland/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 4cfdd3425..000000000 Binary files a/src/ar/movizland/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/ar/movizland/res/mipmap-xxxhdpi/ic_launcher.png b/src/ar/movizland/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 75be5ed0c..000000000 Binary files a/src/ar/movizland/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/ar/movizland/res/web_hi_res_512.png b/src/ar/movizland/res/web_hi_res_512.png deleted file mode 100644 index 16a2ff567..000000000 Binary files a/src/ar/movizland/res/web_hi_res_512.png and /dev/null differ diff --git a/src/ar/movizland/src/eu/kanade/tachiyomi/animeextension/ar/movizland/Movizland.kt b/src/ar/movizland/src/eu/kanade/tachiyomi/animeextension/ar/movizland/Movizland.kt deleted file mode 100644 index f498a1a5f..000000000 --- a/src/ar/movizland/src/eu/kanade/tachiyomi/animeextension/ar/movizland/Movizland.kt +++ /dev/null @@ -1,382 +0,0 @@ -package eu.kanade.tachiyomi.animeextension.ar.movizland - -import android.app.Application -import android.content.SharedPreferences -import androidx.preference.ListPreference -import androidx.preference.PreferenceScreen -import eu.kanade.tachiyomi.animeextension.ar.movizland.extractors.LinkboxExtractor -import eu.kanade.tachiyomi.animeextension.ar.movizland.extractors.MoshahdaExtractor -import eu.kanade.tachiyomi.animeextension.ar.movizland.extractors.UQLoadExtractor -import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource -import eu.kanade.tachiyomi.animesource.model.AnimeFilter -import eu.kanade.tachiyomi.animesource.model.AnimeFilterList -import eu.kanade.tachiyomi.animesource.model.SAnime -import eu.kanade.tachiyomi.animesource.model.SEpisode -import eu.kanade.tachiyomi.animesource.model.Video -import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource -import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor -import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.POST -import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.FormBody -import okhttp3.Headers -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.Response -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import org.jsoup.select.Elements -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import kotlin.Exception - -class Movizland : ConfigurableAnimeSource, ParsedAnimeHttpSource() { - - override val name = "موفيزلاند" - - override val baseUrl = "https://eg.movizlaand.top" - - override val lang = "ar" - - override val supportsLatest = false - - override val client: OkHttpClient = network.cloudflareClient - - private val preferences: SharedPreferences by lazy { - Injekt.get().getSharedPreferences("source_$id", 0x0000) - } - - // ============================= popular ============================= - - override fun popularAnimeSelector(): String = "div.BlockItem a" - - override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/page/$page/") - - override fun popularAnimeFromElement(element: Element): SAnime { - val anime = SAnime.create() - anime.thumbnail_url = element.select("div.BlockImageItem img").attr("data-src") - anime.setUrlWithoutDomain(element.attr("href")) - anime.title = titleEdit(element.select("div.BlockImageItem img").attr("alt"), true) - return anime - } - - override fun popularAnimeNextPageSelector(): String = "div.pagination li a.next" - - // ============================= episodes ============================= - - private fun seasonsNextPageSelector() = "div.BlockItem a" - - override fun episodeListParse(response: Response): List { - val episodes = mutableListOf() - - fun addEpisodeNew(url: String, type: String, title: String = "") { - val episode = SEpisode.create() - episode.setUrlWithoutDomain(url) - if (type == "assembly") { - episode.name = title.replace("فيلم", "").trim() - } else if (type == "movie") { - episode.name = "مشاهدة" - } else if (TitleRegex.SEASON.containsMatchIn(title)) { - episode.name = TitleRegex.SEASON.find(title)!!.value.replace("مترجمة", "").replace("والاخيرة", "").trim() - } else if (TitleRegex.EPISODE.containsMatchIn(title)) { - episode.name = TitleRegex.EPISODE.find(title)!!.value.replace("مترجمة", "").replace("والاخيرة", "").trim() - } else { - episode.name = title - } - - episodes.add(episode) - } - fun seasonsAdjust(selector: String, seasons: Elements): List { - var reverse = false - for ((i, s) in seasons.withIndex()) { - if (s.select(selector).text().contains("الاول")) { - if (i == 0) reverse = true - } - if (s.select(selector).text().contains("الثان")) { - if (i != 0) { - seasons.remove(s) - seasons.add(1, s) - } - } - } - return if (reverse) seasons.reversed() else seasons - } - fun addEpisodes(response: Response) { - val document = response.asJsoup() - val url = response.request.url.toString() - // 1 episode in search to whole season - - if (url.contains("series")) { - // Series and movie-series - for (season in seasonsAdjust("div.BlockTitle", document.select(seasonsNextPageSelector()))) { - season.let { - val link = it.attr("href") - // if series > 1 season - if (link.contains("series")) { - val seasonHTML = client.newCall(GET(link, headers)).execute().asJsoup() - for (episode in seasonHTML.select(seasonsNextPageSelector())) { - episode.run { - addEpisodeNew(this.attr("href"), "series", this.select("div.BlockTitle").text()) - } - } - } else { - // if series 1 season only - val title = it.select("div.BlockTitle").text() - addEpisodeNew(link, if (title.contains("فيلم")) "assembly" else "series", title) - } - } - } - } else { - // Movies - var countSeasons = 0 - var count = 0 - for (season in seasonsAdjust("a", document.select("div.SeriesSingle ul.DropdownFilter li"))) { - countSeasons++ - val seasonData = season.select("a").attr("data-term") - val refererHeaders = Headers.headersOf("referer", url, "x-requested-with", "XMLHttpRequest") - val requestBody = FormBody.Builder().add("season", seasonData).build() - val getEpisodes = client.newCall(POST("$baseUrl/wp-content/themes/Moviezland2022/EpisodesList.php", refererHeaders, requestBody)).execute().asJsoup() - for (episode in getEpisodes.select("div.EpisodeItem").reversed()) { - addEpisodeNew(episode.select("a").attr("href"), "series", season.select("a").text() + " " + episode.select("a").text()) - } - } - if (countSeasons == 0) { - for (episode in document.select("div.EpisodeItem").reversed()) { - count++ - addEpisodeNew( - episode.select("a").attr("href"), - "series", - document.select("div.SeriesSingle h2 span a").text() + " " + episode.select("a").text(), - ) - } - if (count == 0) { - addEpisodeNew(url, "movie") - } - } - } - } - - addEpisodes(response) - - return episodes - } - - override fun episodeListSelector() = "link[rel=canonical]" - - override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used") - - // ============================= video links ============================= - - override fun videoListParse(response: Response): List