diff --git a/src/ar/movizland/build.gradle b/src/ar/movizland/build.gradle index b9b1bc1d1..1aeddd2c1 100644 --- a/src/ar/movizland/build.gradle +++ b/src/ar/movizland/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'موفيزلاند' pkgNameSuffix = 'ar.movizland' extClass = '.Movizland' - extVersionCode = 1 + extVersionCode = 2 libVersion = '13' } 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 index f608977e1..abb58dec3 100644 --- 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 @@ -40,6 +40,18 @@ class Movizland : ConfigurableAnimeSource, ParsedAnimeHttpSource() { } // Popular + private fun titleEdit(title: String): String { + return if (Regex("فيلم(.*?)م").containsMatchIn(title) and Regex("[A-Za-z]").containsMatchIn(title)) + Regex("فيلم(.*?)م").find(title)!!.groupValues[1] + "(فيلم)" + else if (title.contains("مسلسل")) + Regex(if (title.contains("الموسم"))"مسلسل(.*?)الموسم" else "مسلسل(.*?)الحلقة").find(title)!!.groupValues[1] + "(مسلسل)" + else if (title.contains("انمي")) + Regex(if (title.contains("الموسم"))"انمي(.*?)الموسم" else "انمي(.*?)الحلقة").find(title)!!.groupValues[1] + "(انمى)" + else if (title.contains("برنامج")) + Regex(if (title.contains("الموسم"))"برنامج(.*?)الموسم" else "برنامج(.*?)الحلقة").find(title)!!.groupValues[1] + "(برنامج)" + else + title + } override fun popularAnimeSelector(): String = "div.BoxOfficeOtherSide div.BlocksUI div.BlockItem" @@ -49,11 +61,7 @@ class Movizland : ConfigurableAnimeSource, ParsedAnimeHttpSource() { val anime = SAnime.create() anime.thumbnail_url = element.select("a div.BlockImageItem img").attr("data-src") anime.setUrlWithoutDomain(element.select("a").attr("href")) - anime.title = element.select("a div.BlockImageItem img").attr("alt").replace("فيلم", "Movie").replace("مسلسل", "Series").replace("[^A-Za-z ]".toRegex(), "").trim() - if (anime.title.contains("Movie")) - anime.title = anime.title.replace("Movie ", "") + " (Movie)" - else - anime.title = anime.title.replace("Series ", "") + " (Series)" + anime.title = titleEdit(element.select("a div.BlockImageItem img").attr("alt")) return anime } @@ -64,38 +72,41 @@ class Movizland : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun episodeListParse(response: Response): List { val episodes = mutableListOf() - fun addEpisode(document: Document) { - document.select(episodeListSelector()).map { episodes.add(episodeFromElement(it)) } + fun addEpisode(document: Document, season: String) { + document.select(episodeListSelector()).map { episodes.add(episodeFromElement(it, season)) } } fun addEpisodes(document: Document) { - // Add all season in search + // 1 episode in search to whole season if (!document.select("div.SeriesSingle div.container h2:contains(موفيز لاند) a").isNullOrEmpty()) { val seriesLink = document.select("div.SeriesSingle div.container h2:contains(موفيز لاند) a") addEpisodes(client.newCall(GET(seriesLink.attr("href"), headers)).execute().asJsoup()) return } if (document.select("link[rel=canonical]").attr("href").contains("series")) { - // Series + // Series and movie-series for (season in document.select(seasonsNextPageSelector())) { season.let { val link = it.attr("href") - // More than 1 season + // 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 { - addEpisode(client.newCall(GET(this.attr("href"), headers)).execute().asJsoup()) + addEpisode(client.newCall(GET(this.attr("href"), headers)).execute().asJsoup(), "series") } } } else { - // 1 season only - addEpisode(client.newCall(GET(it.attr("href"), headers)).execute().asJsoup()) + // if series 1 season only + addEpisode( + client.newCall(GET(it.attr("href"), headers)).execute().asJsoup(), + if (it.select("img").first().attr("alt").contains("فيلم")) "assembly" else "1" + ) } } } } else { // Movies - addEpisode(document) + addEpisode(document, "0") } } addEpisodes(response.asJsoup()) @@ -104,12 +115,19 @@ class Movizland : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun episodeListSelector() = "link[rel=canonical]" - override fun episodeFromElement(element: Element): SEpisode { + override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used") + + private fun episodeFromElement(element: Element, season: String): SEpisode { // movie val episode = SEpisode.create() episode.setUrlWithoutDomain(element.attr("href")) - episode.name = element.ownerDocument().select("meta[property=og:title]").attr("content").replace("مسلسل", "").replace("انمي", "").replace("فيلم", "").replace("مشاهدة", "").replace("وتحميل", "").replace("مترجمة", "").replace("مترجم", "").replace("[A-Za-z:?]".toRegex(), "").trim() - + episode.name = element.ownerDocument().select("meta[property=og:title]").attr("content") + if (season == "assembly") + episode.name = titleEdit(episode.name) + else if (episode.name.contains("فيلم")) + episode.name = "watch" + else + episode.name = Regex("الموسم(.*?)مترجمة").find(episode.name)!!.value.replace("مترجمة", "").replace("والاخيرة", "").trim() return episode } @@ -130,7 +148,7 @@ class Movizland : ConfigurableAnimeSource, ParsedAnimeHttpSource() { private fun videosFromElement(element: Element): List