From 0f16bece8f8ed1ddb6c3bf04f3ede42939f700ea Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Sat, 19 Sep 2026 15:09:35 +0200 Subject: [PATCH] add clear infojson preference --- .../postprocessor/compatiblerecoder.py | 0 .../settings/folder/FolderSettingsModule.kt | 55 +++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/folders_preference.xml | 5 ++ 4 files changed, 61 insertions(+) rename app/src/main/assets/yt_dlp_plugins/{compatiblerecorder => compatiblerecoder}/yt_dlp_plugins/postprocessor/compatiblerecoder.py (100%) diff --git a/app/src/main/assets/yt_dlp_plugins/compatiblerecorder/yt_dlp_plugins/postprocessor/compatiblerecoder.py b/app/src/main/assets/yt_dlp_plugins/compatiblerecoder/yt_dlp_plugins/postprocessor/compatiblerecoder.py similarity index 100% rename from app/src/main/assets/yt_dlp_plugins/compatiblerecorder/yt_dlp_plugins/postprocessor/compatiblerecoder.py rename to app/src/main/assets/yt_dlp_plugins/compatiblerecoder/yt_dlp_plugins/postprocessor/compatiblerecoder.py diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/folder/FolderSettingsModule.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/folder/FolderSettingsModule.kt index 49cd4fd6..a78a601e 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/folder/FolderSettingsModule.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/folder/FolderSettingsModule.kt @@ -345,6 +345,61 @@ object FolderSettingsModule: SettingModule { } } } + "clear_info_jsons" -> { + pref.apply { + val infoJsonSize = File(FileUtil.getInfoJsonPath(context)).walkBottomUp().fold(0L) { acc, file -> acc + file.length() } + val filesize = if (infoJsonSize < 10000) { + "0B" + }else { + FileUtil.convertFileSize(infoJsonSize) + } + + summary = "(${filesize})" + onPreferenceClickListener = + Preference.OnPreferenceClickListener { + host.hostLifecycleOwner.lifecycleScope.launch { + activeDownloadCount = withContext(Dispatchers.IO) { + downloadViewModel.getActiveDownloadsCount() + } + if (activeDownloadCount == 0){ + fun clearInfoJsonFolder(folder: File) { + if (folder.exists() && folder.isDirectory) { + folder.listFiles()?.forEach { file -> + if (file.isDirectory) { + clearInfoJsonFolder(file) + file.delete() + } else { + file.delete() + } + } + } + } + clearInfoJsonFolder(File(FileUtil.getInfoJsonPath(context))) + + if (host.hostView != null && host.hostView!!.isAttachedToWindow) { + Snackbar.make(host.hostView!!, context.getString(R.string.cache_cleared), Snackbar.LENGTH_SHORT).show() + } + }else{ + if (host.hostView != null && host.hostView!!.isAttachedToWindow) { + Snackbar.make(host.hostView!!, context.getString(R.string.downloads_running_try_later), Snackbar.LENGTH_SHORT).show() + } + } + + val infoJsonSize = File(FileUtil.getInfoJsonPath(context)).walkBottomUp().fold(0L) { acc, file -> acc + file.length() } + val filesize = if (infoJsonSize < 10000) { + "0B" + }else { + FileUtil.convertFileSize(infoJsonSize) + } + + summary = "(${filesize})" + + host.refreshUI() + } + true + } + } + } "move_cache" -> { pref.apply { onPreferenceClickListener = diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 73630ea5..659386c6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -587,6 +587,7 @@ Check clipboard on app startup Automatically detect URLs in clipboard in the home screen Check clipboard in the home screen + Clear infojsons Every hourEvery %d hours Every dayEvery %d days Every weekEvery %d weeks diff --git a/app/src/main/res/xml/folders_preference.xml b/app/src/main/res/xml/folders_preference.xml index 1fbe1e1c..3e3d3dee 100644 --- a/app/src/main/res/xml/folders_preference.xml +++ b/app/src/main/res/xml/folders_preference.xml @@ -118,6 +118,11 @@ android:summary="@string/clear_temporary_files_summary" app:title="@string/clear_temporary_files" /> + +