From bb678e956259216f695cc291346c023f05b6e8cb Mon Sep 17 00:00:00 2001
From: Secozzi <49240133+Secozzi@users.noreply.github.com>
Date: Tue, 9 May 2023 12:38:12 +0200
Subject: [PATCH] Update video extraction (#1591)
---
src/en/holamovies/build.gradle | 2 +-
.../holamovies/extractors/GDBotExtractor.kt | 37 +++++---
.../holamovies/extractors/GDFlixExtractor.kt | 89 +++++--------------
.../holamovies/extractors/GDTotExtractor.kt | 6 +-
4 files changed, 51 insertions(+), 83 deletions(-)
diff --git a/src/en/holamovies/build.gradle b/src/en/holamovies/build.gradle
index aab09a7f5..9c4c0c2e9 100644
--- a/src/en/holamovies/build.gradle
+++ b/src/en/holamovies/build.gradle
@@ -6,7 +6,7 @@ ext {
extName = 'HolaMovies'
pkgNameSuffix = 'en.holamovies'
extClass = '.HolaMovies'
- extVersionCode = 1
+ extVersionCode = 2
libVersion = '13'
}
diff --git a/src/en/holamovies/src/eu/kanade/tachiyomi/animeextension/en/holamovies/extractors/GDBotExtractor.kt b/src/en/holamovies/src/eu/kanade/tachiyomi/animeextension/en/holamovies/extractors/GDBotExtractor.kt
index fe6964970..f1315e76d 100644
--- a/src/en/holamovies/src/eu/kanade/tachiyomi/animeextension/en/holamovies/extractors/GDBotExtractor.kt
+++ b/src/en/holamovies/src/eu/kanade/tachiyomi/animeextension/en/holamovies/extractors/GDBotExtractor.kt
@@ -3,6 +3,10 @@ package eu.kanade.tachiyomi.animeextension.en.holamovies.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.async
+import kotlinx.coroutines.awaitAll
+import kotlinx.coroutines.runBlocking
import okhttp3.Headers
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.OkHttpClient
@@ -24,18 +28,29 @@ class GDBotExtractor(private val client: OkHttpClient, private val headers: Head
GET("$botUrl/file/$fileId", headers = docHeaders),
).execute().asJsoup()
- document.select("li.py-6 > a[href]").forEach {
- val url = it.attr("href")
- when {
- url.toHttpUrl().host.contains("gdflix") -> {
- videoList.addAll(GDFlixExtractor(client, headers).videosFromUrl(url))
- }
-// url.toHttpUrl().host.contains("gdtot") -> {
-// videoList.addAll(GDTotExtractor(client, headers).videosFromUrl(url))
-// }
- }
- }
+ videoList.addAll(
+ document.select("li.py-6 > a[href]").parallelMap { server ->
+ runCatching {
+ val url = server.attr("href")
+ when {
+ url.toHttpUrl().host.contains("gdflix") -> {
+ GDFlixExtractor(client, headers).videosFromUrl(url)
+ }
+ url.toHttpUrl().host.contains("gdtot") -> {
+ GDTotExtractor(client, headers).videosFromUrl(url)
+ }
+ else -> null
+ }
+ }.getOrNull()
+ }.filterNotNull().flatten(),
+ )
return videoList
}
+
+ // From Dopebox
+ private fun Iterable.parallelMap(f: suspend (A) -> B): List =
+ runBlocking {
+ map { async(Dispatchers.Default) { f(it) } }.awaitAll()
+ }
}
diff --git a/src/en/holamovies/src/eu/kanade/tachiyomi/animeextension/en/holamovies/extractors/GDFlixExtractor.kt b/src/en/holamovies/src/eu/kanade/tachiyomi/animeextension/en/holamovies/extractors/GDFlixExtractor.kt
index cc5c1866d..3e60c6cf0 100644
--- a/src/en/holamovies/src/eu/kanade/tachiyomi/animeextension/en/holamovies/extractors/GDFlixExtractor.kt
+++ b/src/en/holamovies/src/eu/kanade/tachiyomi/animeextension/en/holamovies/extractors/GDFlixExtractor.kt
@@ -1,10 +1,13 @@
package eu.kanade.tachiyomi.animeextension.en.holamovies.extractors
-import android.util.Base64
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.util.asJsoup
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.async
+import kotlinx.coroutines.awaitAll
+import kotlinx.coroutines.runBlocking
import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
@@ -20,78 +23,37 @@ class GDFlixExtractor(private val client: OkHttpClient, private val headers: Hea
fun videosFromUrl(serverUrl: String): List