From b50e3a0b759ea523beb0ceb4affe48ddf68a463a Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Wed, 20 Sep 2023 06:50:01 +0000 Subject: [PATCH] =?UTF-8?q?fix(all/googledrive):=20Fix=20single=20items,?= =?UTF-8?q?=20add=20support=20for=20search,=20small=E2=80=A6=20(#2216)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … code refactor, fix video extractor (#2216) --- .../GoogleDriveExtractor.kt | 25 +- src/all/googledrive/build.gradle | 10 +- .../all/googledrive/GoogleDrive.kt | 336 +++++++++--------- .../all/googledrive/GoogleDriveDto.kt | 10 - .../googledrive/GoogleDriveMultiFormReqs.kt | 11 + 5 files changed, 198 insertions(+), 194 deletions(-) create mode 100644 src/all/googledrive/src/eu/kanade/tachiyomi/animeextension/all/googledrive/GoogleDriveMultiFormReqs.kt diff --git a/lib/googledrive-extractor/src/main/java/eu/kanade/tachiyomi/lib/googledriveextractor/GoogleDriveExtractor.kt b/lib/googledrive-extractor/src/main/java/eu/kanade/tachiyomi/lib/googledriveextractor/GoogleDriveExtractor.kt index cf00a3fed..4f70d0797 100644 --- a/lib/googledrive-extractor/src/main/java/eu/kanade/tachiyomi/lib/googledriveextractor/GoogleDriveExtractor.kt +++ b/lib/googledrive-extractor/src/main/java/eu/kanade/tachiyomi/lib/googledriveextractor/GoogleDriveExtractor.kt @@ -39,8 +39,18 @@ class GoogleDriveExtractor(private val client: OkHttpClient, private val headers add("Cookie", getCookie(itemUrl)) } - val document = client.newCall(GET(itemUrl, itemHeaders)).execute() - .use { it.asJsoup() } + val documentResp = noRedirectClient.newCall( + GET(itemUrl, itemHeaders) + ).execute() + + if (documentResp.isRedirect) { + val newUrl = documentResp.use { it.headers["location"] } + ?: return listOf(Video(itemUrl, videoName, itemUrl, itemHeaders)) + + return videoFromRedirect(newUrl, itemUrl, videoName) + } + + val document = documentResp.use { it.asJsoup() } val itemSize = document.selectFirst("span.uc-name-size") ?.let { " ${it.ownText().trim()} " } @@ -59,6 +69,15 @@ class GoogleDriveExtractor(private val client: OkHttpClient, private val headers val redirected = response.use { it.headers["location"] } ?: return listOf(Video(url, videoName + itemSize, url)) + return videoFromRedirect(redirected, url, videoName, itemSize) + } + + private fun videoFromRedirect( + redirected: String, + fallbackUrl: String, + videoName: String, + itemSize: String = "" + ): List