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 hour
- Every %d hours
- Every day
- Every %d days
- Every week
- Every %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" />
+
+