diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.java b/app/src/main/java/com/hippo/ehviewer/Settings.java index 7bda03a96..57c09ca8f 100644 --- a/app/src/main/java/com/hippo/ehviewer/Settings.java +++ b/app/src/main/java/com/hippo/ehviewer/Settings.java @@ -275,6 +275,13 @@ public class Settings { } } + public static final String KEY_THUMB_RESOLUTION = "thumb_resolution"; + private static final int DEFAULT_THUMB_RESOLUTION = 0; + + public static int getThumbResolution() { + return getIntFromStr(KEY_THUMB_RESOLUTION, DEFAULT_THUMB_RESOLUTION); + } + private static final String KEY_SHOW_JPN_TITLE = "show_jpn_title"; private static final boolean DEFAULT_SHOW_JPN_TITLE = false; diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhUtils.java b/app/src/main/java/com/hippo/ehviewer/client/EhUtils.java index e367d29f8..2d06243c3 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhUtils.java +++ b/app/src/main/java/com/hippo/ehviewer/client/EhUtils.java @@ -168,4 +168,31 @@ public class EhUtils { return title; } } + + public static String handleThumbUrlResolution(String url) { + if (null == url) { + return null; + } + + String resolution; + switch (Settings.getThumbResolution()) { + default: + case 0: // Auto + return url; + case 1: // 250 + resolution = "250"; + break; + case 2: // 300 + resolution = "300"; + break; + } + + int index1 = url.lastIndexOf('_'); + int index2 = url.lastIndexOf('.'); + if (index1 >= 0 && index2 >= 0 && index1 < index2) { + return url.substring(0, index1 + 1) + resolution + url.substring(index2); + } else { + return url; + } + } } diff --git a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryApiParser.java b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryApiParser.java index 58182f92d..cd0897233 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryApiParser.java +++ b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryApiParser.java @@ -41,7 +41,7 @@ public class GalleryApiParser { gi.title = ParserUtils.trim(g.getString("title")); gi.titleJpn = ParserUtils.trim(g.getString("title_jpn")); gi.category = EhUtils.getCategory(g.getString("category")); - gi.thumb = g.getString("thumb"); + gi.thumb = EhUtils.handleThumbUrlResolution(g.getString("thumb")); gi.uploader = g.getString("uploader"); gi.posted = ParserUtils.formatDate(ParserUtils.parseLong(g.getString("posted")) * 1000); gi.rating = Float.parseFloat(g.getString("rating")); diff --git a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryDetailParser.java b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryDetailParser.java index 74408b12a..8a9060e05 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryDetailParser.java +++ b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryDetailParser.java @@ -130,7 +130,7 @@ public class GalleryDetailParser { // Thumb url Element gd1 = gm.getElementById("gd1"); try { - gd.thumb = StringUtils.trim(gd1.child(0).attr("src")); + gd.thumb = EhUtils.handleThumbUrlResolution(StringUtils.trim(gd1.child(0).attr("src"))); } catch (Exception e) { gd.thumb = ""; } diff --git a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java index 9d104fd8c..a1e257828 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java +++ b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java @@ -121,13 +121,14 @@ public class GalleryListParser { // Thumb url Elements es = it2.children(); if (null != es && es.size() >= 1) { - gi.thumb = es.get(0).attr("src"); + gi.thumb = EhUtils.handleThumbUrlResolution(es.get(0).attr("src")); } else { String html = it2.html(); int index1 = html.indexOf('~'); int index2 = StringUtils.ordinalIndexOf(html, '~', 2); if (index1 < index2) { - gi.thumb = "http://" +StringUtils.replace(html.substring(index1 + 1, index2), "~", "/"); + gi.thumb = EhUtils.handleThumbUrlResolution( + "http://" +StringUtils.replace(html.substring(index1 + 1, index2), "~", "/")); } else { Log.w(TAG, "Can't parse gallery info thumb url"); gi.thumb = ""; diff --git a/app/src/main/java/com/hippo/ehviewer/client/parser/WhatsHotParser.java b/app/src/main/java/com/hippo/ehviewer/client/parser/WhatsHotParser.java index 2ae0b0a95..2289053d0 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/parser/WhatsHotParser.java +++ b/app/src/main/java/com/hippo/ehviewer/client/parser/WhatsHotParser.java @@ -16,6 +16,7 @@ package com.hippo.ehviewer.client.parser; +import com.hippo.ehviewer.client.EhUtils; import com.hippo.ehviewer.client.data.GalleryInfo; import com.hippo.ehviewer.client.exception.ParseException; import com.hippo.util.JsoupUtils; @@ -47,7 +48,7 @@ public class WhatsHotParser { galleryInfo.gid = result.gid; galleryInfo.token = result.token; temp = JsoupUtils.getElementByTag(temp, "img"); - galleryInfo.thumb = temp.attr("src"); + galleryInfo.thumb = EhUtils.handleThumbUrlResolution(temp.attr("src")); galleryInfo.title = temp.attr("title"); galleryInfo.generateSLang(); galleryInfoList.add(galleryInfo); diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 27795b15a..bb3413dac 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -365,6 +365,9 @@ 大 中 小 + 缩略图分辨率 + %s,指定分辨率可能使获取缩略图失败 + 自动 主页分类显示 默认在主页所显示的分类 排除标签组 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 7cd875be6..feae0d320 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -365,6 +365,9 @@ 大 中 小 + 縮略圖分辨率 + %s,指定分辨率可能使獲取縮略圖失敗 + 自動 主頁分類顯示 默認在主頁所顯示的分類 排除標籤組 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index f8571ebd4..658835c4d 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -365,6 +365,9 @@ 大 中 小 + 縮圖解析度 + %s,指定解析度可能使獲取縮圖失敗 + 自動 主頁分類顯示 預設在主頁所顯示的分類 排除標籤組 diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index d3a33ab91..cdbf28c5d 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -43,6 +43,18 @@ @string/settings_eh_thumb_size_small + + @string/settings_eh_thumb_resolution_auto + 250x + 300x + + + + 0 + 1 + 2 + + 0 1 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 49b1c1e34..bd2059ac8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -407,6 +407,9 @@ Large Middle Small + Thumb resolution + %s, special resolutions might cause getting thumb failed + Auto Categories on Homepage The categories shown as default on Homepage Excluded languages diff --git a/app/src/main/res/xml/eh_settings.xml b/app/src/main/res/xml/eh_settings.xml index 311ec35ca..a5fd2c4ac 100644 --- a/app/src/main/res/xml/eh_settings.xml +++ b/app/src/main/res/xml/eh_settings.xml @@ -48,6 +48,14 @@ app:entryValues="@array/thumb_size_entry_values" android:defaultValue="1"/> + +