diff --git a/src/ar/faselhd/build.gradle b/src/ar/faselhd/build.gradle index 3d82dc51f..bfb539fa1 100644 --- a/src/ar/faselhd/build.gradle +++ b/src/ar/faselhd/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'فاصل اعلاني' pkgNameSuffix = 'ar.faselhd' extClass = '.FASELHD' - extVersionCode = 10 + extVersionCode = 11 libVersion = '13' } diff --git a/src/ar/faselhd/src/eu/kanade/tachiyomi/animeextension/ar/faselhd/FASELHD.kt b/src/ar/faselhd/src/eu/kanade/tachiyomi/animeextension/ar/faselhd/FASELHD.kt index 1add80104..7d9d3dd8f 100644 --- a/src/ar/faselhd/src/eu/kanade/tachiyomi/animeextension/ar/faselhd/FASELHD.kt +++ b/src/ar/faselhd/src/eu/kanade/tachiyomi/animeextension/ar/faselhd/FASELHD.kt @@ -42,7 +42,7 @@ class FASELHD : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun headersBuilder(): Headers.Builder { return super.headersBuilder() - .add("Referer", "https://www.faselhd.club/") + .add("Referer", baseUrl) } // Popular Anime @@ -63,18 +63,36 @@ class FASELHD : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun popularAnimeNextPageSelector(): String = "ul.pagination li a.page-link:contains(›)" // Episodes + override fun episodeListSelector() = "div.epAll a" private fun seasonsNextPageSelector(seasonNumber: Int) = "div#seasonList div.col-xl-2:nth-child($seasonNumber)" // "div.List--Seasons--Episodes > a:nth-child($seasonNumber)" override fun episodeListParse(response: Response): List { val episodes = mutableListOf() - var seasonNumber = 1 + fun episodeExtract(element: Element): SEpisode { + val episode = SEpisode.create() + episode.setUrlWithoutDomain(element.select("span#liskSh").text()) + episode.name = "مشاهدة" + return episode + } fun addEpisodes(document: Document) { - document.select(episodeListSelector()).map { episodes.add(episodeFromElement(it)) } - document.select(seasonsNextPageSelector(seasonNumber)).firstOrNull()?.let { - seasonNumber++ - addEpisodes(client.newCall(GET("https://www.faselhd.club/?p=" + it.select("div.seasonDiv").attr("data-href"), headers)).execute().asJsoup()) + if (document.select(episodeListSelector()).isNullOrEmpty()) + document.select("div.shortLink").map { episodes.add(episodeExtract(it)) } + else { + document.select(episodeListSelector()).map { episodes.add(episodeFromElement(it)) } + document.select(seasonsNextPageSelector(seasonNumber)).firstOrNull()?.let { + seasonNumber++ + addEpisodes( + client.newCall( + GET( + "$baseUrl/?p=" + it.select("div.seasonDiv") + .attr("data-href"), + headers + ) + ).execute().asJsoup() + ) + } } } @@ -82,8 +100,6 @@ class FASELHD : ConfigurableAnimeSource, ParsedAnimeHttpSource() { return episodes.reversed() } - override fun episodeListSelector() = "div.epAll a" - override fun episodeFromElement(element: Element): SEpisode { val episode = SEpisode.create() episode.setUrlWithoutDomain(element.attr("abs:href")) @@ -155,8 +171,8 @@ class FASELHD : ConfigurableAnimeSource, ParsedAnimeHttpSource() { val url = "$baseUrl/".toHttpUrlOrNull()!!.newBuilder() filters.forEach { filter -> when (filter) { - is GenreFilter -> url.addPathSegment(filter.toUriPart()) + else -> {} } } url.addPathSegment("page") @@ -219,6 +235,15 @@ class FASELHD : ConfigurableAnimeSource, ParsedAnimeHttpSource() { private class GenreFilter(vals: Array>) : UriPartFilter("تصنيف المسلسلات", vals) private fun getGenreList() = arrayOf( + Pair("افلام انمي", "anime-movies"), + Pair("جميع الافلام", "all-movies"), + Pair("جوائز الأوسكار لهذا العام⭐", "oscars-winners"), + Pair("افلام اجنبي", "movies"), + Pair("افلام مدبلجة", "dubbed-movies"), + Pair("افلام هندي", "hindi"), + Pair("افلام اسيوي", "asian-movies"), + Pair("الاعلي مشاهدة", "movies_top_views"), + Pair("الافلام الاعلي تقييما IMDB", "movies_top_imdb"), Pair("مسلسلات الأنمي", "anime"), Pair("جميع المسلسلات", "series"), Pair("الاعلي مشاهدة", "series_top_views"), diff --git a/src/ar/faselhdmovies/AndroidManifest.xml b/src/ar/faselhdmovies/AndroidManifest.xml deleted file mode 100644 index acb4de356..000000000 --- a/src/ar/faselhdmovies/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/src/ar/faselhdmovies/build.gradle b/src/ar/faselhdmovies/build.gradle deleted file mode 100644 index a3c25c0d0..000000000 --- a/src/ar/faselhdmovies/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' - -ext { - extName = 'فاصل اعلاني افلام بس' - pkgNameSuffix = 'ar.faselhdmovies' - extClass = '.FASELHDMOVIES' - extVersionCode = 7 - libVersion = '13' -} - -apply from: "$rootDir/common.gradle" diff --git a/src/ar/faselhdmovies/res/mipmap-hdpi/ic_launcher.png b/src/ar/faselhdmovies/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 236d8de83..000000000 Binary files a/src/ar/faselhdmovies/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/ar/faselhdmovies/res/mipmap-mdpi/ic_launcher.png b/src/ar/faselhdmovies/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index fa2b45243..000000000 Binary files a/src/ar/faselhdmovies/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/ar/faselhdmovies/res/mipmap-xhdpi/ic_launcher.png b/src/ar/faselhdmovies/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 09542ec05..000000000 Binary files a/src/ar/faselhdmovies/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/ar/faselhdmovies/res/mipmap-xxhdpi/ic_launcher.png b/src/ar/faselhdmovies/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 9914c6995..000000000 Binary files a/src/ar/faselhdmovies/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/ar/faselhdmovies/res/mipmap-xxxhdpi/ic_launcher.png b/src/ar/faselhdmovies/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index e6afdda87..000000000 Binary files a/src/ar/faselhdmovies/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/ar/faselhdmovies/res/web_hi_res_512.png b/src/ar/faselhdmovies/res/web_hi_res_512.png deleted file mode 100644 index ad104d0f9..000000000 Binary files a/src/ar/faselhdmovies/res/web_hi_res_512.png and /dev/null differ diff --git a/src/ar/faselhdmovies/src/eu/kanade/tachiyomi/animeextension/ar/faselhdmovies/FASELHDMOVIES.kt b/src/ar/faselhdmovies/src/eu/kanade/tachiyomi/animeextension/ar/faselhdmovies/FASELHDMOVIES.kt deleted file mode 100644 index adae866de..000000000 --- a/src/ar/faselhdmovies/src/eu/kanade/tachiyomi/animeextension/ar/faselhdmovies/FASELHDMOVIES.kt +++ /dev/null @@ -1,232 +0,0 @@ -package eu.kanade.tachiyomi.animeextension.ar.faselhdmovies - -import android.app.Application -import android.content.SharedPreferences -import androidx.preference.ListPreference -import androidx.preference.PreferenceScreen -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.network.GET -import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.Response -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import java.lang.Exception - -class FASELHDMOVIES : ConfigurableAnimeSource, ParsedAnimeHttpSource() { - - override val name = "فاصل اعلاني افلام بس" - - override val baseUrl = "https://www.faselhd.club" - - override val lang = "ar" - - override val supportsLatest = true - - override val client: OkHttpClient = network.cloudflareClient - - private val preferences: SharedPreferences by lazy { - Injekt.get().getSharedPreferences("source_$id", 0x0000) - } - - override fun headersBuilder(): Headers.Builder { - return super.headersBuilder() - .add("Referer", "https://www.faselhd.club/") - } - - // Popular Anime - - override fun popularAnimeSelector(): String = "div#postList div.col-xl-2 a" - - override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/anime-movies/page/$page") - - override fun popularAnimeFromElement(element: Element): SAnime { - val anime = SAnime.create() - anime.setUrlWithoutDomain(element.attr("href")) - anime.title = element.select("div.imgdiv-class img").attr("alt") - anime.thumbnail_url = element.select("div.imgdiv-class img").attr("data-src") - - return anime - } - - override fun popularAnimeNextPageSelector(): String = "ul.pagination li a.page-link:contains(›)" - - // Episodes - - override fun episodeListSelector() = "div.shortLink" - - override fun episodeFromElement(element: Element): SEpisode { - val episode = SEpisode.create() - episode.setUrlWithoutDomain(element.select("span#liskSh").text()) - episode.name = "movie" - return episode - } - - // Video urls - - override fun videoListSelector() = throw UnsupportedOperationException("Not used.") - - override fun videoListParse(response: Response): List