diff --git a/ordigi/cli.py b/ordigi/cli.py index 8b2ee74..f720486 100755 --- a/ordigi/cli.py +++ b/ordigi/cli.py @@ -70,10 +70,18 @@ _filter_options = [ _sort_options = [ click.option( '--album-from-folder', + '-a', default=False, is_flag=True, help="Use images' folders as their album names.", ), + click.option( + '--fill-date-original', + '-O', + default=False, + is_flag=True, + help="Fill date original from date media if not set", + ), click.option( '--path-format', '-p', @@ -550,6 +558,7 @@ def _sort(**kwargs): { 'album_from_folder': kwargs['album_from_folder'], 'cache': cache, + 'fill_date_original': kwargs['fill_date_original'], 'ignore_tags': kwargs['ignore_tags'], 'use_date_filename': kwargs['use_date_filename'], 'use_file_dates': kwargs['use_file_dates'], diff --git a/ordigi/collection.py b/ordigi/collection.py index fb7308f..98bc30e 100644 --- a/ordigi/collection.py +++ b/ordigi/collection.py @@ -524,7 +524,6 @@ class SortMedias: checksum = utils.checksum(dest_path) metadata['checksum'] = checksum - if not self.dry_run: self.db.add_file_data(metadata) if imp != 'copy' and self.root in src_path.parents: self.db.sqlite.delete_filepath(str(src_path.relative_to(self.root))) diff --git a/ordigi/config.py b/ordigi/config.py index 0636d7f..1c1b468 100644 --- a/ordigi/config.py +++ b/ordigi/config.py @@ -60,6 +60,7 @@ class Config: return { 'Exif': { 'album_from_folder': False, + 'fill_date_original': False, 'cache': True, 'ignore_tags': None, 'use_date_filename': False, @@ -130,11 +131,12 @@ class Config: def get_config_option(self, section, option): bool_options = { + 'album_from_folder', + 'fill_date_original', 'cache', 'dry_run', - 'prefer_english_names', - 'album_from_folder', 'interactive', + 'prefer_english_names', 'use_date_filename', 'use_file_dates', } diff --git a/ordigi/media.py b/ordigi/media.py index 7ffa5e3..71c0f73 100644 --- a/ordigi/media.py +++ b/ordigi/media.py @@ -674,7 +674,7 @@ class Medias: # Options self.exif_opt = exif_options - self.album_from_folder = self.exif_opt['album_from_folder'] + self.ignore_tags = self.exif_opt['ignore_tags'] self.interactive = interactive self.log = LOG.getChild(self.__class__.__name__) @@ -688,8 +688,8 @@ class Medias: media = Media( file_path, src_dir, - self.album_from_folder, - self.ignore_tags, + self.exif_opt['album_from_folder'], + self.exif_opt['ignore_tags'], self.interactive, self.exif_opt['cache'], self.exif_opt['use_date_filename'], @@ -748,21 +748,25 @@ class Medias: exif = WriteExif( file_path, metadata, - ignore_tags=self.ignore_tags, + ignore_tags=self.exif_opt['ignore_tags'], ) updated = False - if self.album_from_folder: - exif.set_album_from_folder() - updated = True - if metadata['original_name'] in (False, ''): + if metadata['original_name'] in (None, ''): exif.set_value('original_name', metadata['filename']) updated = True - if self.album_from_folder: + if self.exif_opt['album_from_folder']: + exif.set_album_from_folder() album = metadata['album'] if album and album != '': exif.set_value('album', album) updated = True + if ( + self.exif_opt['fill_date_original'] + and metadata['date_original'] in (None, '') + ): + exif.set_key_values('date_original', metadata['date_media']) + updated = True if updated: return True diff --git a/tests/test_cli.py b/tests/test_cli.py index 45dc2ce..eb519ae 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -34,6 +34,7 @@ class TestOrdigi: ) cls.sort_options = ( '--album-from-folder', + '--fill-date-original', '--path-format', '--remove-duplicates', '--use-date-filename',