Commit Graph

123 Commits

Author SHA1 Message Date
Cédric Leporcq da764e94e6 Change date taken behaviour and use datetime format 2021-07-18 13:44:57 +02:00
Cédric Leporcq d2ecd0ed3d use geopy lib and use Nominatum as default geocoder 2021-07-18 13:37:05 +02:00
Cédric Leporcq 42b1f4ecd4 load config as global variable 2021-06-18 06:51:30 +02:00
Jaisen Mathai ed4b58aa0d
Add support for PNG photos. #361 (#383) 2020-10-09 00:55:14 -07:00
Evan Thomas b07d26c389 Fix issue that breaks elodie if coordinate from exiftool is empty #354 (#355) 2020-01-18 09:03:40 -08:00
Arian Maleki d8cee15f32 Optimize exiftool calls by adding an ExifTool singleton in pyexiftool library (#352)
This fix results in a 10x performance improvement [1] enabling a single exiftool subprocess to elimate spawing exiftool for each image.

Closes #350 #347 

[1] https://github.com/jmathai/elodie/issues/350#issuecomment-573412006
2020-01-13 23:04:33 -08:00
Michael Wong 75e65901a9 Add --exclude-regex parameter to exclude directories on import #340 (#342)
The `--exclude-regex` parameter and `[Exclusions]` config section lets you pass in a regular expression to match against file source file paths and ignore.
2019-10-27 20:19:51 -07:00
Jaisen Mathai 3ad6c0db35
Fix issue where photos without EXIF were not using the correct date for folder or file names #330 (#331)
Fixes #330

Fixes a bug in the code where media.set_original_name() would set the mtime of a photo and then use the newly set mtime for generating the folder and file name.
2019-07-29 23:51:10 -07:00
Jaisen Mathai 87e0420fba
Make Pillow optional due to external dependencies (#326)
Fixes #325.

`Pillow` has a number of external dependencies needed for installation. Since most media files are detected correctly with `imghdr` and `Pillow` is used as a fallback we can make it optional.

`Pillow` support was added in #320 to fix #281.
2019-07-14 17:36:09 -07:00
Jaisen Mathai 50c6e3597f
Create and use a temporary folder as the application directory when running tests #323
Fixes #322
2019-07-12 21:31:53 -07:00
Jaisen Mathai 12c17c9cac Add a plugin to upload photos to Google Photos (#319)
Fixes #315.

This PR aims to address the [recent changes](https://www.blog.google/products/photos/simplifying-google-photos-and-google-drive/) in Google Photos + Google Drive where syncing between the two is no longer supported.

It works by uploading photos as part of the import process to add a copy of every photo in your library to Google Photos. Google Drive is not required for this plugin to work.

This plugin lets you have all your photos in Google Photos without relying on Google Drive. You can use another cloud storage service like iCloud or Dropbox or no cloud storage at all.

- [x] Add tests for `after()` plugin methods.
- [x] Add support for storage/async support.
- [x] Include plugins into code coverage.
- [x] Sweep code and clean up and add comments.
2019-07-12 01:44:57 -07:00
Jaisen Mathai 9e42edfa76
Create a test runner script in python to run unit tests (#321) 2019-07-11 01:51:34 -07:00
Jaisen Mathai 032e24b204 Use PIL(pillow) as a fallback mechanism image format identification and add HEIC support (#320)
Fixes #281 and #269

When elodie imports images, imghdr.what is used to determine the image
type. imghdr implementation won't support all JPEG variants. Because
of this, even for a valid JPEG file, imghdr.what returns None causing
elodie to skip the image during import.

This commit adds a fallback mechanism which uses PIL(pillow) library to
identify image formats. When imghdr fails, elodie uses pillow to
identify image format. When pillow is unavailable, it will be treated as
an invalid media file. Pillow is imported only when imghdr fails.
2019-07-10 04:05:32 -07:00
Jaisen Mathai 7c3ea1e1d7
Create an extendable plugin framework #315 #316 (#318)
This commit introduces the initial version of a plugin framework with tests and sample plugins. This helps address #315 and closes #316.
2019-07-04 02:57:10 -07:00
Andrew DeMaria 92605764f8 Add configuration to optionally capitalize file names (#313)
This commit adds a `capitalization` field under `[File]` in `config.ini` which allows file names to be capitalized.
2019-06-12 14:27:03 -07:00
Jaisen Mathai 19be12b0bb
Make MapQuest parameters configurable #258 (#308) 2019-04-01 00:56:37 -07:00
Jaisen Mathai 7fc5b5ffe0
Make application directory where data files are stored configurable #6 (#307) 2019-03-31 22:10:38 -07:00
Matt Carey 2e2c103cfb Fix issue #252 to not modify original source files on import (#272) 2019-02-04 14:20:39 -08:00
Jaisen Mathai 5b07386e2c
Add support for customizing file name via config file. #107 #110 #111 (#225) 2019-01-23 01:06:48 +05:30
Denis e5af0dfb4e Implements prefer english names setting for MapQuest API in config.ini (#290)
Implements prefer english names setting in config.ini which adds English as accepted header to MapQuest requests and results in the response location names being mostly in English not their native country language
2019-01-21 20:27:38 -08:00
Jaisen Mathai 69937ca1a3
Add support for a %custom placeholder for more complex folder names than %location or %date provide #279 (#283) 2019-01-18 16:48:32 -08:00
Jaisen Mathai 91bf181575 Include path separator and absolute path when checking if destination is a child of the source. Fixes gh-287 2018-12-03 22:32:35 -08:00
Jaisen Mathai aa12ffb13b
Fixes proper handling of location.json after failed test runs. #264 2018-02-09 00:01:10 -08:00
Jaisen Mathai 8950f756fe
Make reset_dbs() / restore_dbs() more robust #260 (#263)
* Make reset_dbs() / restore_dbs() more robust

If reset_dbs() is called and the test errors restore_dbs() is not called. On Windows this leads to an error the next time they're called because ~/hash.json-test and ~/location.json-test still exist.

* Add rename function to compatability module for 2.7 support
2017-12-06 15:46:00 -08:00
Jaisen Mathai 4cd91e9f2d
Add support for camera make and model in directory path #254 (#255) 2017-11-14 23:14:26 -08:00
Jaisen Mathai 362b1b1363
Add tests to reproduce error when source path has folder component of numbers #239 (#241) 2017-10-31 23:22:03 -07:00
Adam Candy fbc7b04ef2 Fix bug so process_file will set access time on destination instead of source. Closes #237 (#238) 2017-08-06 14:29:34 -07:00
Ove Stavnås e5e811b215 Fix bug with fallback values in full_path variables in config.ini (#234)
* Add test for gh-234

* Force flush of cached configs in test
2017-08-06 14:26:28 -07:00
Jaisen Mathai 00ba7e2604 Add tests to verify unicode checkmark in file name is handled correctly. #226 (#227) 2017-07-11 21:11:51 -07:00
Jaisen Mathai 1535db5aa4 Temporarily disable tests for send2trash until new pip package is released #230. (#231)
See hsoft/send2trash/pull/11 for details
2017-07-11 21:04:28 -07:00
Jaisen Mathai bb2b0496f7 Add --debug option for command line to override value in constants.py. #153 (#217) 2017-05-11 23:43:16 -07:00
Jaisen Mathai 9be5ab13fc Skip copying file if source is identical to destination. #210 (#211)
This prevents a zero byte file from being written
2017-04-12 23:42:44 -07:00
Jaisen Mathai e3123872c4 Add fallback folder support when configuring folder hierarchy. #199 (#209)
* add test
2017-04-12 23:33:18 -07:00
Jaisen Mathai 8082b739af Fix bug where code makes assumption of 2 levels of folders in the update command. #206 (#207) 2017-04-01 16:26:29 +05:30
Jaisen Mathai 74d8675b20 Add support for multiple levels of folders. #199 (#205)
* Use original name from EXIF instead of parsing assumed file name format. #107
* Updates to docs and code
2017-03-30 19:43:34 +05:30
Jaisen Mathai f7be8f323f Use original name from EXIF instead of parsing assumed file name format. #107 (#202) 2017-03-16 23:43:47 -07:00
Jaisen Mathai 31db4e661a Return dictionary with "Unknown Location" instead of string when location is not found #106 (#201) 2017-03-15 22:43:21 -07:00
Jaisen Mathai 15cfe61e03 Add tool to retroactively add OriginalFileName to all files in library #107 (#190) 2017-01-22 23:18:28 -08:00
Jaisen Mathai 0864f58a12 Add original file name methods to text and media class #186 (#187) 2017-01-22 00:19:44 -08:00
Jaisen Mathai 18b5c1336e Add exit codes to all public commands #157 (#184)
* Add exit codes to update and import command
* Add tests for _import and _update exit codes
2017-01-21 20:52:32 -08:00
Jaisen Mathai 2e0a59b7d8 Check if string is unicode before encoding (#180) 2017-01-08 14:43:01 -08:00
Jaisen Mathai 78880a6020 Add support for directories as argument to update command #178 (#182) 2017-01-07 21:49:00 -08:00
Jaisen Mathai a48a2edb62 Fix bug where zero value for latitude/longitude causes error gh-171 (#176) 2017-01-03 00:49:56 -08:00
Jaisen Mathai 9fd03f0729 Fix tests for reset/restore dbs function moved to helper module (#175) 2017-01-02 21:14:21 -08:00
Terence Eden cd5ba92b0b Support user defined folder structure (#5) (#160)
* Custom date directories
* Add config module to parse ini files
* Add method/tests to get a customizable folder path
* Cache path definition
* Initial working version of custom paths
* Add Directory values in sample config
* Refactoring location parsing logic and adding tests
* Remove unused functions
* Add documentation to parse_mask_for_location
* Remove commented out code
* Add tests for migrating old location db to new
2017-01-02 20:58:52 -08:00
misterpipine 328aed6dfd Fix test which checks for unicode characters in file path strings #162 (#166)
fix issue encountered when importing from a UTF-8 encoded filesystem with non-breaking spaces.
2016-12-26 08:20:12 -08:00
Jaisen Mathai 0c1aa2954e gh-121 Add test to check --trash argument (#165) 2016-12-22 21:35:15 -08:00
misterpipine 5dc31cf46f Fix encoding issue with unicode characters in file and path #162
fix issue encountered when importing from a UTF-8 encoded filesystem with non-breaking spaces.
* skip test because failure case cannot be established
2016-12-22 01:53:08 -08:00
Jaisen Mathai 64773655d2 Convert FileSystem.get_all_files to be a generator function 2016-12-19 21:59:58 -08:00
Jaisen Mathai 7c3f323c44 Closes gh-159 Remove RESULT as global variable in elodie.py 2016-12-15 01:24:04 -08:00