From 01da01c4fb6e44392a6b213c05c9493e63057c4f 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: Fri, 10 Jan 2025 01:30:14 +0900
Subject: [PATCH] =?UTF-8?q?v2.3.7=20=E6=96=B0=E5=A2=9E=201.=20hotmanga=20?=
=?UTF-8?q?=E9=83=A8=E5=88=86=E6=94=AF=E6=8C=81=EF=BC=8C=E8=AE=BF=E9=97=AE?=
=?UTF-8?q?=20https://api.2024manga.com/api/v3/system/network2=3Fformat=3D?=
=?UTF-8?q?json&platform=3D3=20=E8=8E=B7=E5=BE=97=E7=9B=B8=E5=BA=94=20API?=
=?UTF-8?q?=20(fix=20#108)=20=E4=BF=AE=E5=A4=8D=201.=20=E4=B9=A6=E6=9E=B6?=
=?UTF-8?q?=E6=97=A0=E6=B3=95=E5=BA=94=E7=94=A8=E8=87=AA=E5=AE=9A=E4=B9=89?=
=?UTF-8?q?=20API=20=E4=BC=98=E5=8C=96=201.=20=E9=9D=9E=E4=B8=80=E7=BA=A7?=
=?UTF-8?q?=E9=A1=B5=E9=9D=A2=E7=A6=81=E7=94=A8=E6=8A=BD=E5=B1=89=20(fix?=
=?UTF-8?q?=20#99)=20=E5=8D=87=E7=BA=A7=201.=20androidx.constraintlayout?=
=?UTF-8?q?=20->=202.2.0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/codeStyles/Project.xml | 1 -
.idea/dictionaries/fumiama.xml | 2 ++
app/build.gradle | 4 +--
.../top/fumiama/copymanga/MainActivity.kt | 29 ++++++++++++-------
.../copymanga/json/ComicStructure.java | 1 +
.../copymanga/json/IndexStructure.java | 7 +++++
.../copymanga/json/TypeBookListStructure.java | 13 ++-------
.../copymanga/json/TypeBookStructure.java | 8 +++++
.../java/top/fumiama/copymanga/manga/Book.kt | 1 +
.../fumiama/copymanga/manga/MangaDlTools.kt | 3 ++
.../java/top/fumiama/copymanga/manga/Shelf.kt | 7 ++---
.../general/MangaPagesFragmentTemplate.kt | 8 ++---
.../template/general/NoBackRefreshFragment.kt | 4 +--
.../fumiama/copymanga/template/ui/CardList.kt | 14 +++++----
.../top/fumiama/copymanga/tools/api/CMApi.kt | 4 +--
.../fumiama/copymanga/ui/book/BookFragment.kt | 6 ++--
.../fumiama/copymanga/ui/book/BookHandler.kt | 15 +++++-----
.../copymanga/ui/comicdl/ComicDlFragment.kt | 3 +-
.../copymanga/ui/comicdl/ComicDlHandler.kt | 17 +++++++----
.../fumiama/copymanga/ui/home/HomeHandler.kt | 25 ++++++++++++++++
.../top/fumiama/copymanga/ui/vm/VMHandler.kt | 12 ++++----
.../copymanga/ui/vm/ViewMangaActivity.kt | 2 +-
app/src/main/res/values/strings.xml | 4 ++-
23 files changed, 122 insertions(+), 68 deletions(-)
create mode 100644 app/src/main/java/top/fumiama/copymanga/json/TypeBookStructure.java
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 1ca7a5c..feb0c69 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -8,7 +8,6 @@
-
diff --git a/.idea/dictionaries/fumiama.xml b/.idea/dictionaries/fumiama.xml
index d85c6ac..8dc0886 100644
--- a/.idea/dictionaries/fumiama.xml
+++ b/.idea/dictionaries/fumiama.xml
@@ -6,6 +6,7 @@
comandy
downloaders
grps
+ hotmanga
imgs
kohima
libcomandy
@@ -14,6 +15,7 @@
mangafuna
nisi
pausable
+ reclass
reilia
diff --git a/app/build.gradle b/app/build.gradle
index 073fe97..652394e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -11,8 +11,8 @@ android {
applicationId 'top.fumiama.copymanga'
minSdkVersion 23
targetSdkVersion 34
- versionCode 64
- versionName '2.3.6'
+ versionCode 65
+ versionName '2.3.7'
resourceConfigurations += ['zh', 'zh-rCN']
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/java/top/fumiama/copymanga/MainActivity.kt b/app/src/main/java/top/fumiama/copymanga/MainActivity.kt
index 080d63a..41375ef 100644
--- a/app/src/main/java/top/fumiama/copymanga/MainActivity.kt
+++ b/app/src/main/java/top/fumiama/copymanga/MainActivity.kt
@@ -23,6 +23,7 @@ import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
+import androidx.collection.size
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.content.edit
@@ -31,6 +32,7 @@ import androidx.core.view.WindowCompat
import androidx.drawerlayout.widget.DrawerLayout
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
+import androidx.navigation.contains
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
@@ -127,20 +129,25 @@ class MainActivity : AppCompatActivity() {
ime = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
var latestDestination: Int
- navController!!.addOnDestinationChangedListener { _, destination, _ ->
+ navController!!.addOnDestinationChangedListener { controller, destination, _ ->
latestDestination = destination.id
- Log.d("MyMA", "latestDestination: $latestDestination")
+ Log.d("MyMain", "latestDestination: ${destination.label}")
if (isMenuWaiting) {
return@addOnDestinationChangedListener
}
+ if (latestDestination !in appBarConfiguration.topLevelDestinations) {
+ drawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
+ } else {
+ drawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED)
+ }
isMenuWaiting = true
- Log.d("MyMA", "start menu waiting")
+ Log.d("MyMain", "start menu waiting")
lifecycleScope.launch {
withContext(Dispatchers.IO) {
delay(1000)
withContext(Dispatchers.Main) {
isMenuWaiting = false
- Log.d("MyMA", "finish menu waiting")
+ Log.d("MyMain", "finish menu waiting")
changeMenuList(latestDestination)
}
}
@@ -270,49 +277,49 @@ class MainActivity : AppCompatActivity() {
private fun changeMenuList(latestDestination: Int) {
when (latestDestination) {
R.id.nav_home -> {
- Log.d("MyMA", "enter home")
+ Log.d("MyMain", "enter home")
menuMain?.findItem(R.id.action_info)?.isVisible = true
menuMain?.findItem(R.id.action_download)?.isVisible = false
menuMain?.findItem(R.id.action_sort)?.isVisible = false
menuMain?.findItem(R.id.action_del)?.isVisible = false
}
R.id.nav_book -> {
- Log.d("MyMA", "enter book")
+ Log.d("MyMain", "enter book")
menuMain?.findItem(R.id.action_info)?.isVisible = false
menuMain?.findItem(R.id.action_download)?.isVisible = true
menuMain?.findItem(R.id.action_sort)?.isVisible = false
menuMain?.findItem(R.id.action_del)?.isVisible = false
}
R.id.nav_group -> {
- Log.d("MyMA", "enter group")
+ Log.d("MyMain", "enter group")
menuMain?.findItem(R.id.action_info)?.isVisible = false
menuMain?.findItem(R.id.action_download)?.isVisible = false
menuMain?.findItem(R.id.action_sort)?.isVisible = true
menuMain?.findItem(R.id.action_del)?.isVisible = false
}
R.id.nav_new_download -> {
- Log.d("MyMA", "enter new_download")
+ Log.d("MyMain", "enter new_download")
menuMain?.findItem(R.id.action_info)?.isVisible = false
menuMain?.findItem(R.id.action_download)?.isVisible = false
menuMain?.findItem(R.id.action_sort)?.isVisible = true
menuMain?.findItem(R.id.action_del)?.isVisible = false
}
R.id.nav_rank -> {
- Log.d("MyMA", "enter rank")
+ Log.d("MyMain", "enter rank")
menuMain?.findItem(R.id.action_info)?.isVisible = false
menuMain?.findItem(R.id.action_download)?.isVisible = false
menuMain?.findItem(R.id.action_sort)?.isVisible = true
menuMain?.findItem(R.id.action_del)?.isVisible = false
}
R.id.nav_download -> {
- Log.d("MyMA", "enter old download")
+ Log.d("MyMain", "enter old download")
menuMain?.findItem(R.id.action_info)?.isVisible = false
menuMain?.findItem(R.id.action_download)?.isVisible = false
menuMain?.findItem(R.id.action_sort)?.isVisible = false
menuMain?.findItem(R.id.action_del)?.isVisible = true
}
else -> {
- Log.d("MyMA", "enter others")
+ Log.d("MyMain", "enter others")
menuMain?.findItem(R.id.action_info)?.isVisible = false
menuMain?.findItem(R.id.action_download)?.isVisible = false
menuMain?.findItem(R.id.action_sort)?.isVisible = false
diff --git a/app/src/main/java/top/fumiama/copymanga/json/ComicStructure.java b/app/src/main/java/top/fumiama/copymanga/json/ComicStructure.java
index db97b86..88af9c5 100644
--- a/app/src/main/java/top/fumiama/copymanga/json/ComicStructure.java
+++ b/app/src/main/java/top/fumiama/copymanga/json/ComicStructure.java
@@ -7,6 +7,7 @@ public class ComicStructure {
public int img_type;
public ValueDisplayPair region;
public ValueDisplayPair status;
+ public ValueDisplayPair reclass; // identify hotmanga
public ThemeStructure[] theme;
public String path_word;
public ThemeStructure[] author;
diff --git a/app/src/main/java/top/fumiama/copymanga/json/IndexStructure.java b/app/src/main/java/top/fumiama/copymanga/json/IndexStructure.java
index 65f820d..b27158c 100644
--- a/app/src/main/java/top/fumiama/copymanga/json/IndexStructure.java
+++ b/app/src/main/java/top/fumiama/copymanga/json/IndexStructure.java
@@ -6,12 +6,16 @@ public class IndexStructure extends ReturnBase {
public Banners[] banners;
public Topics topics;
public RecComics recComics;
+ // copymanga
public RankComics rankDayComics;
public RankComics rankWeekComics;
public RankComics rankMonthComics;
public ComicWrap[] hotComics;
public ComicWrap[] newComics;
public FinishComics finishComics;
+ // hotmanga
+ public RankComics rankWeeklyFreeComics;
+ public WeeklyComics updateWeeklyFreeComics;
public static class Banners{
public int type;
@@ -55,5 +59,8 @@ public class IndexStructure extends ReturnBase {
public String name;
public String type;
}
+ public static class WeeklyComics extends InfoBase {
+ public TypeBookStructure[] list;
+ }
}
}
diff --git a/app/src/main/java/top/fumiama/copymanga/json/TypeBookListStructure.java b/app/src/main/java/top/fumiama/copymanga/json/TypeBookListStructure.java
index be2b6af..8c11cb3 100644
--- a/app/src/main/java/top/fumiama/copymanga/json/TypeBookListStructure.java
+++ b/app/src/main/java/top/fumiama/copymanga/json/TypeBookListStructure.java
@@ -2,16 +2,7 @@ package top.fumiama.copymanga.json;
public class TypeBookListStructure extends ReturnBase {
public Results results;
- public static class Results {
- public int total;
- public TypeBook[] list;
- public int limit;
- public int offset;
- }
- public static class TypeBook {
- public int type;
- public String name;
- public String datetime_created;
- public ComicStructure comic;
+ public static class Results extends InfoBase {
+ public TypeBookStructure[] list;
}
}
\ No newline at end of file
diff --git a/app/src/main/java/top/fumiama/copymanga/json/TypeBookStructure.java b/app/src/main/java/top/fumiama/copymanga/json/TypeBookStructure.java
new file mode 100644
index 0000000..88062fb
--- /dev/null
+++ b/app/src/main/java/top/fumiama/copymanga/json/TypeBookStructure.java
@@ -0,0 +1,8 @@
+package top.fumiama.copymanga.json;
+
+public class TypeBookStructure {
+ public int type;
+ public String name;
+ public String datetime_created;
+ public ComicStructure comic;
+}
diff --git a/app/src/main/java/top/fumiama/copymanga/manga/Book.kt b/app/src/main/java/top/fumiama/copymanga/manga/Book.kt
index f7c2ff7..6fe10a1 100644
--- a/app/src/main/java/top/fumiama/copymanga/manga/Book.kt
+++ b/app/src/main/java/top/fumiama/copymanga/manga/Book.kt
@@ -52,6 +52,7 @@ class Book(val path: String, private val getString: (Int) -> String, private val
val volumes get() = mVolumes
val uuid get() = mBook?.results?.comic?.uuid
val json get() = mJsonString
+ val version get() = if (mBook?.results?.comic?.reclass != null) 1 else 2
constructor(name: String, getString: (Int) -> String, exDir: File): this(
Reader.getComicPathWordInFolder(File(exDir, name)),
diff --git a/app/src/main/java/top/fumiama/copymanga/manga/MangaDlTools.kt b/app/src/main/java/top/fumiama/copymanga/manga/MangaDlTools.kt
index a6ad384..1aece32 100644
--- a/app/src/main/java/top/fumiama/copymanga/manga/MangaDlTools.kt
+++ b/app/src/main/java/top/fumiama/copymanga/manga/MangaDlTools.kt
@@ -70,6 +70,9 @@ class MangaDlTools {
var re: Array = arrayOf()
val hm: HashMap = hashMapOf()
val chapter = chapter2Return.results.chapter
+ if (chapter.words == null) {
+ return chapter.contents.map { it.url?:"" }.toTypedArray()
+ }
if(chapter.words.size < chapter.contents.size) {
chapter.words = chapter.words.toMutableList().apply {
chapter.contents.indices.forEach {
diff --git a/app/src/main/java/top/fumiama/copymanga/manga/Shelf.kt b/app/src/main/java/top/fumiama/copymanga/manga/Shelf.kt
index 7b04b7a..b7c4024 100644
--- a/app/src/main/java/top/fumiama/copymanga/manga/Shelf.kt
+++ b/app/src/main/java/top/fumiama/copymanga/manga/Shelf.kt
@@ -9,9 +9,8 @@ import top.fumiama.copymanga.tools.api.CMApi
import top.fumiama.copymanga.tools.http.DownloadTools
import top.fumiama.dmzj.copymanga.R
-class Shelf(private val token: String, getString: (Int) -> String) {
- private val hostUrl: String = getString(R.string.hostUrl)
- private val apiUrl: String = getString(R.string.shelfOperateApiUrl).format(hostUrl)
+class Shelf(private val token: String, private val getString: (Int) -> String) {
+ private val apiUrl: String get() = getString(R.string.shelfOperateApiUrl).format(CMApi.myHostApiUrl)
private val queryApiUrlTemplate = getString(R.string.bookUserQueryApiUrl)
private val referer: String = getString(R.string.referer).format(DownloadTools.app_ver)
private val addApiUrl get() = "$apiUrl?platform=3".let { CMApi.apiProxy?.wrap(it)?:it }
@@ -63,7 +62,7 @@ class Shelf(private val token: String, getString: (Int) -> String) {
suspend fun query(pathWord: String): BookQueryStructure? = withContext(Dispatchers.IO) {
try {
Gson().fromJson(DownloadTools.getHttpContent(
- queryApiUrlTemplate.format(hostUrl, pathWord).let {
+ queryApiUrlTemplate.format(CMApi.myHostApiUrl, pathWord).let {
CMApi.apiProxy?.wrap(it)?:it
}, referer
).decodeToString(), BookQueryStructure::class.java)
diff --git a/app/src/main/java/top/fumiama/copymanga/template/general/MangaPagesFragmentTemplate.kt b/app/src/main/java/top/fumiama/copymanga/template/general/MangaPagesFragmentTemplate.kt
index 7db41b0..3d2fefb 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/general/MangaPagesFragmentTemplate.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/general/MangaPagesFragmentTemplate.kt
@@ -5,7 +5,6 @@ import android.annotation.SuppressLint
import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
-import android.os.Build
import android.os.Bundle
import android.util.Log
import android.view.View
@@ -87,15 +86,16 @@ open class MangaPagesFragmentTemplate(inflateRes:Int, private val isLazy: Boolea
//jsonReaderNow = null
}
- open suspend fun setLayouts() = withContext(Dispatchers.IO) {
+ private suspend fun setLayouts() = withContext(Dispatchers.IO) {
+ if (!isFirstInflate) return@withContext
val toolsBox = this@MangaPagesFragmentTemplate.context?.let { UITools(it) }
val widthData = toolsBox?.calcWidthFromDp(8, 135)
cardPerRow = widthData?.get(0) ?: 3
cardWidth = widthData?.get(2) ?: 128
cardHeight = (cardWidth / 0.75 + 0.5).toInt()
withContext(Dispatchers.Main) {
- mysp.footerView.lht.text = "加载"
- mysp.headerView.lht.text = "刷新"
+ mysp?.footerView?.lht?.text = "加载"
+ mysp?.headerView?.lht?.text = "刷新"
mydll?.setPadding(0, 0, 0, navBarHeight)
}
Log.d("MyMPAT", "Card per row: $cardPerRow")
diff --git a/app/src/main/java/top/fumiama/copymanga/template/general/NoBackRefreshFragment.kt b/app/src/main/java/top/fumiama/copymanga/template/general/NoBackRefreshFragment.kt
index e77c513..144d30a 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/general/NoBackRefreshFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/general/NoBackRefreshFragment.kt
@@ -40,11 +40,11 @@ open class NoBackRefreshFragment(private val layoutToLoad: Int): Fragment() {
return rootView
}
override fun onDestroy() {
- super.onDestroy()
- Thread { runBlocking { hideKanban() } }.start()
+ hideKanban()
_rootView = null
isFirstInflate = true
Log.d("MyNBRF", "destroyed")
+ super.onDestroy()
}
fun showKanban() {
if (disableAnimation) return
diff --git a/app/src/main/java/top/fumiama/copymanga/template/ui/CardList.kt b/app/src/main/java/top/fumiama/copymanga/template/ui/CardList.kt
index 3bf9dfc..a924406 100644
--- a/app/src/main/java/top/fumiama/copymanga/template/ui/CardList.kt
+++ b/app/src/main/java/top/fumiama/copymanga/template/ui/CardList.kt
@@ -52,12 +52,14 @@ class CardList(
private suspend fun inflateRow(index: Int, whenFinish: suspend (index: Int)->Unit) = withContext(Dispatchers.IO) {
Log.d("MyCL", "inflateRow: $index, cardPR: $cardPerRow")
that?.apply {
- layoutInflater.inflate(R.layout.line_horizonal_empty, mydll, false)?.let {
- if(exitCardList) return@withContext
- it.layoutParams.height = cardHeight + 16
- mydll?.apply { post { addView(it) } }
- recycleOneRow(it, index)
- whenFinish(index)
+ mydll?.let { m ->
+ layoutInflater.inflate(R.layout.line_horizonal_empty, m, false)?.let {
+ if(exitCardList) return@withContext
+ it.layoutParams.height = cardHeight + 16
+ m.apply { post { addView(it) } }
+ recycleOneRow(it, index)
+ whenFinish(index)
+ }
}
}
}
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 16c2409..60ed57f 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
@@ -72,7 +72,7 @@ object CMApi {
fun getZipFile(exDir: File?, manga: String, caption: CharSequence, name: CharSequence) =
File(exDir, "$manga/$caption/$name.zip")
- fun getChapterInfoApiUrl(arg1: String?, arg2: String?) =
+ fun getChapterInfoApiUrl(path: String?, uuid: String?, version: Int) =
MainActivity.mainWeakReference?.get()?.getString(R.string.chapterInfoApiUrl)
- ?.format(myHostApiUrl, arg1, arg2)
+ ?.format(myHostApiUrl, path, if (version >= 2) "$version" else "" , uuid)
}
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 6f5efb1..24d429b 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
@@ -7,8 +7,6 @@ import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Toast
-import androidx.core.animation.addListener
-import androidx.core.animation.doOnEnd
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import kotlinx.android.synthetic.main.app_bar_main.*
@@ -16,7 +14,6 @@ import kotlinx.android.synthetic.main.card_book.*
import kotlinx.android.synthetic.main.fragment_book.*
import kotlinx.android.synthetic.main.line_booktandb.*
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import top.fumiama.copymanga.MainActivity
@@ -79,7 +76,7 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
oa.start()
Log.d("MyBF", "set progress $it")
} } }) {
- mBookHandler?.sendEmptyMessage(BookHandler.SET_VOLUMES)
+ mBookHandler?.obtainMessage(BookHandler.SET_VOLUMES, book?.version?:2, 0)?.sendToTarget()
}
} catch (e: Exception) {
e.printStackTrace()
@@ -227,6 +224,7 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
if(book?.volumes != null && book?.json != null) {
bundle.putString("loadJson", book!!.json)
}
+ bundle.putInt("version", book?.version?:2)
findNavController().let {
Navigate.safeNavigateTo(it, R.id.action_nav_book_to_nav_group, bundle)
}
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 b9c1c86..6440870 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
@@ -64,9 +64,9 @@ class BookHandler(private val th: WeakReference): Handler(Looper.m
1 -> setCover()
2 -> setTexts()
3 -> setAuthorsAndTags()
- 6 -> if(complete) that?.navigate2dl()
- 9 -> endSetLayouts()
- 10 -> setVolumes()
+ NAVIGATE_TO_DOWNLOAD -> if(complete) that?.navigate2dl()
+ END_SET_LAYOUTS -> endSetLayouts()
+ SET_VOLUMES -> setVolumes(msg.arg1)
}
}
@@ -263,7 +263,7 @@ class BookHandler(private val th: WeakReference): Handler(Looper.m
}
}
- private suspend fun setViewManga() = withContext(Dispatchers.IO) {
+ private suspend fun setViewManga(version: Int) = withContext(Dispatchers.IO) {
if (exit) return@withContext
that?.apply {
book?.apply {
@@ -279,7 +279,8 @@ class BookHandler(private val th: WeakReference): Handler(Looper.m
v.results.list.forEach {
urlArray += CMApi.getChapterInfoApiUrl(
path,
- it.uuid
+ it.uuid,
+ version
)?:""
val f = CMApi.getZipFile(context?.getExternalFilesDir(""), comicName, keys[groupIndex], it.name)
Reader.fileArray += f
@@ -307,7 +308,7 @@ class BookHandler(private val th: WeakReference): Handler(Looper.m
}
}
- private fun setVolumes() {
+ private fun setVolumes(version: Int) {
that?.apply {
fbtab?.let { tab ->
fbvp?.let { vp ->
@@ -317,7 +318,7 @@ class BookHandler(private val th: WeakReference): Handler(Looper.m
}.attach()
}
}
- lifecycleScope.launch { setViewManga() }
+ lifecycleScope.launch { setViewManga(version) }
}
}
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlFragment.kt
index 61f8f24..0b1c425 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlFragment.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlFragment.kt
@@ -60,7 +60,8 @@ class ComicDlFragment: NoBackRefreshFragment(R.layout.fragment_dlcomic) {
withContext(Dispatchers.Main) {
handler = ComicDlHandler(Looper.myLooper()!!, WeakReference(this@ComicDlFragment),
volumes, arguments?.getString("name")?:"null",
- if(isFromFile) groupArray else arguments?.getStringArray("groupNames")
+ if(isFromFile) groupArray else arguments?.getStringArray("groupNames"),
+ arguments?.getInt("version")?:2,
)
}
if(!isFromFile) {
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlHandler.kt b/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlHandler.kt
index d5acdc3..a48181b 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlHandler.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/comicdl/ComicDlHandler.kt
@@ -42,8 +42,13 @@ import java.io.File
import java.lang.ref.WeakReference
import java.util.concurrent.atomic.AtomicInteger
-class ComicDlHandler(looper: Looper, private val th: WeakReference, private val vols: Array, private val comicName: String, private val groupNames: Array?):Handler(looper) {
- constructor(looper: Looper, th: WeakReference, comicName: String) : this(looper, th, arrayOf(), comicName, null) {
+class ComicDlHandler(
+ looper: Looper, private val th: WeakReference,
+ private val vols: Array, private val comicName: String,
+ private val groupNames: Array?, private val version: Int,
+):Handler(looper) {
+ constructor(looper: Looper, th: WeakReference, comicName: String)
+ : this(looper, th, arrayOf(), comicName, null, 2) {
isOld = true
}
private var isOld = false
@@ -123,7 +128,7 @@ class ComicDlHandler(looper: Looper, private val th: WeakReference, caption: String) = withContext(Dispatchers.IO) {
+ private suspend fun addButtons(chapters: Array, caption: String, version: Int) = withContext(Dispatchers.IO) {
chapters.forEach { chapter ->
- val u = CMApi.getChapterInfoApiUrl(chapter.comic_path_word, chapter.uuid)?:""
+ val u = CMApi.getChapterInfoApiUrl(chapter.comic_path_word, chapter.uuid, version)?:""
addButton(chapter.name, chapter.uuid, caption, u)
urlArray += u
}
@@ -437,7 +442,7 @@ class ComicDlHandler(looper: Looper, private val th: WeakReference) : AutoDownloadH
private suspend fun inflateRank(){
var comics = arrayOf()
+ if (index?.results?.rankDayComics == null) {
+ // is in hotmanga
+ index?.results?.rankWeeklyFreeComics?.list?.let {
+ for((i, book) in it.withIndex()){
+ if(i > 2) break
+ comics += book.comic
+ }
+ }
+ if(comics.size == 3) allocateLine(homeF?.getString(R.string.hot_rank_list)?:"", R.drawable.img_novel_bill, comics) {
+ homeF?.findNavController()?.navigate(R.id.nav_rank)
+ }
+ return
+ }
index?.results?.rankDayComics?.list?.let {
for((i, book) in it.withIndex()){
if(i > 2) break
@@ -173,6 +186,18 @@ class HomeHandler(private val that: WeakReference) : AutoDownloadH
}
private suspend fun inflateHot(){
+ if (index?.results?.hotComics == null) {
+ // is in hotmanga
+ index?.results?.updateWeeklyFreeComics?.let {
+ var comics = arrayOf()
+ for((i, rec) in it.list.withIndex()){
+ if(i > 5) break
+ comics += rec.comic
+ }
+ if(comics.size == 6) allocateLine(homeF?.getString(R.string.hot_list)?:"", R.drawable.img_hot, comics)
+ }
+ return
+ }
index?.results?.hotComics?.let {
var comics = arrayOf()
for((i, rec) in it.withIndex()){
diff --git a/app/src/main/java/top/fumiama/copymanga/ui/vm/VMHandler.kt b/app/src/main/java/top/fumiama/copymanga/ui/vm/VMHandler.kt
index 05d79c2..c9b1e89 100644
--- a/app/src/main/java/top/fumiama/copymanga/ui/vm/VMHandler.kt
+++ b/app/src/main/java/top/fumiama/copymanga/ui/vm/VMHandler.kt
@@ -134,11 +134,13 @@ class VMHandler(activity: ViewMangaActivity, private val chapterUrl: String, pri
override fun setGsonItem(gsonObj: Any): Boolean {
super.setGsonItem(gsonObj)
val m = gsonObj as Chapter2Return
- if(m.results.chapter.words.size != m.results.chapter.contents.size) {
- return false
- }
- if(m.results.chapter.words.size != m.results.chapter.size) {
- m.results.chapter.size = m.results.chapter.words.size // 有时 size 不对
+ if (m.results.chapter.words != null) {
+ if(m.results.chapter.words.size != m.results.chapter.contents.size) {
+ return false
+ }
+ if(m.results.chapter.words.size != m.results.chapter.size) {
+ m.results.chapter.size = m.results.chapter.words.size // 有时 size 不对
+ }
}
manga = m
return true
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 a099361..366fb45 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
@@ -401,7 +401,7 @@ class ViewMangaActivity : TitleActivityTemplate() {
//private fun getTempFile(position: Int) = File(cacheDir, "$position")
private fun getImgUrl(position: Int) = mHandler.manga?.results?.chapter?.let {
- it.contents[it.words.indexOf(position)].url
+ it.contents[it.words?.indexOf(position)?:position].url
}
private fun getImgUrlArray() = mHandler.manga?.results?.chapter?.let{
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c7828a1..9e150cd 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -62,6 +62,7 @@
预载图片头失败
读取图片大小失败
+ https://%1$s/api/v3/system/network2?platform=3
https://%1$s/api/v3/h5/homeIndex?platform=3
https://%1$s
&hosturl;
@@ -72,7 +73,7 @@
https://%1$s/api/v3/comic2/%2$s?platform=3
https://%1$s/api/v3/comic2/%2$s/query?platform=3
https://%1$s/api/v3/comic/%2$s/group/%3$s/chapters?limit=100&offset=%4$d&platform=3
- https://%1$s/api/v3/comic/%2$s/chapter2/%3$s?platform=3
+ https://%1$s/api/v3/comic/%2$s/chapter%3$s/%4$s?platform=3
https://%1$s/api/v3/topic/%2$s?platform=3
https://%1$s/api/v3/topic/%2$s/contents?type=%3$d&limit=21&offset=%4$d&platform=3
https://%1$s/api/v3/recs?pos=3200102&limit=21&offset=%2$d&platform=3
@@ -128,6 +129,7 @@
专题系列
漫画推荐
排行榜 ☟日周月 ☛冠亚季
+ 本周排行
热门更新
全新上架