1
0
mirror of https://github.com/fumiama/copymanga.git synced 2026-06-07 16:20:24 +08:00
修复
1. 一些闪退
This commit is contained in:
源文雨
2025-06-05 23:55:18 +09:00
parent bf1f0c9395
commit 501b688f54
6 changed files with 104 additions and 18 deletions

View File

@@ -12,7 +12,7 @@ android {
minSdkVersion 23
//noinspection OldTargetApi
targetSdkVersion 34
versionCode 75
versionCode 76
versionName '2.5.4'
resourceConfigurations += ['zh', 'zh-rCN']

View File

@@ -42,7 +42,7 @@ object Config {
field = LazyHeaders.Builder()
.addHeader("referer", referer)
.addHeader("User-Agent", pc_ua)
.addHeader("source", "copyApp")
.addHeader("source", net_source.value)
.addHeader("webp", "1")
.addHeader("version", app_ver.value)
.addHeader(
@@ -81,12 +81,19 @@ object Config {
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_platform = PreferenceBoolean("settings_cat_net_sw_platform", false)
val net_referer = PreferenceBoolean("settings_cat_net_sw_referer", false)
val net_version = PreferenceBoolean("settings_cat_net_sw_version", false)
val net_region = PreferenceBoolean("settings_cat_net_sw_region", false)
val net_no_webp = PreferenceBoolean("settings_cat_net_no_webp", 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)
val net_use_api_proxy = PreferenceBoolean("settings_cat_net_sw_use_api_proxy", false)
val net_img_resolution = PreferenceString(R.string.imgResolutionKeyID)
val net_umstring = PreferenceString("settings_cat_net_et_umstring")
val net_source = PreferenceString("settings_cat_net_et_source", R.string.source)
val net_ua = PreferenceString("settings_cat_net_et_ua", "__default_ua__")
val view_manga_inverse_chapters = PreferenceBoolean("settings_cat_vm_sw_inverse_chapters", false)
val view_manga_always_dark_bg = PreferenceBoolean("settings_cat_vm_sw_always_dark_bg", false)

View File

@@ -106,12 +106,19 @@ class Api {
}?: DownloadTools.requestApiWithBody(u, method, body, contentType)).decodeToString()
r = Gson().fromJson(ret, ReturnBase::class.java)
if (r!!.code != 200) {
mu.write { mHostApiUrls.remove(api) }
mu.write {
if (mHostApiUrls.size <= 1) return@write
mHostApiUrls.remove(api)
}
} else {
return ret
}
} catch (e: Exception) {
mu.write { mHostApiUrls.remove(api) }
e.printStackTrace()
mu.write {
if (mHostApiUrls.size <= 1) return@write
mHostApiUrls.remove(api)
}
}
}
throw IllegalStateException("错误码${r!!.code}, 信息: ${r!!.message}")

View File

@@ -30,20 +30,23 @@ object DownloadTools {
connection.connectTimeout = timeout
connection.readTimeout = timeout
connection.apply {
setRequestProperty("user-agent", Config.pc_ua)
setRequestProperty("source", "copyApp")
Config.net_ua.value.let {
if (it.isEmpty()) return@let
setRequestProperty("user-agent", if (it == "__default_ua__") Config.pc_ua else it)
}
Config.net_source.value.let { if(it.isNotEmpty()) setRequestProperty("source", it) }
// deviceinfo
setRequestProperty("webp", "1")
if (!Config.net_no_webp.value) setRequestProperty("webp", "1")
setRequestProperty("dt", SimpleDateFormat("yyyy.MM.dd", Locale.getDefault()).format(Calendar.getInstance().time))
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)
if (Config.net_platform.value) setRequestProperty("platform", Config.platform.value)
if (Config.net_referer.value) setRequestProperty("referer", Config.referer)
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")
if (Config.net_version.value) setRequestProperty("version", Config.app_ver.value)
if (Config.net_region.value) setRequestProperty("region", if(!Config.net_use_foreign.value) "1" else "0")
// device
// host
Config.net_umstring.value.let { if (it.isNotEmpty()) setRequestProperty("umstring", it) }
@@ -59,20 +62,23 @@ object DownloadTools {
capsule.url = url
capsule.method = method
capsule.headers = hashMapOf()
capsule.headers["user-agent"] = Config.pc_ua
capsule.headers["source"] = "copyApp"
Config.net_ua.value.let {
if (it.isEmpty()) return@let
capsule.headers["user-agent"] = if (it == "__default_ua__") Config.pc_ua else it
}
Config.net_source.value.let { if(it.isNotEmpty()) capsule.headers["source"] = it }
// deviceinfo
capsule.headers["webp"] = "1"
if (!Config.net_no_webp.value) capsule.headers["webp"] = "1"
capsule.headers["dt"] = SimpleDateFormat("yyyy.MM.dd", Locale.getDefault()).format(Calendar.getInstance().time)
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
if (Config.net_platform.value) capsule.headers["platform"] = Config.platform.value
if (Config.net_referer.value) capsule.headers["referer"] = Config.referer
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"
if (Config.net_version.value) capsule.headers["version"] = Config.app_ver.value
if (Config.net_region.value) capsule.headers["region"] = if(!Config.net_use_foreign.value) "1" else "0"
// device
// host
Config.net_umstring.value.let { if (it.isNotEmpty()) capsule.headers["umstring"] = it }

View File

@@ -4,9 +4,11 @@
<!ENTITY appver "2.3.0">
<!ENTITY proxyurl "copymanga.azurewebsites.net">
<!ENTITY platform "3">
<!ENTITY source "copyApp">
]>
<resources>
<string name="app_name">拷贝漫画</string>
<string name="source">&source;</string>
<string name="action_settings">设定</string>
<string name="action_info">关于</string>
@@ -177,12 +179,26 @@
<string name="settings_cat_net_sm_use_gzip">告知服务器优先返回GZip格式数据</string>
<string name="settings_cat_net_sw_use_json">请求JSON</string>
<string name="settings_cat_net_sm_use_json">显式告知服务器返回JSON格式数据</string>
<string name="settings_cat_net_sw_platform">请求平台</string>
<string name="settings_cat_net_sm_platform">向服务器报告平台版本号</string>
<string name="settings_cat_net_sw_referer">请求来源</string>
<string name="settings_cat_net_sm_referer">向服务器报告请求来源</string>
<string name="settings_cat_net_sw_version">请求版本号</string>
<string name="settings_cat_net_sm_version">向服务器报告请求版本号</string>
<string name="settings_cat_net_sw_region">请求区域</string>
<string name="settings_cat_net_sm_region">向服务器报告请求区域</string>
<string name="settings_cat_net_sw_no_webp">不请求WebP</string>
<string name="settings_cat_net_sm_no_webp">不向服务器报告WebP请求</string>
<string name="settings_cat_net_et_title_api_url">请求API网址</string>
<string name="settings_cat_net_et_summary_api_url">一般无需更改,除非拷贝漫画官方更改网址,默认:&hosturl;</string>
<string name="settings_cat_net_et_title_reverse_proxy">反向代理</string>
<string name="settings_cat_net_et_summary_reverse_proxy">您可以自建反向代理并填写在此处以解决网络不畅</string>
<string name="settings_cat_net_et_title_umstring">友盟ID</string>
<string name="settings_cat_net_et_summary_umstring">填写您分配到的友盟ID</string>
<string name="settings_cat_net_et_title_source">请求源</string>
<string name="settings_cat_net_et_summary_source">默认&source;</string>
<string name="settings_cat_net_et_title_ua">请求UA</string>
<string name="settings_cat_net_et_summary_ua">自定义请求UA</string>
<string name="settings_cat_net_sw_use_api_proxy">使用API代理需要密钥</string>
<string name="settings_cat_net_sm_use_api_proxy">作者自建的API代理可缓解国内图书详情加载问题但不保证100%解决,也不保证一直可用</string>
<string name="settings_cat_net_sw_use_img_proxy">使用图床代理(需要密钥)</string>

View File

@@ -89,6 +89,36 @@
app:selectable="true"
app:summary="@string/settings_cat_net_sm_use_json"
app:title="@string/settings_cat_net_sw_use_json" />
<SwitchPreferenceCompat
app:iconSpaceReserved="false"
app:key="settings_cat_net_sw_platform"
app:selectable="true"
app:summary="@string/settings_cat_net_sm_platform"
app:title="@string/settings_cat_net_sw_platform" />
<SwitchPreferenceCompat
app:iconSpaceReserved="false"
app:key="settings_cat_net_sw_referer"
app:selectable="true"
app:summary="@string/settings_cat_net_sm_referer"
app:title="@string/settings_cat_net_sw_referer" />
<SwitchPreferenceCompat
app:iconSpaceReserved="false"
app:key="settings_cat_net_sw_version"
app:selectable="true"
app:summary="@string/settings_cat_net_sm_version"
app:title="@string/settings_cat_net_sw_version" />
<SwitchPreferenceCompat
app:iconSpaceReserved="false"
app:key="settings_cat_net_sw_region"
app:selectable="true"
app:summary="@string/settings_cat_net_sm_version"
app:title="@string/settings_cat_net_sw_version" />
<SwitchPreferenceCompat
app:iconSpaceReserved="false"
app:key="settings_cat_net_no_webp"
app:selectable="true"
app:summary="@string/settings_cat_net_sm_no_webp"
app:title="@string/settings_cat_net_sw_no_webp" />
<ListPreference
android:max="1500"
app:iconSpaceReserved="false"
@@ -142,6 +172,26 @@
app:enableCopying="true"
app:iconSpaceReserved="false"
app:key="settings_cat_net_et_umstring" />
<EditTextPreference
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:selectAllOnFocus="false"
android:singleLine="true"
android:title="@string/settings_cat_net_et_title_source"
android:summary="@string/settings_cat_net_et_summary_source"
app:enableCopying="true"
app:iconSpaceReserved="false"
app:key="settings_cat_net_et_source" />
<EditTextPreference
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:selectAllOnFocus="false"
android:singleLine="true"
android:title="@string/settings_cat_net_et_title_ua"
android:summary="@string/settings_cat_net_et_summary_ua"
app:enableCopying="true"
app:iconSpaceReserved="false"
app:key="settings_cat_net_et_ua" />
<SwitchPreferenceCompat
app:iconSpaceReserved="false"
app:key="@string/apiProxyKeyID"