diff --git a/src/ar/animelek/build.gradle b/src/ar/animelek/build.gradle index 4bf7c3412..c2ccc36ff 100644 --- a/src/ar/animelek/build.gradle +++ b/src/ar/animelek/build.gradle @@ -1,11 +1,13 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) +} ext { extName = 'AnimeLek' pkgNameSuffix = 'ar.animelek' extClass = '.AnimeLek' - extVersionCode = 22 + extVersionCode = 23 libVersion = '13' } @@ -14,6 +16,7 @@ dependencies { implementation(project(':lib-okru-extractor')) implementation(project(':lib-streamsb-extractor')) implementation(project(':lib-dood-extractor')) + implementation(project(':lib-vidbom-extractor')) } apply from: "$rootDir/common.gradle" diff --git a/src/ar/animelek/src/eu/kanade/tachiyomi/animeextension/ar/animelek/AnimeLek.kt b/src/ar/animelek/src/eu/kanade/tachiyomi/animeextension/ar/animelek/AnimeLek.kt index 09b264adb..14560243a 100644 --- a/src/ar/animelek/src/eu/kanade/tachiyomi/animeextension/ar/animelek/AnimeLek.kt +++ b/src/ar/animelek/src/eu/kanade/tachiyomi/animeextension/ar/animelek/AnimeLek.kt @@ -5,7 +5,6 @@ import android.content.SharedPreferences import androidx.preference.ListPreference import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.animeextension.ar.animelek.extractors.SharedExtractor -import eu.kanade.tachiyomi.animeextension.ar.animelek.extractors.VidBomExtractor import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.SAnime @@ -16,9 +15,9 @@ import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor +import eu.kanade.tachiyomi.lib.vidbomextractor.VidBomExtractor import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.Headers import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -36,7 +35,7 @@ class AnimeLek : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override val lang = "ar" - override val supportsLatest = false + override val supportsLatest = true override val client: OkHttpClient = network.cloudflareClient @@ -44,192 +43,150 @@ class AnimeLek : ConfigurableAnimeSource, ParsedAnimeHttpSource() { Injekt.get().getSharedPreferences("source_$id", 0x0000) } - // Popular Anime + // ============================== Popular =============================== + override fun popularAnimeSelector() = "div.slider-episode-container div.episodes-card-container" - override fun popularAnimeSelector(): String = "div.anime-card-details div.anime-card-title" - - override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/قائمة-الأنمي/?page=$page") // page/$page + override fun popularAnimeRequest(page: Int): Request = GET(baseUrl) override fun popularAnimeFromElement(element: Element): SAnime { - val anime = SAnime.create() - anime.setUrlWithoutDomain(element.select("h3 a").attr("href")) - // anime.thumbnail_url = element.select("div.img div.picture img").attr("src") - anime.title = element.attr("title") - return anime + return SAnime.create().apply { + val ahref = element.selectFirst("h3 a")!! + setUrlWithoutDomain(ahref.attr("href")) + title = ahref.text() + thumbnail_url = element.selectFirst("img")?.attr("src") + } } - override fun popularAnimeNextPageSelector(): String = "li.page-item a[rel=next]" - - // Episodes + override fun popularAnimeNextPageSelector() = null + // ============================== Episodes ============================== override fun episodeListSelector() = "div.ep-card-anime-title-detail h3 a" override fun episodeFromElement(element: Element): SEpisode { - val episode = SEpisode.create() - episode.setUrlWithoutDomain(element.attr("href")) - episode.name = element.text() - val epNum = getNumberFromEpsString(element.text()) - episode.episode_number = when { - (epNum.isNotEmpty()) -> epNum.toFloat() - else -> 1F + return SEpisode.create().apply { + setUrlWithoutDomain(element.attr("href")) + val text = element.text() + name = text + val epNum = text.filter { it.isDigit() } + episode_number = when { + (epNum.isNotEmpty()) -> epNum.toFloatOrNull() ?: 1F + else -> 1F + } } - return episode } - private fun getNumberFromEpsString(epsStr: String): String { - return epsStr.filter { it.isDigit() } - } - - // Video urls - - override fun videoListRequest(episode: SEpisode): Request { - val iframe = baseUrl + episode.url - return GET(iframe) - } + override fun episodeListParse(response: Response) = super.episodeListParse(response).reversed() + // ============================ Video Links ============================= override fun videoListParse(response: Response): List