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