1
0
mirror of https://github.com/fumiama/copymanga.git synced 2026-06-29 23:30:41 +08:00
This commit is contained in:
源文雨
2022-12-08 17:53:23 +08:00
parent 5d87acc7e7
commit 3213822786
7 changed files with 52 additions and 36 deletions

View File

@@ -9,8 +9,8 @@ android {
applicationId 'top.fumiama.copymanga' applicationId 'top.fumiama.copymanga'
minSdkVersion 23 minSdkVersion 23
targetSdkVersion 33 targetSdkVersion 33
versionCode 26 versionCode 27
versionName '2.0.beta14' versionName '2.0.beta15'
resConfigs 'zh', 'zh-rCN' resConfigs 'zh', 'zh-rCN'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

View File

@@ -41,13 +41,15 @@ open class AutoDownloadHandler(private val url: String, private val jsonClass: C
timeThread?.start() timeThread?.start()
} }
private fun dlThread() { private fun dlThread() {
DownloadTools.getHttpContent(url, DownloadTools.getHttpContent(url, null, mainWeakReference?.get()?.getString(R.string.pc_ua)!!)?.let {
mainWeakReference?.get()?.getString(R.string.referUrl)!!,
mainWeakReference?.get()?.getString(R.string.pc_ua)!!
)?.let {
if(exit) return if(exit) return
val fi = it.inputStream() val fi = it.inputStream()
val pass = setGsonItem(Gson().fromJson(fi.reader(), jsonClass)) var pass = true
try {
pass = setGsonItem(Gson().fromJson(fi.reader(), jsonClass))
} catch (e: Exception) {
e.printStackTrace()
}
fi.close() fi.close()
if(!pass) { if(!pass) {
dlThread() dlThread()

View File

@@ -1,26 +1,31 @@
package top.fumiama.copymanga.tools.api package top.fumiama.copymanga.tools.api
import android.content.Context
import android.util.Base64 import android.util.Base64
import androidx.preference.PreferenceManager
import com.bumptech.glide.load.model.LazyHeaders import com.bumptech.glide.load.model.LazyHeaders
import top.fumiama.dmzj.copymanga.R import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.MainActivity import top.fumiama.copymanga.MainActivity
import top.fumiama.copymanga.tools.http.DownloadTools import top.fumiama.copymanga.tools.http.DownloadTools
import top.fumiama.copymanga.ui.settings.SettingsFragment.Companion.settingsPref
import java.io.File import java.io.File
import java.net.URLEncoder import java.net.URLEncoder
object CMApi { object CMApi {
var myGlideHeaders: LazyHeaders? = null var myGlideHeaders: LazyHeaders? = null
get() { get() {
MainActivity.mainWeakReference?.get()?.let {
PreferenceManager.getDefaultSharedPreferences(it).apply {
if(field === null) if(field === null)
field = LazyHeaders.Builder() field = LazyHeaders.Builder()
.addHeader("referer", MainActivity.mainWeakReference?.get()?.getString(R.string.referUrl)!!) .addHeader("referer", MainActivity.mainWeakReference?.get()?.getString(R.string.referUrl)!!)
.addHeader("User-Agent", MainActivity.mainWeakReference?.get()?.getString(R.string.pc_ua)!!) .addHeader("User-Agent", MainActivity.mainWeakReference?.get()?.getString(R.string.pc_ua)!!)
.addHeader("source", "copyApp") .addHeader("source", "copyApp")
.addHeader("webp", "1") .addHeader("webp", "1")
.addHeader("region", if(settingsPref?.getBoolean("", false) == false) "1" else "0") .addHeader("region", if(!getBoolean("settings_cat_net", false)) "1" else "0")
.addHeader("platform", "3") .addHeader("platform", "3")
.build() .build()
}
}
return field return field
} }
fun getZipFile(exDir: File?, manga: String, caption: CharSequence, name: CharSequence) = File(exDir, "$manga/$caption/$name.zip") fun getZipFile(exDir: File?, manga: String, caption: CharSequence, name: CharSequence) = File(exDir, "$manga/$caption/$name.zip")
@@ -28,13 +33,17 @@ object CMApi {
fun getApiUrl(id: Int, arg1: String?, arg2: String?, arg3: Int? = 0) = MainActivity.mainWeakReference?.get()?.getString(id)?.let { String.format(it, arg1, arg2, arg3) } fun getApiUrl(id: Int, arg1: String?, arg2: String?, arg3: Int? = 0) = MainActivity.mainWeakReference?.get()?.getString(id)?.let { String.format(it, arg1, arg2, arg3) }
fun getLoginConnection(username: String, pwd: String, salt: Int) = MainActivity.mainWeakReference?.get()?.getString(R.string.loginApiUrl)?.let { fun getLoginConnection(username: String, pwd: String, salt: Int) = MainActivity.mainWeakReference?.get()?.getString(R.string.loginApiUrl)?.let {
DownloadTools.getConnection(it, "POST")?.apply { DownloadTools.getConnection(it, "POST")?.apply {
MainActivity.mainWeakReference?.get()?.let {
PreferenceManager.getDefaultSharedPreferences(it).apply {
doOutput = true doOutput = true
setRequestProperty("content-type", "application/x-www-form-urlencoded;charset=utf-8") setRequestProperty("content-type", "application/x-www-form-urlencoded;charset=utf-8")
setRequestProperty("platform", "3") setRequestProperty("platform", "3")
setRequestProperty("accept", "application/json") setRequestProperty("accept", "application/json")
val r = if(settingsPref?.getBoolean("", false) == false) "1" else "0" val r = if(!getBoolean("settings_cat_net_sw_use_foreign", false)) "1" else "0"
val pwdb64 = Base64.encode("$pwd-$salt".toByteArray(), Base64.DEFAULT).decodeToString() val pwdb64 = Base64.encode("$pwd-$salt".toByteArray(), Base64.DEFAULT).decodeToString()
outputStream.write("username=${URLEncoder.encode(username)}&password=$pwdb64&salt=$salt&platform=3&authorization=Token+&version=1.4.4&source=copyApp&region=$r&webp=1".toByteArray()) outputStream.write("username=${URLEncoder.encode(username)}&password=$pwdb64&salt=$salt&platform=3&authorization=Token+&version=1.4.4&source=copyApp&region=$r&webp=1".toByteArray())
} }
} }
} }
}
}

View File

@@ -2,11 +2,10 @@ package top.fumiama.copymanga.tools.http
import android.content.Context import android.content.Context
import android.util.Log import android.util.Log
import androidx.preference.PreferenceManager
import top.fumiama.copymanga.MainActivity import top.fumiama.copymanga.MainActivity
import top.fumiama.copymanga.tools.ssl.AllTrustManager import top.fumiama.copymanga.tools.ssl.AllTrustManager
import top.fumiama.copymanga.tools.ssl.IgnoreHostNameVerifier import top.fumiama.copymanga.tools.ssl.IgnoreHostNameVerifier
import top.fumiama.copymanga.ui.settings.SettingsFragment.Companion.settingsPref
import top.fumiama.dmzj.copymanga.R
import java.net.HttpURLConnection import java.net.HttpURLConnection
import java.net.URL import java.net.URL
import java.net.URLEncoder import java.net.URLEncoder
@@ -40,11 +39,18 @@ object DownloadTools {
refer?.let { setRequestProperty("referer", it) } refer?.let { setRequestProperty("referer", it) }
setRequestProperty("source", "copyApp") setRequestProperty("source", "copyApp")
setRequestProperty("webp", "1") setRequestProperty("webp", "1")
setRequestProperty("region", if(settingsPref?.getBoolean("", false) == false) "1" else "0") MainActivity.mainWeakReference?.get()?.let {
MainActivity.mainWeakReference?.get()?.getPreferences(Context.MODE_PRIVATE)?.getString("token", "")?.let { PreferenceManager.getDefaultSharedPreferences(it).apply {
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", "1.4.4"))
getString("token", "")?.let {
if(it != "") setRequestProperty("authorization", "Token $it") if(it != "") setRequestProperty("authorization", "Token $it")
else setRequestProperty("authorization", "Token") else setRequestProperty("authorization", "Token")
} }
}
}
setRequestProperty("host", url.substringAfter("://").substringBefore("/")) setRequestProperty("host", url.substringAfter("://").substringBefore("/"))
setRequestProperty("platform", "3") setRequestProperty("platform", "3")
} }

View File

@@ -9,10 +9,5 @@ import top.fumiama.dmzj.copymanga.R
class SettingsFragment: PreferenceFragmentCompat() { class SettingsFragment: PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.pref_setting, rootKey) setPreferencesFromResource(R.xml.pref_setting, rootKey)
if(settingsPref == null) settingsPref = context?.let { PreferenceManager.getDefaultSharedPreferences(it) }
}
companion object {
var settingsPref: SharedPreferences? = SettingsFragment().context?.let {PreferenceManager.getDefaultSharedPreferences(it)}
} }
} }

View File

@@ -3,6 +3,7 @@ package top.fumiama.copymanga.ui.vm
import android.animation.ObjectAnimator import android.animation.ObjectAnimator
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Service import android.app.Service
import android.content.Context
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
import android.media.AudioManager import android.media.AudioManager
@@ -13,6 +14,7 @@ import android.view.*
import android.widget.SeekBar import android.widget.SeekBar
import android.widget.Toast import android.widget.Toast
import androidx.core.content.edit import androidx.core.content.edit
import androidx.preference.PreferenceManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
@@ -29,6 +31,7 @@ import kotlinx.android.synthetic.main.widget_infodrawer.*
import kotlinx.android.synthetic.main.widget_titlebar.* import kotlinx.android.synthetic.main.widget_titlebar.*
import kotlinx.android.synthetic.main.widget_titlebar.view.* import kotlinx.android.synthetic.main.widget_titlebar.view.*
import kotlinx.android.synthetic.main.widget_viewmangainfo.* import kotlinx.android.synthetic.main.widget_viewmangainfo.*
import top.fumiama.copymanga.MainActivity
import top.fumiama.dmzj.copymanga.R import top.fumiama.dmzj.copymanga.R
import top.fumiama.copymanga.template.general.TitleActivityTemplate import top.fumiama.copymanga.template.general.TitleActivityTemplate
import top.fumiama.copymanga.template.http.AutoDownloadThread import top.fumiama.copymanga.template.http.AutoDownloadThread
@@ -41,7 +44,6 @@ import java.io.ByteArrayOutputStream
import java.io.File import java.io.File
import java.io.InputStream import java.io.InputStream
import java.lang.ref.WeakReference import java.lang.ref.WeakReference
import top.fumiama.copymanga.ui.settings.SettingsFragment.Companion.settingsPref
import java.util.concurrent.FutureTask import java.util.concurrent.FutureTask
import java.util.zip.ZipFile import java.util.zip.ZipFile
@@ -89,6 +91,7 @@ class ViewMangaActivity : TitleActivityTemplate() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
setContentView(R.layout.activity_viewmanga) setContentView(R.layout.activity_viewmanga)
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val settingsPref = MainActivity.mainWeakReference?.get()?.let { PreferenceManager.getDefaultSharedPreferences(it) }
va = WeakReference(this) va = WeakReference(this)
//dlZip2View = intent.getStringExtra("callFrom") == "Dl" || p["dlZip2View"] == "true" //dlZip2View = intent.getStringExtra("callFrom") == "Dl" || p["dlZip2View"] == "true"
//zipFirst = intent.getStringExtra("callFrom") == "zipFirst" //zipFirst = intent.getStringExtra("callFrom") == "zipFirst"

View File

@@ -61,6 +61,7 @@
<string name="TRANSPORT_NULL">无网络</string> <string name="TRANSPORT_NULL">无网络</string>
<string name="pc_ua">Dart/2.16 (dart:io)</string> <string name="pc_ua">Dart/2.16 (dart:io)</string>
<string name="app_ver">1.4.4</string>
<string name="menu_update_time">更新时间</string> <string name="menu_update_time">更新时间</string>
<string name="menu_hot">热度</string> <string name="menu_hot">热度</string>