From bf1f0c939512db35816161949772d899d0debb0f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?=
<41315874+fumiama@users.noreply.github.com>
Date: Thu, 5 Jun 2025 21:53:30 +0900
Subject: [PATCH] =?UTF-8?q?v2.5.4=20=E4=BF=AE=E5=A4=8D=201.=20=E4=B8=80?=
=?UTF-8?q?=E4=BA=9B=E9=97=AA=E9=80=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 4 ++--
.../main/java/top/fumiama/copymanga/api/Config.kt | 2 ++
.../java/top/fumiama/copymanga/api/network/Api.kt | 11 +++++++----
.../java/top/fumiama/copymanga/net/DownloadTools.kt | 8 ++++----
app/src/main/res/values/strings.xml | 4 ++++
app/src/main/res/xml/pref_setting.xml | 12 ++++++++++++
6 files changed, 31 insertions(+), 10 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 876db0b..ee835cd 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,8 @@ android {
minSdkVersion 23
//noinspection OldTargetApi
targetSdkVersion 34
- versionCode 74
- versionName '2.5.3'
+ versionCode 75
+ versionName '2.5.4'
resourceConfigurations += ['zh', 'zh-rCN']
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/java/top/fumiama/copymanga/api/Config.kt b/app/src/main/java/top/fumiama/copymanga/api/Config.kt
index 3fc03be..8737e85 100644
--- a/app/src/main/java/top/fumiama/copymanga/api/Config.kt
+++ b/app/src/main/java/top/fumiama/copymanga/api/Config.kt
@@ -79,6 +79,8 @@ object Config {
val manga_dl_max_batch = PreferenceInt("settings_cat_md_sb_max_batch", 16)
val manga_dl_show_0m_manga = PreferenceBoolean("settings_cat_md_sw_show_0m_manga", false)
+ val net_use_gzip = PreferenceBoolean("settings_cat_net_sw_use_gzip", false)
+ val net_use_json = PreferenceBoolean("settings_cat_net_sw_use_json", false)
val net_use_comandy = PreferenceBoolean("settings_cat_net_sw_use_comandy", false)
val net_use_foreign = PreferenceBoolean("settings_cat_net_sw_use_foreign", false)
private val net_use_img_proxy = PreferenceBoolean("settings_cat_net_sw_use_img_proxy", false)
diff --git a/app/src/main/java/top/fumiama/copymanga/api/network/Api.kt b/app/src/main/java/top/fumiama/copymanga/api/network/Api.kt
index bb9b04e..1fdf104 100644
--- a/app/src/main/java/top/fumiama/copymanga/api/network/Api.kt
+++ b/app/src/main/java/top/fumiama/copymanga/api/network/Api.kt
@@ -70,12 +70,12 @@ class Api {
throw NoSuchElementException("API列表为空")
}
var r: ReturnBase? = null
- apis.forEach { api ->
+ apis.forEachIndexed { i, api ->
val u = "https://$api$path"
- val ret = (apiProxy?.comancry(u) {
- DownloadTools.getApiContent(it)
- }?: DownloadTools.getApiContent(u)).decodeToString()
try {
+ val ret = (apiProxy?.comancry(u) {
+ DownloadTools.getApiContent(it)
+ }?: DownloadTools.getApiContent(u)).decodeToString()
r = Gson().fromJson(ret, ReturnBase::class.java)
if (r!!.code != 200) {
mu.write { mHostApiUrls.remove(api) }
@@ -84,6 +84,9 @@ class Api {
}
} catch (e: Exception) {
mu.write { mHostApiUrls.remove(api) }
+ if (i >= apis.size-1) { // throw lase exception
+ throw e
+ }
}
}
throw IllegalStateException("错误码${r?.code?:-1}, 信息: ${r?.message?:"空"}")
diff --git a/app/src/main/java/top/fumiama/copymanga/net/DownloadTools.kt b/app/src/main/java/top/fumiama/copymanga/net/DownloadTools.kt
index 07f0055..d7cbd06 100644
--- a/app/src/main/java/top/fumiama/copymanga/net/DownloadTools.kt
+++ b/app/src/main/java/top/fumiama/copymanga/net/DownloadTools.kt
@@ -35,13 +35,13 @@ object DownloadTools {
// deviceinfo
setRequestProperty("webp", "1")
setRequestProperty("dt", SimpleDateFormat("yyyy.MM.dd", Locale.getDefault()).format(Calendar.getInstance().time))
- setRequestProperty("accept-encoding", "gzip")
+ if (Config.net_use_gzip.value) setRequestProperty("accept-encoding", "gzip")
setRequestProperty("authorization", "Token${Config.token.value?.let { tk ->
if (tk.isNotEmpty()) " $tk" else ""
}}")
setRequestProperty("platform", Config.platform.value)
setRequestProperty("referer", Config.referer)
- setRequestProperty("accept", "application/json")
+ if (Config.net_use_json.value) setRequestProperty("accept", "application/json")
setRequestProperty("version", Config.app_ver.value)
setRequestProperty("region", if(!Config.net_use_foreign.value) "1" else "0")
// device
@@ -64,13 +64,13 @@ object DownloadTools {
// deviceinfo
capsule.headers["webp"] = "1"
capsule.headers["dt"] = SimpleDateFormat("yyyy.MM.dd", Locale.getDefault()).format(Calendar.getInstance().time)
- capsule.headers["accept-encoding"] = "gzip"
+ if (Config.net_use_gzip.value) capsule.headers["accept-encoding"] = "gzip"
capsule.headers["authorization"] = "Token${Config.token.value?.let { tk ->
if (tk.isNotEmpty()) " $tk" else ""
}}"
capsule.headers["platform"] = Config.platform.value
capsule.headers["referer"] = Config.referer
- capsule.headers["accept"] = "application/json"
+ if (Config.net_use_json.value) capsule.headers["accept"] = "application/json"
capsule.headers["version"] = Config.app_ver.value
capsule.headers["region"] = if(!Config.net_use_foreign.value) "1" else "0"
// device
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5d2e005..e44902c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -173,6 +173,10 @@
不管使用什么线路, API访问均是海外, 只有图片CDN可能会变化(也可能不变), 请酌情选择使用
增强型数据访问
使用经过优化的请求方法访问服务器
+ 请求GZip
+ 告知服务器优先返回GZip格式数据
+ 请求JSON
+ 显式告知服务器返回JSON格式数据
请求API网址
一般无需更改,除非拷贝漫画官方更改网址,默认:&hosturl;
反向代理
diff --git a/app/src/main/res/xml/pref_setting.xml b/app/src/main/res/xml/pref_setting.xml
index 6236b87..469a2c6 100644
--- a/app/src/main/res/xml/pref_setting.xml
+++ b/app/src/main/res/xml/pref_setting.xml
@@ -77,6 +77,18 @@
app:selectable="true"
app:summary="@string/settings_cat_net_sm_use_comandy"
app:title="@string/settings_cat_net_sw_use_comandy" />
+
+