Remove .DS_Store, desktop.ini, and Thumbs.db from otherwise empty directories (PICARD-75)

This commit is contained in:
Michael Wiencek
2012-06-01 21:02:07 -05:00
parent 0fd5bbf6ef
commit c5e6ed2017
2 changed files with 22 additions and 4 deletions

View File

@@ -14,10 +14,11 @@ Version 1.0 - 2012-06-XX
* Lookup in Browser will now not use MBIDs to lookup unmatched files/clusters
* Add Date/Country to CD Lookup results dialog (PICARD-198)
* Fix/reset album folksonomy tag counts while refreshing releases (PICARD-4)
* Plugins actions can how create sub-menus using the MENU class attribute
* Plugins actions can now create sub-menus using the MENU class attribute
* New plugin hook register_clusterlist_action
* Display the port Picard is listening on at bottom right status bar (PICARD-191)
* Make album drops from right hand pane to left default to "unmatched files" again (PICARD-33)
* Remove .DS_Store, desktop.ini, and Thumbs.db from otherwise empty directories (PICARD-75)
Version 0.16 - 2011-10-23
* Added AcoustID support.

View File

@@ -171,12 +171,21 @@ class File(LockableObject, Item):
new_filename = self._rename(old_filename, metadata, settings)
# Move extra files (images, playlists, etc.)
if settings["move_files"] and settings["move_additional_files"]:
self._move_additional_files(old_filename, new_filename,
settings)
self._move_additional_files(old_filename, new_filename, settings)
# Delete empty directories
if settings["delete_empty_dirs"]:
dirname = encode_filename(os.path.dirname(old_filename))
try:
os.removedirs(encode_filename(os.path.dirname(old_filename)))
self._rmdir(dirname)
head, tail = os.path.split(dirname)
if not tail:
head, tail = os.path.split(head)
while head and tail:
try:
self._rmdir(head)
except:
break
head, tail = os.path.split(head)
except EnvironmentError:
pass
# Save cover art images
@@ -184,6 +193,14 @@ class File(LockableObject, Item):
self._save_images(new_filename, metadata, settings)
return new_filename
@staticmethod
def _rmdir(dir):
junk_files = (".DS_Store", "desktop.ini", "Desktop.ini", "Thumbs.db")
if not set(os.listdir(dir)) - set(junk_files):
shutil.rmtree(dir, False)
else:
raise OSError
@call_next
def _saving_finished(self, next, result=None, error=None):
old_filename = new_filename = self.filename