fix for some arabic extensions (#528)

This commit is contained in:
Ahmed gamal
2022-04-28 09:33:01 +02:00
committed by GitHub
parent d28fdfb0b8
commit e15afdbc60
6 changed files with 72 additions and 27 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'Anime4up'
pkgNameSuffix = 'ar.anime4up'
extClass = '.Anime4Up'
extVersionCode = 25
extVersionCode = 26
libVersion = '12'
}

View File

@ -30,7 +30,7 @@ class Anime4Up : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override val name = "Anime4Up"
override val baseUrl = "https://anime4up.vip"
override val baseUrl = "https://anime4up.art"
override val lang = "ar"
@ -44,7 +44,7 @@ class Anime4Up : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun headersBuilder(): Headers.Builder {
return super.headersBuilder()
.add("Referer", "https://anime4up.vip/") // https://s12.gemzawy.com https://moshahda.net
.add("Referer", "https://anime4up.art/") // https://s12.gemzawy.com https://moshahda.net
}
// Popular

View File

@ -5,7 +5,7 @@ ext {
extName = 'Animerco'
pkgNameSuffix = 'ar.animerco'
extClass = '.Animerco'
extVersionCode = 4
extVersionCode = 5
libVersion = '12'
}

View File

@ -85,7 +85,7 @@ class Animerco : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// headers = Headers.headersOf("Referer", document.location())
)
).execute().asJsoup()
val seasonsElements = seasonsHtml.select("span.se-t a")
val seasonsElements = seasonsHtml.select("div.seasontitle a")
seasonsElements.forEach {
val seasonEpList = parseEpisodesFromSeries(it)
episodeList.addAll(seasonEpList)
@ -93,7 +93,7 @@ class Animerco : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} else {
val movieUrl = seriesLink
val episode = SEpisode.create()
episode.name = document.select("div.TPMvCn h1.Title").text()
episode.name = document.select("div.data h1").text()
episode.episode_number = 1F
episode.setUrlWithoutDomain(movieUrl)
episodeList.add(episode)
@ -104,10 +104,10 @@ class Animerco : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
private fun parseEpisodesFromSeries(element: Element): List<SEpisode> {
val seasonId = element.attr("abs:href")
// val seasonName = element.text()
// val seasonId = element.attr("abs:href")
val seasonName = element.text()
// Log.i("seasonname", seasonName)
val episodesUrl = seasonId
val episodesUrl = element.attr("abs:href")
val episodesHtml = client.newCall(
GET(
episodesUrl,
@ -187,7 +187,8 @@ class Animerco : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
embedUrl.contains("sbvideo.net") || embedUrl.contains("streamsb.net") || embedUrl.contains("sbplay.one") ||
embedUrl.contains("cloudemb.com") || embedUrl.contains("playersb.com") || embedUrl.contains("tubesb.com") ||
embedUrl.contains("sbplay1.com") || embedUrl.contains("embedsb.com") || embedUrl.contains("watchsb.com") ||
embedUrl.contains("sbplay2.com") || embedUrl.contains("japopav.tv") || embedUrl.contains("viewsb.com")
embedUrl.contains("sbplay2.com") || embedUrl.contains("japopav.tv") || embedUrl.contains("viewsb.com") ||
embedUrl.contains("sbfast")
-> {
val headers = headers.newBuilder()
.set("Referer", embedUrl)

View File

@ -5,7 +5,7 @@ ext {
extName = 'عرب سيد'
pkgNameSuffix = 'ar.arabseed'
extClass = '.ArabSeed'
extVersionCode = 2
extVersionCode = 3
libVersion = '12'
}

View File

@ -12,8 +12,9 @@ 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.Headers
import okhttp3.FormBody
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import okhttp3.OkHttpClient
import okhttp3.Request
@ -28,7 +29,7 @@ class ArabSeed : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override val name = "عرب سيد"
override val baseUrl = "https://eg1.arabseed.ink"
override val baseUrl = "https://m.arabseed.ink"
override val lang = "ar"
@ -49,6 +50,7 @@ class ArabSeed : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val anime = SAnime.create()
anime.setUrlWithoutDomain(element.attr("href"))
anime.title = element.select("div.BlockName > h4").text()
anime.thumbnail_url = element.select("div.Poster img").attr("data-src")
return anime
}
@ -61,31 +63,73 @@ class ArabSeed : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val episode = SEpisode.create()
episode.setUrlWithoutDomain(element.attr("href"))
episode.name = element.ownerDocument().select("div.InfoPartOne a h1.Title").text().replace(" مترجم", "").replace("فيلم ", "")
return episode
}
// Video Links
// Video urls
override fun videoListParse(response: Response): List<Video> {
val document = response.asJsoup()
val srcVid = preferences.getString("preferred_quality", "سيرفر عرب سيد - 720p")!!
val iframe = document.select("li:contains($srcVid) noscript iframe").attr("src")
val referer = response.request.url.encodedPath
val newHeaders = Headers.headersOf("referer", baseUrl + referer)
val iframeResponse = client.newCall(GET(iframe, newHeaders))
.execute().asJsoup()
return iframeResponse.select(videoListSelector()).map { videoFromElement(it) }
return videosFromElement(document)
}
override fun videoListSelector() = "source" // , video"
override fun videoListSelector() = "div.containerServers ul li" // ul#playeroptionsul
override fun videoFromElement(element: Element): Video {
return Video(element.attr("src").replace("https", "http"), "Default: If you want to change the quality go to extension settings", element.attr("src").replace("https", "http"), null)
private fun videosFromElement(document: Document): List<Video> {
val videoList = mutableListOf<Video>()
val elements = document.select(videoListSelector())
for (element in elements) {
val location = element.ownerDocument().location()
val videoHeaders = headers.newBuilder()
.set("Referer", "https://m.arabseed.ink/")
.set("X-Requested-With", "XMLHttpRequest")
.build()
// Headers.headersOf("Referer", location)
val dataPost = element.attr("data-post")
val dataServer = element.attr("data-server")
val dataQu = element.attr("data-qu")
val pageData = FormBody.Builder()
.add("post_id", dataPost)
.add("server", dataServer)
.add("qu", dataQu)
.build()
val ajax1 = "https://m.arabseed.ink/wp-content/themes/Elshaikh2021/Ajaxat/Single/Server.php"
val ajax = client.newCall(POST(ajax1, videoHeaders, pageData)).execute().asJsoup()
val embedUrl = ajax.select("iframe").attr("src")
when {
embedUrl.contains("seeeed") -> {
val iframeResponse = client.newCall(GET(embedUrl)).execute().asJsoup()
val videoUrl = iframeResponse.select("source").attr("src")
val video = Video(embedUrl, dataQu + "p", videoUrl.replace("https", "http"), null)
videoList.add(video)
}
}
}
return videoList
}
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString("preferred_quality", null)
if (quality != null) {
val newList = mutableListOf<Video>()
var preferred = 0
for (video in this) {
if (video.quality.contains(quality)) {
newList.add(preferred, video)
preferred++
} else {
newList.add(video)
}
}
return newList
}
return this
}
// Search
override fun searchAnimeFromElement(element: Element): SAnime {
@ -124,7 +168,7 @@ class ArabSeed : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun animeDetailsParse(document: Document): SAnime {
val anime = SAnime.create()
anime.thumbnail_url = document.select("div.Poster img").first().attr("src")
anime.thumbnail_url = document.select("div.Poster img").first().attr("data-src")
anime.title = document.select("div.InfoPartOne a h1.Title").text().replace(" مترجم", "").replace("فيلم ", "")
anime.genre = document.select("div.MetaTermsInfo > li:contains(النوع) > a").joinToString(", ") { it.text() }
anime.description = document.select("div.StoryLine p").text()
@ -176,7 +220,7 @@ class ArabSeed : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
key = "preferred_quality"
title = "Preferred Quality"
entries = arrayOf("1080p", "720p", "480p", "360p")
entryValues = arrayOf("سيرفر عرب سيد - 1080p", "سيرفر عرب سيد - 720p", "سيرفر عرب سيد - 480p", "سيرفر عرب سيد - 360p")
entryValues = arrayOf("1080", "720", "480", "360")
setDefaultValue("سيرفر عرب سيد - 720p")
summary = "%s"