diff --git a/Readme.md b/Readme.md index 3a60a8c..8e0219b 100644 --- a/Readme.md +++ b/Readme.md @@ -54,6 +54,8 @@ You'll notice that the photo was organized into an *Unknown Location* folder. Th You can view these instructions on the command line by typing `./elodie.py import --help`, `./elodie.py update --help` or `./elodie.py generate-db --help`. +### Import photos + ``` Usage: elodie.py import [OPTIONS] [PATHS]... @@ -72,6 +74,8 @@ Options: --help Show this message and exit. ``` +### Update photos + ``` Usage: elodie.py update [OPTIONS] FILES... @@ -88,6 +92,8 @@ Options: --help Show this message and exit. ``` +### (Re)Generate checksum database + ``` Usage: elodie.py generate-db [OPTIONS] @@ -99,6 +105,12 @@ Options: --help Show this message and exit. ``` +### Verify library against bit rot / data rot + +``` +Usage: elodie.py verify +``` + Now you're ready to learn more about Elodie.

@@ -223,7 +235,7 @@ I use the [Open Street Maps Nominatim reverse geocoding API](http://wiki.openstr * To have `Sunnyvale`, use `location=%city` * To have `Sunnyvale-CA`, use `location=%city-%state -Sometimes a location may not have all of the values available. If your format is `%city-%state` and `city` was not returned then the folder name will be `%state`. Take not that I'll strip out extra characters so you don't end up with folders name `-%state` when `city` is not found. +Sometimes a location may not have all of the values available. If your format is `%city-%state` and `city` was not returned then the folder name will be `%state`. Take note that I'll strip out extra characters so you don't end up with folders name `-%state` when `city` is not found. ### Reorganize by changing location and dates diff --git a/elodie.py b/elodie.py old mode 100644 new mode 100755 index 5c6c97b..58bfa2a --- a/elodie.py +++ b/elodie.py @@ -204,12 +204,21 @@ def update_time(media, file_path, time_string): @click.option('--time', help=('Update the image time. Time should be in ' 'YYYY-mm-dd hh:ii:ss or YYYY-mm-dd format.')) @click.option('--title', help='Update the image title.') -@click.argument('files', nargs=-1, type=click.Path(dir_okay=False), +@click.argument('paths', nargs=-1, required=True) -def _update(album, location, time, title, files): +def _update(album, location, time, title, paths): """Update a file's EXIF. Automatically modifies the file's location and file name accordingly. """ result = Result() + + files = set() + for path in paths: + path = os.path.expanduser(path) + if os.path.isdir(path): + files.update(FILESYSTEM.get_all_files(path, None)) + else: + files.add(path) + for current_file in files: if not os.path.exists(current_file): if constants.debug: diff --git a/elodie/tests/elodie_test.py b/elodie/tests/elodie_test.py index db2cd02..327eb33 100644 --- a/elodie/tests/elodie_test.py +++ b/elodie/tests/elodie_test.py @@ -389,6 +389,28 @@ def test_update_time_on_video(): assert metadata['date_taken'] != metadata_processed['date_taken'] assert metadata_processed['date_taken'] == helper.time_convert((2000, 1, 1, 12, 0, 0, 5, 1, 0)), metadata_processed['date_taken'] +def test_update_with_directory_passed_in(): + temporary_folder, folder = helper.create_working_folder() + temporary_folder_destination, folder_destination = helper.create_working_folder() + + origin = '%s/valid.txt' % folder + shutil.copyfile(helper.get_file('valid.txt'), origin) + + helper.reset_dbs() + runner = CliRunner() + result = runner.invoke(elodie._import, ['--destination', folder_destination, folder]) + runner2 = CliRunner() + result = runner2.invoke(elodie._update, ['--album', 'test', folder_destination]) + helper.restore_dbs() + + updated_file_path = "{}/2016-04-Apr/test/2016-04-07_11-15-26-valid-sample-title.txt".format(folder_destination) + updated_file_exists = os.path.isfile(updated_file_path) + + shutil.rmtree(folder) + shutil.rmtree(folder_destination) + + assert updated_file_exists, updated_file_path + def test_regenerate_db_invalid_source(): runner = CliRunner() result = runner.invoke(elodie._generate_db, ['--source', '/invalid/path'])