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