From 77cd459c51f2490ecdce314af850c7b6912070c6 Mon Sep 17 00:00:00 2001 From: NerdNumber9 Date: Thu, 9 Mar 2017 18:18:53 -0500 Subject: [PATCH] Retry button now uses a different H@H server. --- .../tachiyomi/source/online/all/EHentai.kt | 21 +++++++++++++------ .../tachiyomi/ui/reader/ReaderPresenter.kt | 6 ++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt index e1a8e75df..d332e9b03 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt @@ -245,18 +245,27 @@ class EHentai(override val id: Long, override fun pageListParse(response: Response) = throw UnsupportedOperationException("Unused method was called somehow!") - override fun imageUrlParse(response: Response): String { + override fun fetchImageUrl(page: Page): Observable { + return client.newCall(imageUrlRequest(page)) + .asObservableSuccess() + .map { realImageUrlParse(it, page) } + } + + fun realImageUrlParse(response: Response, page: Page): String { with(response.asJsoup()) { - val currentImage = select("img[onerror]").attr("src") - //TODO This doesn't work currently. Find a better way to do this + val currentImage = getElementById("img").attr("src") //Each press of the retry button will choose another server -// select("#loadfail").attr("onclick").nullIfBlank()?.let { -// page.url = addParam(page.url, "nl", it.substring(it.indexOf('\'') + 1 .. it.lastIndexOf('\'') - 1)) -// } + select("#loadfail").attr("onclick").nullIfBlank()?.let { + page.url = addParam(page.url, "nl", it.substring(it.indexOf('\'') + 1 .. it.lastIndexOf('\'') - 1)) + } return currentImage } } + override fun imageUrlParse(response: Response): String { + throw UnsupportedOperationException("Unused method was called somehow!") + } + val cookiesHeader by lazy { val cookies: MutableMap = mutableMapOf() if(prefs.enableExhentai().getOrDefault()) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt index 56bcdc934..c8861cf55 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt @@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.online.HttpSource +import eu.kanade.tachiyomi.source.online.all.EHentai import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.util.DiskUtil import eu.kanade.tachiyomi.util.RetryWithDelay @@ -354,6 +355,11 @@ class ReaderPresenter : BasePresenter() { if (uri != null && !page.chapter.isDownloaded) { chapterCache.removeFileFromCache(uri.encodedPath.substringAfterLast('/')) } + + //If we are using EHentai/ExHentai, get a new image URL + if(source is EHentai) + page.imageUrl = null + loader.retryPage(page) } }