fix(src/ar): Mass fix for some Arabic extensions (#2651)

This commit is contained in:
Ahmed gamal 2023-12-17 15:57:44 +02:00 committed by GitHub
parent 06cbdfed94
commit 02879fcff8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 33 additions and 13 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'أكوام' extName = 'أكوام'
pkgNameSuffix = 'ar.akwam' pkgNameSuffix = 'ar.akwam'
extClass = '.Akwam' extClass = '.Akwam'
extVersionCode = 8 extVersionCode = 9
libVersion = '13' libVersion = '13'
} }

View File

@ -28,7 +28,7 @@ class Akwam : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override val name = "أكوام" override val name = "أكوام"
override val baseUrl = "https://akwam.im" override val baseUrl = "https://akw-cdn1.link"
override val lang = "ar" override val lang = "ar"
@ -100,7 +100,7 @@ class Akwam : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun videoListParse(response: Response): List<Video> { override fun videoListParse(response: Response): List<Video> {
val document = response.asJsoup() val document = response.asJsoup()
val iframe = "https://akwam.im/watch" + document.select("a.link-show").attr("href").substringAfter("watch") + "/" + document.ownerDocument()!!.select("input#page_id").attr("value") val iframe = "https://akw-cdn1.link/watch" + document.select("a.link-show").attr("href").substringAfter("watch") + "/" + document.ownerDocument()!!.select("input#page_id").attr("value")
val referer = response.request.url.toString() val referer = response.request.url.toString()
val refererHeaders = Headers.headersOf("referer", referer) val refererHeaders = Headers.headersOf("referer", referer)
val iframeResponse = client.newCall(GET(iframe, refererHeaders)) val iframeResponse = client.newCall(GET(iframe, refererHeaders))

View File

@ -5,7 +5,7 @@ ext {
extName = 'Egy Dead' extName = 'Egy Dead'
pkgNameSuffix = 'ar.egydead' pkgNameSuffix = 'ar.egydead'
extClass = '.EgyDead' extClass = '.EgyDead'
extVersionCode = 6 extVersionCode = 7
libVersion = '13' libVersion = '13'
} }

View File

@ -6,6 +6,7 @@ import android.widget.Toast
import androidx.preference.EditTextPreference import androidx.preference.EditTextPreference
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.BuildConfig
import dev.datlag.jsunpacker.JsUnpacker import dev.datlag.jsunpacker.JsUnpacker
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
@ -318,8 +319,8 @@ class EgyDead : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// ================================== preferences ================================== // ================================== preferences ==================================
private fun getPrefHostUrl(preferences: SharedPreferences): String = preferences.getString( private fun getPrefHostUrl(preferences: SharedPreferences): String = preferences.getString(
"default_domain", "default_domain_v${BuildConfig.VERSION_CODE}",
"https://w9.egydead.live/", "https://egydead.space/",
)!!.trim() )!!.trim()
override fun setupPreferenceScreen(screen: PreferenceScreen) { override fun setupPreferenceScreen(screen: PreferenceScreen) {
@ -365,7 +366,7 @@ class EgyDead : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// like|kharabnahk // like|kharabnahk
companion object { companion object {
private val DOOD_REGEX = Regex("(do*d(?:stream)?\\.(?:com?|watch|to|s[ho]|cx|la|w[sf]|pm|re|yt|stream))/[de]/([0-9a-zA-Z]+)") private val DOOD_REGEX = Regex("(do*d(?:stream)?\\.(?:com?|watch|to|s[ho]|cx|la|w[sf]|pm|re|yt|stream))/[de]/([0-9a-zA-Z]+)")
private val STREAMWISH_REGEX = Regex("ajmidyad|alhayabambi|atabknh[ks]|file") private val STREAMWISH_REGEX = Regex("ajmidyad|alhayabambi|atabknh[ks]|file|egtpgrvh")
private val SOURCE_URL_REGEX = Regex("sources:\\s*\\[\\{\\s*\\t*file:\\s*[\"']([^\"']+)") private val SOURCE_URL_REGEX = Regex("sources:\\s*\\[\\{\\s*\\t*file:\\s*[\"']([^\"']+)")
private val QUALITIES_REGEX = Regex("(.*)_,(.*),\\.urlset/master(.*)") private val QUALITIES_REGEX = Regex("(.*)_,(.*),\\.urlset/master(.*)")
} }

View File

@ -5,7 +5,7 @@ ext {
extName = 'فاصل اعلاني' extName = 'فاصل اعلاني'
pkgNameSuffix = 'ar.faselhd' pkgNameSuffix = 'ar.faselhd'
extClass = '.FASELHD' extClass = '.FASELHD'
extVersionCode = 13 extVersionCode = 14
libVersion = '13' libVersion = '13'
} }

View File

@ -28,7 +28,7 @@ class FASELHD : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override val name = "فاصل اعلاني" override val name = "فاصل اعلاني"
override val baseUrl = "https://www.faselhd.vip" override val baseUrl = "https://www.faselhd.pro"
override val lang = "ar" override val lang = "ar"

View File

@ -5,7 +5,7 @@ ext {
extName = 'توك توك سينما' extName = 'توك توك سينما'
pkgNameSuffix = 'ar.tuktukcinema' pkgNameSuffix = 'ar.tuktukcinema'
extClass = '.Tuktukcinema' extClass = '.Tuktukcinema'
extVersionCode = 10 extVersionCode = 11
libVersion = '13' libVersion = '13'
} }
@ -16,6 +16,7 @@ dependencies {
implementation(project(':lib-streamtape-extractor')) implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-vidbom-extractor')) implementation(project(':lib-vidbom-extractor'))
implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1" implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1"
implementation(project(':lib-playlist-utils'))
} }
apply from: "$rootDir/common.gradle" apply from: "$rootDir/common.gradle"

