fix for some arabic extensions (#528)
This commit is contained in:
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'Anime4up'
|
||||
pkgNameSuffix = 'ar.anime4up'
|
||||
extClass = '.Anime4Up'
|
||||
extVersionCode = 25
|
||||
extVersionCode = 26
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'Animerco'
|
||||
pkgNameSuffix = 'ar.animerco'
|
||||
extClass = '.Animerco'
|
||||
extVersionCode = 4
|
||||
extVersionCode = 5
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'عرب سيد'
|
||||
pkgNameSuffix = 'ar.arabseed'
|
||||
extClass = '.ArabSeed'
|
||||
extVersionCode = 2
|
||||
extVersionCode = 3
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
Reference in New Issue
Block a user