From 381194f10993f620e651e78b95e36ba06fda63cc Mon Sep 17 00:00:00 2001 From: Ahmed gamal <12355.ahmedgamal.com@gmail.com> Date: Tue, 17 Jan 2023 03:30:04 +0200 Subject: [PATCH] fix arabseed, update base url for Shahed4u , fix streamsb Extractor (#1177) * Update build.gradle * update --- .../streamsbextractor/StreamSBExtractor.kt | 4 +- src/ar/arabseed/build.gradle | 2 +- .../animeextension/ar/arabseed/ArabSeed.kt | 82 ++++++++++++------- src/ar/shahid4u/build.gradle | 2 +- .../animeextension/ar/shahid4u/Shahid4U.kt | 2 +- 5 files changed, 59 insertions(+), 33 deletions(-) diff --git a/lib/streamsb-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamsbextractor/StreamSBExtractor.kt b/lib/streamsb-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamsbextractor/StreamSBExtractor.kt index bbab7a798..ec965f115 100644 --- a/lib/streamsb-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamsbextractor/StreamSBExtractor.kt +++ b/lib/streamsb-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamsbextractor/StreamSBExtractor.kt @@ -32,9 +32,9 @@ class StreamSBExtractor(private val client: OkHttpClient) { .substringBefore(".html") return if (common) { val hexBytes = bytesToHex(id.toByteArray()) - "$sbUrl/sources48/625a364258615242766475327c7c${hexBytes}7c7c4761574550654f7461566d347c7c73747265616d7362" + "$sbUrl/sources50/625a364258615242766475327c7c${hexBytes}7c7c4761574550654f7461566d347c7c73747265616d7362" } else { - "$sbUrl/sources48/${bytesToHex("||$id||||streamsb".toByteArray())}/" + "$sbUrl/sources50/${bytesToHex("||$id||||streamsb".toByteArray())}/" } } diff --git a/src/ar/arabseed/build.gradle b/src/ar/arabseed/build.gradle index 9aee5b743..8c0e7b20c 100644 --- a/src/ar/arabseed/build.gradle +++ b/src/ar/arabseed/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'عرب سيد' pkgNameSuffix = 'ar.arabseed' extClass = '.ArabSeed' - extVersionCode = 5 + extVersionCode = 6 libVersion = '13' } diff --git a/src/ar/arabseed/src/eu/kanade/tachiyomi/animeextension/ar/arabseed/ArabSeed.kt b/src/ar/arabseed/src/eu/kanade/tachiyomi/animeextension/ar/arabseed/ArabSeed.kt index 16fad0929..9f3a821c2 100644 --- a/src/ar/arabseed/src/eu/kanade/tachiyomi/animeextension/ar/arabseed/ArabSeed.kt +++ b/src/ar/arabseed/src/eu/kanade/tachiyomi/animeextension/ar/arabseed/ArabSeed.kt @@ -12,9 +12,8 @@ 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.network.POST import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.FormBody +import okhttp3.Headers import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.OkHttpClient import okhttp3.Request @@ -29,7 +28,7 @@ class ArabSeed : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override val name = "عرب سيد" - override val baseUrl = "https://m.arabseed.sbs" + override val baseUrl = "https://a.arabseed.ink" override val lang = "ar" @@ -57,20 +56,53 @@ class ArabSeed : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun popularAnimeNextPageSelector(): String = "ul.page-numbers li a.next" // Episodes - override fun episodeListSelector() = "div.WatchButtons > a[href~=watch]" + override fun episodeListSelector() = "div.ContainerEpisodesList a" + + override fun episodeListParse(response: Response): List { + val episodes = mutableListOf() + fun addEpisodes(document: Document) { + if (document.select(episodeListSelector()).isNullOrEmpty()) { + // add movie + document.select("link[rel=canonical]").map { episodes.add(episodeFromElement(it)) } + } else { + document.select(episodeListSelector()).map { episodes.add(episodesFromElement(it)) } + } + } + addEpisodes(response.asJsoup()) + return episodes + } override fun episodeFromElement(element: Element): SEpisode { val episode = SEpisode.create() episode.setUrlWithoutDomain(element.attr("href")) - episode.name = element.ownerDocument().select("div.InfoPartOne a h1.Title").text().replace(" مترجم", "").replace("فيلم ", "") + episode.name = "مشاهدة" return episode } + private fun episodesFromElement(element: Element): SEpisode { + val episode = SEpisode.create() + val epNum = getNumberFromEpsString(element.text()) + episode.setUrlWithoutDomain(element.attr("href")) + episode.name = element.text() + episode.episode_number = when { + (epNum.isNotEmpty()) -> epNum.toFloat() + else -> 1F + } + return episode + } + + private fun getNumberFromEpsString(epsStr: String): String { + return epsStr.filter { it.isDigit() } + } + // Video urls override fun videoListParse(response: Response): List