diff --git a/app/build.gradle b/app/build.gradle
index b0d1ea3..c2b3090 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -3,19 +3,22 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
- compileSdkVersion 33
-
defaultConfig {
+ compileSdk 33
applicationId 'top.fumiama.copymanga'
minSdkVersion 23
targetSdkVersion 33
- versionCode 30
- versionName '2.0.beta18'
+ versionCode 31
+ versionName '2.0.beta19'
resConfigs 'zh', 'zh-rCN'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
+ aaptOptions {
+ cruncherEnabled = false
+ }
+
buildTypes {
release {
minifyEnabled true
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8a986b8..34f7941 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -43,7 +43,7 @@
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
+ android:theme="@style/AppTheme.NoActionBar"/>
diff --git a/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadThread.kt b/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadThread.kt
index e833816..997df23 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadThread.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadThread.kt
@@ -13,7 +13,7 @@ class AutoDownloadThread(private val url: String, private val whenFinish: (resul
var c = 0
while (!exit && re == null && c++ < 3){
re = DownloadTools.getHttpContent(url,
- mainWeakReference?.get()?.getString(R.string.referUrl)!!.format(CMApi.myHostApiUrl),
+ mainWeakReference?.get()?.getString(R.string.referer)!!,
mainWeakReference?.get()?.getString(R.string.pc_ua)!!
)
}
diff --git a/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt b/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt
index d1a4f99..25c6833 100644
--- a/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt
+++ b/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt
@@ -11,17 +11,18 @@ import java.io.File
import java.net.URLEncoder
object CMApi {
- var proxy = if(Proxy.useProxy) Proxy() else null
+ var proxy = if(Proxy.useImageProxy) Proxy(R.string.imgProxyApiUrl, R.string.imgProxyApiPrefix, R.string.imgProxyKeyID) else null
var myGlideHeaders: LazyHeaders? = null
get() {
MainActivity.mainWeakReference?.get()?.let {
PreferenceManager.getDefaultSharedPreferences(it).apply {
if(field === null)
field = LazyHeaders.Builder()
- .addHeader("referer", MainActivity.mainWeakReference?.get()?.getString(R.string.referUrl)!!)
+ .addHeader("referer", MainActivity.mainWeakReference?.get()?.getString(R.string.referer)!!)
.addHeader("User-Agent", MainActivity.mainWeakReference?.get()?.getString(R.string.pc_ua)!!)
.addHeader("source", "copyApp")
.addHeader("webp", "1")
+ .addHeader("version", MainActivity.mainWeakReference?.get()?.getString(R.string.app_ver)!!)
.addHeader("region", if(!getBoolean("settings_cat_net", false)) "1" else "0")
.addHeader("platform", "3")
.build()
diff --git a/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt b/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt
index 219708f..24dafc8 100644
--- a/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt
+++ b/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt
@@ -4,6 +4,7 @@ import android.content.Context
import android.util.Log
import androidx.preference.PreferenceManager
import top.fumiama.copymanga.MainActivity
+import top.fumiama.dmzj.copymanga.R
import java.net.HttpURLConnection
import java.net.URL
import java.util.concurrent.Callable
@@ -27,10 +28,9 @@ object DownloadTools {
setRequestProperty("region", if(!getBoolean("settings_cat_net_sw_use_foreign", false)) "1" else "0")
}
it.getPreferences(Context.MODE_PRIVATE).apply {
- setRequestProperty("version", getString("app_ver", "2.0.7"))
- getString("token", "")?.let {
- if(it != "") setRequestProperty("authorization", "Token $it")
- else setRequestProperty("authorization", "Token ")
+ setRequestProperty("version", it.getString(R.string.app_ver))
+ getString("token", "")?.let { tk ->
+ setRequestProperty("authorization", "Token $tk")
}
}
}
diff --git a/app/src/main/java/top/fumiama/copymanga/tools/http/Proxy.kt b/app/src/main/java/top/fumiama/copymanga/tools/http/Proxy.kt
index d3fa6a5..8905f6d 100644
--- a/app/src/main/java/top/fumiama/copymanga/tools/http/Proxy.kt
+++ b/app/src/main/java/top/fumiama/copymanga/tools/http/Proxy.kt
@@ -3,32 +3,44 @@ package top.fumiama.copymanga.tools.http
import android.util.Log
import androidx.preference.PreferenceManager
import top.fumiama.copymanga.MainActivity
-import top.fumiama.dmzj.copymanga.R
import java.net.URLEncoder
import java.nio.charset.Charset
-class Proxy(private val code: String) {
- constructor(): this(
+class Proxy(id: Int, apiPrefixID: Int, keyID: Int? = null) {
+ private val code = keyID?.let { k ->
MainActivity.mainWeakReference?.get()?.let {
- PreferenceManager.getDefaultSharedPreferences(it).let {sp ->
- sp.getString("settings_cat_net_et_img_proxy_code", "")
- }
- }?:""
- )
+ PreferenceManager.getDefaultSharedPreferences(it).getString(it.getString(k), null)
+ }
+ }
+ private val proxyApiUrl = MainActivity.mainWeakReference?.get()?.getString(id)
+ private val apiPrefix = MainActivity.mainWeakReference?.get()?.getString(apiPrefixID)?:""
fun wrap(u: String): String {
- return MainActivity.mainWeakReference?.get()?.getString(R.string.imgProxyApiUrl)
- ?.format(code, URLEncoder.encode(u, Charset.defaultCharset().name()))
- ?:u
+ if(!u.startsWith(apiPrefix)) return u
+ if(code != null) {
+ return proxyApiUrl?.format(code, URLEncoder.encode(u, Charset.defaultCharset().name()))?:u
+ }
+ return proxyApiUrl?.format(URLEncoder.encode(u, Charset.defaultCharset().name()))?:u
}
companion object {
- val useProxy: Boolean
+ val useImageProxy: Boolean
get() {
MainActivity.mainWeakReference?.get()?.let {
PreferenceManager.getDefaultSharedPreferences(it).apply {
val b = getBoolean("settings_cat_net_sw_use_img_proxy", false)
- Log.d("MyProxy", "use proxy: $b")
+ Log.d("MyProxy", "use image proxy: $b")
+ return b
+ }
+ }
+ return false
+ }
+ val useApiProxy: Boolean
+ get() {
+ MainActivity.mainWeakReference?.get()?.let {
+ PreferenceManager.getDefaultSharedPreferences(it).apply {
+ val b = getBoolean("settings_cat_net_sw_use_api_proxy", false)
+ Log.d("MyProxy", "use api proxy: $b")
return b
}
}
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/book/BookFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/book/BookFragment.kt
index bd68a08..773ca63 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/book/BookFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/book/BookFragment.kt
@@ -8,6 +8,7 @@ import kotlinx.android.synthetic.main.line_booktandb.*
import top.fumiama.copymanga.MainActivity.Companion.mainWeakReference
import top.fumiama.copymanga.manga.Reader
import top.fumiama.copymanga.template.general.NoBackRefreshFragment
+import top.fumiama.copymanga.ui.comicdl.ComicDlFragment
import top.fumiama.dmzj.copymanga.R
import java.lang.Thread.sleep
import java.lang.ref.WeakReference
@@ -19,6 +20,8 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ ComicDlFragment.exit = false
+
if(isFirstInflate) {
bookHandler = BookHandler(WeakReference(this), arguments?.getString("path")?:"null")
Thread{
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/book/BookHandler.kt b/app/src/main/java/top/fumiama/copymanga/ui/book/BookHandler.kt
index 823ce75..6a7f563 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/book/BookHandler.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/book/BookHandler.kt
@@ -316,6 +316,7 @@ class BookHandler(private val th: WeakReference, private val path:
ads += ad
ad.start()
offset += 100
+ sleep(1000)
}
} while (counts[i] > 0)
Thread {
@@ -325,7 +326,7 @@ class BookHandler(private val th: WeakReference, private val path:
if(ComicDlFragment.exit) return@Thread
if(re.all { it != null }) break
}
- if(re.size > 1) {
+ if(re.isNotEmpty()) {
val r = re[0]
var s = emptyArray()
re.forEach {
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/home/HomeFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/home/HomeFragment.kt
index 81f8432..de0a868 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/home/HomeFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/home/HomeFragment.kt
@@ -87,11 +87,11 @@ class HomeFragment : NoBackRefreshFragment(R.layout.fragment_home) {
val types = arrayOf("", "name", "author", "local")
var i = 0
override fun onMicClick() {
- val typenames = resources.getStringArray(R.array.search_types)
+ val typeNames = resources.getStringArray(R.array.search_types)
AlertDialog.Builder(ContextThemeWrapper(context, R.style.AlertDialogTheme))
.setTitle(R.string.set_search_types)
.setIcon(R.mipmap.ic_launcher)
- .setSingleChoiceItems(ArrayAdapter(context, R.layout.line_choice_list, typenames), i){ d, p ->
+ .setSingleChoiceItems(ArrayAdapter(context, R.layout.line_choice_list, typeNames), i){ d, p ->
adapter.type = types[p]
i = p
d.cancel()
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt b/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt
index 69698b7..7b26cbb 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt
@@ -196,6 +196,7 @@ class ViewMangaActivity : TitleActivityTemplate() {
private fun doPrepareWebImg() {
getImgUrlArray()?.apply {
if(cut) {
+ Log.d("MyVM", "is cut, load all pages...")
handler.sendEmptyMessage(7) //showDl
isCut = BooleanArray(size)
val analyzedCnt = BooleanArray(size)
@@ -217,6 +218,7 @@ class ViewMangaActivity : TitleActivityTemplate() {
if(b) indexMap += -(index+1)
}
handler.sendEmptyMessage(15) //hideDl
+ Log.d("MyVM", "load all pages finished")
}
count = size
runOnUiThread { prepareItems() }
@@ -347,7 +349,7 @@ class ViewMangaActivity : TitleActivityTemplate() {
private fun loadImgUrlInto(imgView: ScaleImageView, url: String, isLast: Int = 0, useCut: Boolean, isLeft: Boolean){
Log.d("MyVM", "Load from adt: $url")
- AutoDownloadThread(url) {
+ AutoDownloadThread(CMApi.proxy?.wrap(url)?:url) {
it?.let { loadImg(imgView, BitmapFactory.decodeByteArray(it, 0, it.size), isLast, useCut, isLeft) }
}.start()
}
diff --git a/app/src/main/res/layout/fragment_download.xml b/app/src/main/res/layout/fragment_download.xml
index 2579481..772da11 100644
--- a/app/src/main/res/layout/fragment_download.xml
+++ b/app/src/main/res/layout/fragment_download.xml
@@ -3,4 +3,4 @@
android:id="@+id/mylv"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:paddingBottom="@dimen/global_content_padding_bottom"/>
+ android:nestedScrollingEnabled="true" />
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 706af6c..957d95f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -57,6 +57,12 @@
https://%1$s/api/v3/member/browse/comics?limit=21&offset=%2$d&platform=3
https://copymanga.azurewebsites.net/api/img?code=%1$s&url=%2$s
+ https://hi77-overseas.mangafuna.xyz/
+ settings_cat_net_et_img_proxy_code
+
已完结
@@ -99,6 +105,8 @@
不管使用什么线路, API访问均是海外, 只有图片CDN可能会变化(也可能不变), 请酌情选择使用
请求API网址
一般无需更改,除非拷贝漫画官方更改网址,默认:&hosturl;
+ 使用API代理(重启生效)
+ 作者自建的API代理,可缓解国内图书详情加载问题,但不保证100%解决,也不保证一直可用
使用图床代理(重启生效)
作者自建的图床代理,可缓解国内图片无法加载问题,但不保证100%解决,也不保证一直可用
图床代理密钥(重启生效)
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 2e5f544..d6274d3 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -13,7 +13,7 @@
+ -->