def _save_and_rename(self, old_filename, metadata): """Save the metadata.""" # Check that file has not been removed since thread was queued # Also don't save if we are stopping. if self.state == File.REMOVED: log.debug("File not saved because it was removed: %r", self.filename) return None if self.tagger.stopping: log.debug("File not saved because %s is stopping: %r", PICARD_APP_NAME, self.filename) return None new_filename = old_filename if not config.setting["dont_write_tags"]: save = partial(self._save, old_filename, metadata) if config.setting["preserve_timestamps"]: try: self._preserve_times(old_filename, save) except self.PreserveTimesStatError as why: log.warning(why) # we didn't save the file yet, bail out return None except self.FilePreserveTimesUtimeError as why: log.warning(why) else: save() # Rename files if config.setting["rename_files"] or config.setting["move_files"]: new_filename = self._rename(old_filename, metadata) # Move extra files (images, playlists, etc.) if config.setting["move_files"] and config.setting[ "move_additional_files"]: self._move_additional_files(old_filename, new_filename) # Delete empty directories if config.setting["delete_empty_dirs"]: dirname = os.path.dirname(old_filename) try: emptydir.rm_empty_dir(dirname) head, tail = os.path.split(dirname) if not tail: head, tail = os.path.split(head) while head and tail: emptydir.rm_empty_dir(head) head, tail = os.path.split(head) except OSError as why: log.warning("Error removing directory: %s", why) except emptydir.SkipRemoveDir as why: log.debug("Not removing empty directory: %s", why) # Save cover art images if config.setting["save_images_to_files"]: self._save_images(os.path.dirname(new_filename), metadata) return new_filename
def test_rm_empty_dir_only_junk_files(self): dir = _create_temp_dir(extra_files=emptydir.JUNK_FILES) self.assertTrue(os.path.isdir(dir)) emptydir.rm_empty_dir(dir) self.assertFalse(os.path.exists(dir))
def test_rm_empty_dir_really_empty(self): dir = _create_temp_dir() self.assertTrue(os.path.isdir(dir)) emptydir.rm_empty_dir(dir) self.assertFalse(os.path.exists(dir))
def test_rm_empty_dir_only_junk_files(self): tempdir = self.create_temp_dir(extra_files=emptydir.JUNK_FILES, ignore_errors=True) self.assertTrue(os.path.isdir(tempdir)) emptydir.rm_empty_dir(tempdir) self.assertFalse(os.path.exists(tempdir))
def test_rm_empty_dir_really_empty(self): tempdir = self.create_temp_dir(ignore_errors=True) self.assertTrue(os.path.isdir(tempdir)) emptydir.rm_empty_dir(tempdir) self.assertFalse(os.path.exists(tempdir))