From b5b096aeaecad63da609cb6710ece1a5d8416461 Mon Sep 17 00:00:00 2001
From: FooIbar <118464521+FooIbar@users.noreply.github.com>
Date: Fri, 30 Jun 2023 17:24:21 +0800
Subject: [PATCH] Add option to force e-hentai thumb server
---
app/src/main/java/com/hippo/ehviewer/Settings.kt | 1 +
.../hippo/ehviewer/client/EhCacheKeyFactory.kt | 16 ++++++++++------
.../com/hippo/ehviewer/ui/settings/EhScreen.kt | 5 +++++
app/src/main/res/values-zh-rCN/strings.xml | 2 ++
app/src/main/res/values/strings.xml | 2 ++
5 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.kt b/app/src/main/java/com/hippo/ehviewer/Settings.kt
index 6e07bdda9..49d7a6b0f 100755
--- a/app/src/main/java/com/hippo/ehviewer/Settings.kt
+++ b/app/src/main/java/com/hippo/ehviewer/Settings.kt
@@ -32,6 +32,7 @@ object Settings : DataStorePreferences(null) {
var thumbResolution by intFromStrPref("thumb_resolution", 0)
var readCacheSize by intFromStrPref("read_cache_size", 640)
var launchPage by intFromStrPref("launch_page", 0)
+ var forceEhThumb by boolPref("force_eh_thumb", false)
var showComments by boolPref("show_gallery_comments", true)
var requestNews by boolPref("request_news", false).observed { updateWhenRequestNewsChanges() }
var hideHvEvents by boolPref("hide_hv_events", false)
diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhCacheKeyFactory.kt b/app/src/main/java/com/hippo/ehviewer/client/EhCacheKeyFactory.kt
index 8fcbab9cb..37dcf5453 100644
--- a/app/src/main/java/com/hippo/ehviewer/client/EhCacheKeyFactory.kt
+++ b/app/src/main/java/com/hippo/ehviewer/client/EhCacheKeyFactory.kt
@@ -15,6 +15,7 @@
*/
package com.hippo.ehviewer.client
+import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.data.GalleryInfo
import com.hippo.ehviewer.client.data.GalleryPreview
import com.hippo.ehviewer.client.data.NormalGalleryPreview
@@ -26,21 +27,24 @@ import com.hippo.ehviewer.client.data.NormalGalleryPreview
private const val URL_PREFIX_THUMB_E = "https://ehgt.org/"
private const val URL_PREFIX_THUMB_EX = "https://s.exhentai.org/"
+private const val URL_PREFIX_LARGE_THUMB_EX = URL_PREFIX_THUMB_EX + "t/"
fun getImageKey(gid: Long, index: Int): String {
return "image:$gid:$index"
}
fun getThumbKey(url: String): String {
- return url.removePrefix(URL_PREFIX_THUMB_E).removePrefix(URL_PREFIX_THUMB_EX).removePrefix("t/")
+ return url.removePrefix(URL_PREFIX_THUMB_E).removePrefix(URL_PREFIX_LARGE_THUMB_EX).removePrefix(URL_PREFIX_THUMB_EX)
}
val GalleryPreview.url
- get() = if (this is NormalGalleryPreview) {
- if (EhUtils.isExHentai) URL_PREFIX_THUMB_EX + imageKey else URL_PREFIX_THUMB_E + imageKey
+ get() = if (exThumb) {
+ if (this is NormalGalleryPreview) URL_PREFIX_THUMB_EX else URL_PREFIX_LARGE_THUMB_EX
} else {
- if (EhUtils.isExHentai) URL_PREFIX_THUMB_EX + "t/" + imageKey else URL_PREFIX_THUMB_E + imageKey
- }
+ URL_PREFIX_THUMB_E
+ } + imageKey
val GalleryInfo.thumbUrl
- get() = if (EhUtils.isExHentai) URL_PREFIX_THUMB_EX + "t/" + thumbKey!! else URL_PREFIX_THUMB_E + thumbKey!!
+ get() = (if (exThumb) URL_PREFIX_LARGE_THUMB_EX else URL_PREFIX_THUMB_E) + thumbKey!!
+
+val exThumb get() = EhUtils.isExHentai && !Settings.forceEhThumb
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt
index 00ae89d56..5d7d5495e 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt
@@ -240,6 +240,11 @@ fun EhScreen() {
entryValueRes = R.array.thumb_resolution_entry_values,
value = thumbResolution,
)
+ SwitchPreference(
+ title = stringResource(id = R.string.settings_eh_force_eh_thumb),
+ summary = stringResource(id = R.string.settings_eh_force_eh_thumb_summary),
+ value = Settings::forceEhThumb,
+ )
SwitchPreference(
title = stringResource(id = R.string.settings_eh_show_gallery_pages),
summary = stringResource(id = R.string.settings_eh_show_gallery_pages_summary),
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index c0923d365..978971fb3 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -321,6 +321,8 @@
缩略图分辨率
%s,指定分辨率可能使获取缩略图失败
自动
+ 强制使用 e-hentai 缩略图服务器
+ 若 exhentai 缩略图加载失败可尝试此项
显示日文标题
需同时在 EHentai 网站设置中启用 Japanese Title
显示画廊页数
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4862f669a..ee3ff5c71 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -363,6 +363,8 @@
Thumb resolution
Currently %s. Certain resolutions might cause getting thumb failed
Auto
+ Force e-hentai thumb server
+ Try this if you have trouble loading thumbs from exhentai
Show Japanese title
Require enabling Japanese Title in Settings on EHentai website
Show gallery pages