Extractor: added Pichive & Sobreatsesuyp

This commit is contained in:
keyiflerolsun 2024-07-08 00:31:56 +03:00
parent bcc2b19b2b
commit 22645a56ff
No known key found for this signature in database
GPG key ID: 3EA857B63E695DC2

View file

@ -13,13 +13,13 @@ open class Sobreatsesuyp : ExtractorApi() {
override val requiresReferer = true override val requiresReferer = true
override suspend fun getUrl(url: String, referer: String?, subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit) { override suspend fun getUrl(url: String, referer: String?, subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit) {
val ext_ref = referer ?: "" val extRef = referer ?: ""
val video_req = app.get(url, referer=ext_ref).text val videoReq = app.get(url, referer = extRef).text
val file = Regex("""file\":\"([^\"]+)""").find(video_req)?.groupValues?.get(1) ?: throw ErrorLoadingException("File not found") val file = Regex("""file\":\"([^\"]+)""").find(videoReq)?.groupValues?.get(1) ?: throw ErrorLoadingException("File not found")
val postLink = "${mainUrl}/" + file.replace("\\", "") val postLink = "${mainUrl}/" + file.replace("\\", "")
val rawList = app.post(postLink, referer=ext_ref).parsedSafe<List<Any>>() ?: throw ErrorLoadingException("Post link not found") val rawList = app.post(postLink, referer = extRef).parsedSafe<List<Any>>() ?: throw ErrorLoadingException("Post link not found")
val postJson: List<SobreatsesuypVideoData> = rawList.drop(1).map { item -> val postJson: List<SobreatsesuypVideoData> = rawList.drop(1).map { item ->
val mapItem = item as Map<*, *> val mapItem = item as Map<*, *>
@ -30,35 +30,30 @@ open class Sobreatsesuyp : ExtractorApi() {
} }
Log.d("Kekik_${this.name}", "postJson » ${postJson}") Log.d("Kekik_${this.name}", "postJson » ${postJson}")
val vid_links = mutableSetOf<String>() val vidLinks = mutableSetOf<String>()
val vid_map = mutableListOf<Map<String, String>>() val vidPairs = mutableListOf<Pair<String, String>>()
for (item in postJson) { for (item in postJson) {
if (item.file == null || item.title == null) continue if (item.file == null || item.title == null) continue
val fileUrl = "${mainUrl}/playlist/" + item.file.substring(1) + ".txt" val fileUrl = "${mainUrl}/playlist/${item.file.substring(1)}.txt"
val videoData = app.post(fileUrl, referer=ext_ref).text val videoData = app.post(fileUrl, referer = extRef).text
if (videoData in vid_links) { continue } if (videoData in vidLinks) { continue }
vid_links.add(videoData) vidLinks.add(videoData)
vid_map.add(mapOf( vidPairs.add(Pair(item.title, videoData))
"title" to item.title,
"videoData" to videoData
))
} }
for (vidPair in vidPairs) {
for (mapEntry in vid_map) { Log.d("Kekik_${this.name}", "vidPair » ${vidPair}")
Log.d("Kekik_${this.name}", "mapEntry » ${mapEntry}") val (title, m3uLink) = vidPair
val title = mapEntry["title"] ?: continue
val m3u_link = mapEntry["videoData"] ?: continue
callback.invoke( callback.invoke(
ExtractorLink( ExtractorLink(
source = this.name, source = this.name,
name = "${this.name} - ${title}", name = "${this.name} - ${title}",
url = m3u_link, url = m3uLink,
referer = ext_ref, referer = extRef,
quality = Qualities.Unknown.value, quality = Qualities.Unknown.value,
type = INFER_TYPE type = INFER_TYPE
) )