From 7ef70aa16e4adc824390f08ff863645af9518819 Mon Sep 17 00:00:00 2001
From: FooIbar <118464521+FooIbar@users.noreply.github.com>
Date: Sun, 11 Feb 2024 20:36:30 +0800
Subject: [PATCH] Generate ComicInfo.xml on archive download
---
app/src/main/kotlin/com/hippo/ehviewer/Settings.kt | 1 +
app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt | 5 +++++
.../com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt | 6 ++++++
.../kotlin/com/hippo/ehviewer/ui/settings/DownloadScreen.kt | 5 +++++
app/src/main/res/values-zh-rCN/strings.xml | 2 ++
app/src/main/res/values/strings.xml | 2 ++
6 files changed, 21 insertions(+)
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt b/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt
index 826ba9e7e..10d9f5657 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt
@@ -149,6 +149,7 @@ object Settings : DataStorePreferences(null) {
var harmonizeCategoryColor by boolPref("harmonize_category_color", true)
var preloadThumbAggressively by boolPref("preload_thumb_aggressively", false)
var downloadOriginImage by boolPref("download_origin_image", false)
+ var archiveMetadata by boolPref("archive_metadata", true)
var enableCronet by boolPref("enable_cronet", true)
var recentFavCat by intPref("recent_fav_cat", FavListUrlBuilder.FAV_CAT_LOCAL)
var defaultFavSlot by intPref("default_favorite_slot", -2)
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt b/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt
index baa6cbbeb..1823b2fa4 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt
@@ -260,6 +260,11 @@ class SpiderDen(val info: GalleryInfo) {
downloadDir = getGalleryDownloadDir(gid)?.takeIf { it.isDirectory }
}
+ suspend fun initDownloadDir() {
+ downloadDir = getGalleryDownloadDir(gid) ?: (downloadLocation / info.putToDownloadDir())
+ check(downloadDir!!.ensureDir())
+ }
+
suspend fun writeComicInfo(fetchMetadata: Boolean = true) {
downloadDir?.run {
createFile(COMIC_INFO_FILE)?.also {
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt
index 8eceba7db..b7fb17de4 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt
@@ -366,6 +366,12 @@ fun GalleryDetailScreen(args: GalleryDetailScreenArgs, navigator: DestinationsNa
r.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
downloadManager.enqueue(r)
}
+ if (Settings.archiveMetadata) {
+ SpiderDen(galleryDetail).apply {
+ initDownloadDir()
+ writeComicInfo()
+ }
+ }
}
activity.showTip(R.string.download_archive_started)
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/DownloadScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/DownloadScreen.kt
index d2cd91cfc..c0d3ba54e 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/DownloadScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/DownloadScreen.kt
@@ -145,6 +145,11 @@ fun DownloadScreen(navigator: DestinationsNavigator) {
summary = stringResource(id = R.string.settings_download_download_origin_image_summary),
value = Settings::downloadOriginImage,
)
+ SwitchPreference(
+ title = stringResource(id = R.string.settings_download_archive_metadata),
+ summary = stringResource(id = R.string.settings_download_archive_metadata_summary),
+ value = Settings::archiveMetadata,
+ )
WorkPreference(
title = stringResource(id = R.string.settings_download_restore_download_items),
summary = stringResource(id = R.string.settings_download_restore_download_items_summary),
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 4c89a9e48..41d3a34b5 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -332,6 +332,8 @@
向后预载 %s 张图片
下载原图
警告!可能需要 GP
+ 压缩包元数据
+ 下载压缩包时生成 ComicInfo.xml
允许媒体扫描
请避免他人翻看你的图库应用
大多数图库应用将不会显示下载目录中的图片
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 486449f7a..0cef456bc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -379,6 +379,8 @@
Preload next %s image
Download original image
Caution! May require GP
+ Archive metadata
+ Generate ComicInfo.xml on archive download
Restore download items
Restore all download items in download location
Not found download items to restore