View File

@ -6,6 +6,7 @@ import android.widget.Toast
import androidx.preference.EditTextPreference import androidx.preference.EditTextPreference
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.BuildConfig
import eu.kanade.tachiyomi.animeextension.ar.tuktukcinema.extractors.UpStreamExtractor import eu.kanade.tachiyomi.animeextension.ar.tuktukcinema.extractors.UpStreamExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
@ -16,6 +17,7 @@ import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource
import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
import eu.kanade.tachiyomi.lib.uqloadextractor.UqloadExtractor import eu.kanade.tachiyomi.lib.uqloadextractor.UqloadExtractor
import eu.kanade.tachiyomi.lib.vidbomextractor.VidBomExtractor import eu.kanade.tachiyomi.lib.vidbomextractor.VidBomExtractor
@ -135,6 +137,15 @@ class Tuktukcinema : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used") override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
// ============================ video links ============================ // ============================ video links ============================
private val playlistUtils by lazy { PlaylistUtils(client, headers) }
override fun videoListRequest(episode: SEpisode): Request {
val refererHeaders = headers.newBuilder().apply {
add("Referer", "$baseUrl/")
}.build()
return GET("$baseUrl/${episode.url}", headers = refererHeaders)
}
override fun videoListSelector() = "div.watch--servers--list ul li.server--item" override fun videoListSelector() = "div.watch--servers--list ul li.server--item"
@ -151,6 +162,13 @@ class Tuktukcinema : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
private fun extractVideos(url: String): List<Video> { private fun extractVideos(url: String): List<Video> {
return when { return when {
url.contains("egtpgrvh") -> {
val videoList = mutableListOf<Video>()
val request = client.newCall(GET(url, headers)).execute().asJsoup()
val data = request.selectFirst("script:containsData(m3u8)")!!.data()
val masterUrl = data.substringAfter("sources: [{").substringAfter("file:\"").substringBefore("\"}")
playlistUtils.extractFromHls(masterUrl)
}
url.contains("ok") -> { url.contains("ok") -> {
OkruExtractor(client).videosFromUrl(url) OkruExtractor(client).videosFromUrl(url)
} }
@ -292,8 +310,8 @@ class Tuktukcinema : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// preferred quality settings // preferred quality settings
private fun getPrefHostUrl(preferences: SharedPreferences): String = preferences.getString( private fun getPrefHostUrl(preferences: SharedPreferences): String = preferences.getString(
"default_domain", "default_domain_v${BuildConfig.VERSION_CODE}",
"https://w.tuktukcinema.tv/", "https://w38.tuktukcinema1.buzz/",
)!!.trim() )!!.trim()
override fun setupPreferenceScreen(screen: PreferenceScreen) { override fun setupPreferenceScreen(screen: PreferenceScreen) {
@ -337,6 +355,6 @@ class Tuktukcinema : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} }
companion object { companion object {
private val VIDBOM_REGEX = Regex("(?:v[aie]d[bp][aoe]?m|myvii?d|govad|segavid|v[aei]{1,2}dshar[er]?)\\.(?:com|net|org|xyz)(?::\\d+)?/(?:embed[/-])?([A-Za-z0-9]+).html") private val VIDBOM_REGEX = Regex("(?:v[aie]d[bp][aoe]?m|myvii?d|govad|segavid|v[aei]{1,2}dshar[er]?)\\.(?:com|net|org|xyz)(?::\\d+)?/(?:embed[/-])?([A-Za-z0-9]+).html")
private val DOOD_REGEX = Regex("(do*d(?:stream)?\\.(?:com?|watch|to|s[ho]|cx|la|w[sf]|pm|re|yt|stream))/[de]/([0-9a-zA-Z]+)") private val DOOD_REGEX = Regex("(do*d(?:stream)?\\.(?:com?|watch|to|s[ho]|cx|ds|la|w[sf]|pm|re|yt|stream))/[de]/([0-9a-zA-Z]+)")
} }
} }