Skip to content

Commit 09f80e8

Browse files
author
RiskyN
committed
minor update
1 parent de76693 commit 09f80e8

4 files changed

Lines changed: 490 additions & 168 deletions

File tree

PikaHD/src/main/kotlin/com/pikahd/Extractors.kt

Lines changed: 48 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,18 @@ open class GDFlix : ExtractorApi() {
6060
subtitleCallback: (SubtitleFile) -> Unit,
6161
callback: (ExtractorLink) -> Unit
6262
) {
63+
val parts = referer?.split("|")
64+
val httpReferer = parts?.getOrNull(0)?.takeIf { it.startsWith("http", ignoreCase = true) }
65+
val displayName = parts?.getOrNull(1) ?: referer?.takeIf { !it.startsWith("http", ignoreCase = true) } ?: ""
6366

64-
val newUrl = try { app.get(url).document.selectFirst("meta[http-equiv=refresh]")?.attr("content")
67+
val newUrl = try { app.get(url, referer = httpReferer).document.selectFirst("meta[http-equiv=refresh]")?.attr("content")
6568
?.substringAfter("url=")
6669
} catch (e: Exception) {
6770
Log.e("GDFlix", "Redirect error: ${e.localizedMessage}")
6871
return
6972
} ?: url
7073

71-
val document = app.get(newUrl).document
74+
val document = app.get(newUrl, referer = httpReferer).document
7275

7376
val fileName = document.select("ul > li.list-group-item:contains(Name)")
7477
.text()
@@ -77,11 +80,11 @@ open class GDFlix : ExtractorApi() {
7780
val fileSize = document.select("ul > li.list-group-item:contains(Size)")
7881
.text()
7982
.substringAfter("Size : ")
83+
.substringBefore("|")
84+
.trim()
8085

8186
val quality = getIndexQuality(fileName)
82-
val sourcename = referer
83-
?.takeIf { it.isNotEmpty() && !it.startsWith("http", ignoreCase = true) }
84-
?: ""
87+
val sourcename = displayName
8588

8689
document.select("div.text-center a").amap { anchor ->
8790
val text = anchor.text()
@@ -96,7 +99,6 @@ open class GDFlix : ExtractorApi() {
9699
link
97100
) {
98101
this.quality = quality
99-
this.referer = newUrl
100102
}
101103
)
102104
}
@@ -112,7 +114,6 @@ open class GDFlix : ExtractorApi() {
112114
instantLink
113115
) {
114116
this.quality = quality
115-
this.referer = newUrl
116117
}
117118
)
118119
}
@@ -142,7 +143,6 @@ open class GDFlix : ExtractorApi() {
142143
finalURL
143144
) {
144145
this.quality = quality
145-
this.referer = baseUrlLink
146146
}
147147
)
148148
}
@@ -170,7 +170,6 @@ open class GDFlix : ExtractorApi() {
170170
sourceurl
171171
) {
172172
this.quality = quality
173-
this.referer = newUrl
174173
}
175174
)
176175
}
@@ -204,6 +203,10 @@ open class HubCloud : ExtractorApi() {
204203
callback: (ExtractorLink) -> Unit
205204
) {
206205
val tag = "HubCloud"
206+
val parts = referer?.split("|")
207+
val httpReferer = parts?.getOrNull(0)?.takeIf { it.startsWith("http", ignoreCase = true) }
208+
val displayName = parts?.getOrNull(1) ?: referer?.takeIf { !it.startsWith("http", ignoreCase = true) } ?: ""
209+
207210
val uri = runCatching { URI(url) }.getOrElse {
208211
Log.e(tag, "Invalid URL: ${it.message}")
209212
return
@@ -216,7 +219,7 @@ open class HubCloud : ExtractorApi() {
216219
if ("hubcloud.php" in realUrl) {
217220
realUrl
218221
} else {
219-
val raw = app.get(realUrl).document
222+
val raw = app.get(realUrl, referer = httpReferer).document
220223
.selectFirst("#download")
221224
?.attr("href")
222225
.orEmpty()
@@ -231,7 +234,7 @@ open class HubCloud : ExtractorApi() {
231234

232235
if (href.isBlank()) return
233236

234-
val document = app.get(href).document
237+
val document = app.get(href, referer = realUrl).document
235238
val size = document.selectFirst("i#size")?.text().orEmpty()
236239
val header = document.selectFirst("div.card-header")?.text().orEmpty()
237240

@@ -260,7 +263,6 @@ open class HubCloud : ExtractorApi() {
260263
link
261264
) {
262265
this.quality = quality
263-
this.referer = href
264266
}
265267
)
266268
}
@@ -273,7 +275,6 @@ open class HubCloud : ExtractorApi() {
273275
link
274276
) {
275277
this.quality = quality
276-
this.referer = href
277278
}
278279
)
279280
}
@@ -286,7 +287,6 @@ open class HubCloud : ExtractorApi() {
286287
link
287288
) {
288289
this.quality = quality
289-
this.referer = href
290290
}
291291
)
292292
}
@@ -304,7 +304,6 @@ open class HubCloud : ExtractorApi() {
304304
dlink
305305
) {
306306
this.quality = quality
307-
this.referer = link
308307
}
309308
)
310309
} else {
@@ -325,7 +324,6 @@ open class HubCloud : ExtractorApi() {
325324
finalUrl
326325
) {
327326
this.quality = quality
328-
this.referer = href
329327
}
330328
)
331329
}
@@ -338,7 +336,6 @@ open class HubCloud : ExtractorApi() {
338336
link
339337
) {
340338
this.quality = quality
341-
this.referer = href
342339
}
343340
)
344341
}
@@ -351,7 +348,6 @@ open class HubCloud : ExtractorApi() {
351348
link
352349
) {
353350
this.quality = quality
354-
this.referer = href
355351
}
356352
)
357353
}
@@ -364,7 +360,6 @@ open class HubCloud : ExtractorApi() {
364360
link
365361
) {
366362
this.quality = quality
367-
this.referer = href
368363
}
369364
)
370365
}
@@ -386,3 +381,37 @@ open class HubCloud : ExtractorApi() {
386381
return extractCleanTitle(title)
387382
}
388383
}
384+
385+
open class Hubdrive : ExtractorApi() {
386+
override val name = "Hubdrive"
387+
override val mainUrl = "https://hubdrive.space"
388+
override val requiresReferer = false
389+
390+
override suspend fun getUrl(
391+
url: String,
392+
referer: String?,
393+
subtitleCallback: (SubtitleFile) -> Unit,
394+
callback: (ExtractorLink) -> Unit
395+
) {
396+
val parts = referer?.split("|")
397+
val httpReferer = parts?.getOrNull(0)?.takeIf { it.startsWith("http", ignoreCase = true) }
398+
399+
val href = try {
400+
app.get(url, referer = httpReferer, timeout = 5000L)
401+
.document
402+
.select(".btn.btn-primary.btn-user.btn-success1.m-1")
403+
.attr("href")
404+
} catch (e: Exception) {
405+
Log.e("Hubdrive", "Failed to fetch Hubdrive link: ${e.message}")
406+
return
407+
}
408+
409+
if (href.isBlank()) return
410+
411+
if (href.contains("hubcloud", ignoreCase = true)) {
412+
HubCloud().getUrl(href, referer, subtitleCallback, callback)
413+
} else {
414+
loadExtractor(href, referer, subtitleCallback, callback)
415+
}
416+
}
417+
}

PikaHD/src/main/kotlin/com/pikahd/PikaHDPlugin.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ class PikaHDPlugin : Plugin() {
1010
registerMainAPI(PikaHDProvider())
1111
registerExtractorAPI(GDFlix())
1212
registerExtractorAPI(HubCloud())
13+
registerExtractorAPI(Hubdrive())
1314
}
1415
}

0 commit comments

Comments
 (0)