mirror of
https://github.com/fumiama/copymanga.git
synced 2026-06-29 23:30:41 +08:00
1.4.3
修复 1. 漫画缺页 2. 漫画下载
This commit is contained in:
1
.idea/misc.xml
generated
1
.idea/misc.xml
generated
@@ -6,6 +6,7 @@
|
|||||||
<entry key="../../.gradle/caches/transforms-3/530137dbe1613faf299d06bd64f02665/transformed/jetified-search-2.4.1/res/layout/search_view.xml" value="0.46557971014492755" />
|
<entry key="../../.gradle/caches/transforms-3/530137dbe1613faf299d06bd64f02665/transformed/jetified-search-2.4.1/res/layout/search_view.xml" value="0.46557971014492755" />
|
||||||
<entry key="app/src/main/res/drawable-anydpi/ic_like.xml" value="0.5572916666666666" />
|
<entry key="app/src/main/res/drawable-anydpi/ic_like.xml" value="0.5572916666666666" />
|
||||||
<entry key="app/src/main/res/drawable-anydpi/ic_setting_search.xml" value="0.5572916666666666" />
|
<entry key="app/src/main/res/drawable-anydpi/ic_setting_search.xml" value="0.5572916666666666" />
|
||||||
|
<entry key="app/src/main/res/layout/activity_dl.xml" value="0.5025484199796126" />
|
||||||
<entry key="app/src/main/res/layout/activity_dlist.xml" value="0.48641304347826086" />
|
<entry key="app/src/main/res/layout/activity_dlist.xml" value="0.48641304347826086" />
|
||||||
<entry key="app/src/main/res/layout/activity_login.xml" value="0.49592391304347827" />
|
<entry key="app/src/main/res/layout/activity_login.xml" value="0.49592391304347827" />
|
||||||
<entry key="app/src/main/res/layout/activity_main.xml" value="0.5095108695652174" />
|
<entry key="app/src/main/res/layout/activity_main.xml" value="0.5095108695652174" />
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ import top.fumiama.copymanga.tool.MangaDlTools.Companion.wmdlt
|
|||||||
import top.fumiama.copymanga.tool.ToolsBox
|
import top.fumiama.copymanga.tool.ToolsBox
|
||||||
import top.fumiama.copymanga.view.ChapterToggleButton
|
import top.fumiama.copymanga.view.ChapterToggleButton
|
||||||
import top.fumiama.copymanga.view.LazyScrollView
|
import top.fumiama.copymanga.view.LazyScrollView
|
||||||
|
import top.fumiama.copymanga.web.JSHidden
|
||||||
|
import top.fumiama.copymanga.web.WebChromeClient
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.lang.Thread.sleep
|
import java.lang.Thread.sleep
|
||||||
import java.lang.ref.WeakReference
|
import java.lang.ref.WeakReference
|
||||||
@@ -57,6 +59,10 @@ class DlActivity : Activity() {
|
|||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
mh?.saveUrlsOnly = true
|
mh?.saveUrlsOnly = true
|
||||||
mangaDlTools = MangaDlTools(this)
|
mangaDlTools = MangaDlTools(this)
|
||||||
|
dwh.settings.userAgentString = getString(R.string.pc_ua)
|
||||||
|
dwh.webChromeClient = WebChromeClient()
|
||||||
|
dwh.setWebViewClient("h.js")
|
||||||
|
dwh.loadJSInterface(JSHidden())
|
||||||
handler.sendEmptyMessage(-2) //setLayouts
|
handler.sendEmptyMessage(-2) //setLayouts
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,9 +139,11 @@ class DlActivity : Activity() {
|
|||||||
haveDlStarted = true
|
haveDlStarted = true
|
||||||
canDl = true
|
canDl = true
|
||||||
handler.sendEmptyMessage(9) //set dl card color to red
|
handler.sendEmptyMessage(9) //set dl card color to red
|
||||||
Toast.makeText(this, "十秒后开始下载...", Toast.LENGTH_SHORT).show()
|
Toast.makeText(this, "请耐心等待加载...", Toast.LENGTH_SHORT).show()
|
||||||
|
Thread {
|
||||||
fillChapters()
|
fillChapters()
|
||||||
Thread { dlThread { downloadChapterPages(it) } }.start()
|
dlThread { downloadChapterPages(it) }
|
||||||
|
}.start()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import top.fumiama.copymanga.web.WebChromeClient
|
|||||||
import java.lang.ref.WeakReference
|
import java.lang.ref.WeakReference
|
||||||
|
|
||||||
class MainActivity: Activity() {
|
class MainActivity: Activity() {
|
||||||
var wh: JSWebView? = null
|
|
||||||
var uploadMessageAboveL: ValueCallback<Array<Uri>>? = null
|
var uploadMessageAboveL: ValueCallback<Array<Uri>>? = null
|
||||||
private var toolsBox: ToolsBox? = null
|
private var toolsBox: ToolsBox? = null
|
||||||
@SuppressLint("JavascriptInterface")
|
@SuppressLint("JavascriptInterface")
|
||||||
@@ -44,10 +43,10 @@ class MainActivity: Activity() {
|
|||||||
w.loadJSInterface(JS())
|
w.loadJSInterface(JS())
|
||||||
w.loadUrl(getString(R.string.web_home))
|
w.loadUrl(getString(R.string.web_home))
|
||||||
|
|
||||||
wh = JSWebView(this, getString(R.string.pc_ua))
|
wh.settings.userAgentString = getString(R.string.pc_ua)
|
||||||
wh?.webChromeClient = WebChromeClient()
|
wh.webChromeClient = WebChromeClient()
|
||||||
wh?.setWebViewClient("h.js")
|
wh.setWebViewClient("h.js")
|
||||||
wh?.loadJSInterface(JSHidden())
|
wh.loadJSInterface(JSHidden())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetDraggable().with(this).onto(fab)
|
SetDraggable().with(this).onto(fab)
|
||||||
|
|||||||
@@ -2,12 +2,11 @@ package top.fumiama.copymanga.tool
|
|||||||
|
|
||||||
import top.fumiama.copymanga.R
|
import top.fumiama.copymanga.R
|
||||||
import top.fumiama.copymanga.activity.DlActivity
|
import top.fumiama.copymanga.activity.DlActivity
|
||||||
import top.fumiama.copymanga.data.ComicStructure
|
import kotlinx.android.synthetic.main.activity_dl.*
|
||||||
import top.fumiama.copymanga.view.JSWebView
|
|
||||||
import top.fumiama.copymanga.web.JSHidden
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.lang.Thread.sleep
|
import java.lang.Thread.sleep
|
||||||
import java.lang.ref.WeakReference
|
import java.lang.ref.WeakReference
|
||||||
|
import java.util.concurrent.Semaphore
|
||||||
import java.util.zip.CRC32
|
import java.util.zip.CRC32
|
||||||
import java.util.zip.CheckedOutputStream
|
import java.util.zip.CheckedOutputStream
|
||||||
import java.util.zip.ZipEntry
|
import java.util.zip.ZipEntry
|
||||||
@@ -15,18 +14,12 @@ import java.util.zip.ZipOutputStream
|
|||||||
|
|
||||||
class MangaDlTools(activity: DlActivity) {
|
class MangaDlTools(activity: DlActivity) {
|
||||||
var exit = false
|
var exit = false
|
||||||
|
private val sem = Semaphore(1)
|
||||||
private val da = WeakReference(activity)
|
private val da = WeakReference(activity)
|
||||||
private val d = da.get()
|
private val d = da.get()
|
||||||
private val p = PropertiesTools(File("${d?.filesDir}/chapters.hash"))
|
private val p = PropertiesTools(File("${d?.filesDir}/chapters.hash"))
|
||||||
private var imgUrlsList: Array<Array<String>?>? = null
|
private var imgUrlsList: Array<Array<String>?>? = null
|
||||||
private var chaptersCount = 0
|
private var chaptersCount = 0
|
||||||
private val newWebViewHidden: JSWebView?
|
|
||||||
get() {
|
|
||||||
val re = d?.let { JSWebView(it, it.getString(R.string.pc_ua)) }
|
|
||||||
re?.setWebViewClient("h.js")
|
|
||||||
re?.loadJSInterface(JSHidden())
|
|
||||||
return re
|
|
||||||
}
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
wmdlt = WeakReference(this)
|
wmdlt = WeakReference(this)
|
||||||
@@ -42,12 +35,16 @@ class MangaDlTools(activity: DlActivity) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun dlChapterUrl(url: String){
|
fun dlChapterUrl(url: String){
|
||||||
|
sem.acquire()
|
||||||
|
da.get()?.apply {
|
||||||
p[url.substringAfterLast("/")] = (chaptersCount++).toString()
|
p[url.substringAfterLast("/")] = (chaptersCount++).toString()
|
||||||
newWebViewHidden?.loadUrl(url)
|
runOnUiThread { dwh.loadUrl(url) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setChapterImgs(hash: String, imgUrls: Array<String>){
|
fun setChapterImgs(hash: String, imgUrls: Array<String>){
|
||||||
imgUrlsList?.set(p[hash].toInt(), imgUrls)
|
imgUrlsList?.set(p[hash].toInt(), imgUrls)
|
||||||
|
sem.release()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun dlChapterAndPackIntoZip(zipf: File, hash: String){
|
fun dlChapterAndPackIntoZip(zipf: File, hash: String){
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import android.webkit.*
|
|||||||
import android.webkit.WebViewClient
|
import android.webkit.WebViewClient
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import top.fumiama.copymanga.R
|
import top.fumiama.copymanga.R
|
||||||
|
import top.fumiama.copymanga.activity.MainActivity.Companion.mh
|
||||||
|
import top.fumiama.copymanga.activity.MainActivity.Companion.wm
|
||||||
|
|
||||||
class WebViewClient(private val context: Context, jsFileName: String):WebViewClient() {
|
class WebViewClient(private val context: Context, jsFileName: String):WebViewClient() {
|
||||||
private val js = context.assets.open(jsFileName).readBytes().decodeToString()
|
private val js = context.assets.open(jsFileName).readBytes().decodeToString()
|
||||||
@@ -23,10 +25,15 @@ class WebViewClient(private val context: Context, jsFileName: String):WebViewCli
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onPageFinished(view: WebView?, url: String?) {
|
override fun onPageFinished(view: WebView?, url: String?) {
|
||||||
|
Thread {
|
||||||
|
Thread.sleep(500)
|
||||||
|
wm?.get()?.runOnUiThread {
|
||||||
view?.loadUrl(js)
|
view?.loadUrl(js)
|
||||||
Log.d("MyWC", "Inject JS into: $url")
|
Log.d("MyWC", "Inject JS into: $url")
|
||||||
super.onPageFinished(view, url)
|
super.onPageFinished(view, url)
|
||||||
}
|
}
|
||||||
|
}.start()
|
||||||
|
}
|
||||||
|
|
||||||
override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
|
override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
|
||||||
handler?.proceed() // ignore ssl errors
|
handler?.proceed() // ignore ssl errors
|
||||||
|
|||||||
@@ -5,6 +5,16 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="#FCFCFF">
|
android:background="#FCFCFF">
|
||||||
|
|
||||||
|
<top.fumiama.copymanga.view.JSWebView
|
||||||
|
android:id="@+id/dwh"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:clickable="false"
|
||||||
|
android:focusable="false"
|
||||||
|
android:focusableInTouchMode="false"
|
||||||
|
android:longClickable="false"
|
||||||
|
android:touchscreenBlocksFocus="false" />
|
||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/dtitle"
|
android:id="@+id/dtitle"
|
||||||
layout="@layout/widget_titlebar"
|
layout="@layout/widget_titlebar"
|
||||||
|
|||||||
@@ -5,6 +5,11 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<top.fumiama.copymanga.view.JSWebView
|
||||||
|
android:id="@+id/wh"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
<top.fumiama.copymanga.view.JSWebView
|
<top.fumiama.copymanga.view.JSWebView
|
||||||
android:id="@+id/w"
|
android:id="@+id/w"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|||||||
Reference in New Issue
Block a user