Commit Graph

475 Commits

Author SHA1 Message Date
Cédric Leporcq 71f0ecaba1 Add RhetTbull python exiftool wrapper 2021-08-13 19:45:49 +02:00
Cédric Leporcq 144e8f428c Change license to GPLv3.0 2021-08-13 19:45:49 +02:00
Cédric Leporcq 58927d0e4d move elodie tests to old_tests 2021-08-13 19:45:49 +02:00
Cédric Leporcq b2b6a9c170 Move elodie code base to dozo and various fix 2021-08-13 19:45:49 +02:00
Cédric Leporcq 9f6eb52ebc Change file paths definitions and parsing 2021-07-31 22:08:26 +02:00
Cédric Leporcq b4a8cc88cb Add compare command 2021-07-31 22:08:26 +02:00
Cédric Leporcq 1de9e963aa Add --max-deep option 2021-07-31 22:08:26 +02:00
Cédric Leporcq 562ac26345 Add --keep-folders option 2021-07-31 22:08:26 +02:00
Cédric Leporcq eba6fc991b Add --ignore-tags option 2021-07-31 22:08:21 +02:00
Cédric Leporcq 98f4947917 Add --filter-by-ext option 2021-07-31 22:06:54 +02:00
Cédric Leporcq 2e84888c59 Add day_begins config option 2021-07-31 22:06:54 +02:00
Cédric Leporcq fc1f4343b0 Add sort command 2021-07-31 22:06:33 +02:00
Cédric Leporcq f25b8ccd99 Move samples files to sample dir 2021-07-31 08:09:10 +02:00
Cédric Leporcq de1dacc837 Various fix 2021-07-31 08:09:10 +02:00
Cédric Leporcq e9a79d39c5 Fix tests according to code changes 2021-07-31 08:09:10 +02:00
Cédric Leporcq 3af848a162 Change get_all_files behaviour 2021-07-31 08:09:10 +02:00
Cédric Leporcq cb8a4cd24e Refactoring media class 2021-07-31 08:09:10 +02:00
Cédric Leporcq 6b2d2b31c3 Add dry-run action 2021-07-31 08:09:10 +02:00
Cédric Leporcq 04f2ac6738 Change hash_db and location_db storage location to target directory 2021-07-31 08:09:10 +02:00
Cédric Leporcq 21ed551a54 Discard python 2.7 compatibility 2021-07-31 08:09:10 +02:00
Cédric Leporcq 0363fd4302 Add %folder tag 2021-07-18 13:44:58 +02:00
Cédric Leporcq f181c618b3 Metadata changes are made in dest files instead of source files 2021-07-18 13:44:58 +02:00
Cédric Leporcq df0bf3c28e Fix tests 2021-07-18 13:44:58 +02:00
Cédric Leporcq 5e026e68ee Move tests dir to root project folder 2021-07-18 13:44:58 +02:00
Cédric Leporcq 8bc8b6c5c4 Drop textfile support 2021-07-18 13:44:57 +02:00
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 33649319a4
Remove automated tests from running on python 2.7 #392 (#401) 2021-03-03 01:28:13 -08:00
Jaisen Mathai fc37a1ed11
Update requirements.txt to install Pillow version based on python_version and upgrade six to 1.9 (#394)
Fixes build error from changes to pip dependency resolution (#393).
2020-12-23 23:31:00 -08:00
Jaisen Mathai a49c449417
Create FUNDING.yml 2020-12-16 23:14:10 -08:00
Jaisen Mathai 3e192151ed
Update readme to include animated gif to show how photos get organized. (#389) 2020-11-25 01:42:22 -08:00
Adam Candy 4186d4309a
Update Readme to include %extension when customizing file name #367 (#368) 2020-11-11 22:05:06 -08:00
Jaisen Mathai df7ceeec87
Add support for town when resolving location name #386 (#387) 2020-10-23 00:48:19 -07:00
Jaisen Mathai ed4b58aa0d
Add support for PNG photos. #361 (#383) 2020-10-09 00:55:14 -07:00
Jaisen Mathai 579d94c7af
Update python to 3.8 for travis (#381)
Fixes unstable/broken tests.
2020-08-09 02:34:44 -07:00
auenkind 7d77d55750
Add Quicktime:CreateDate to list of EXIF fields to check for video files (#375) 2020-04-26 16:18:23 -07:00
Pierre Buyle 8e95b96e11
Add 'six' package to requirements.txt for systems which do not include it (#362) 2020-03-31 22:53:07 -07:00
Arian Maleki afacb969e8
Enhance filesystem.process_file get_metadata cache performance. (#353)
Reduce exiftool calls by using a metadata object cache. 
Enable single exiftool subprocess to elimate spawing exiftool for each image.
2020-02-24 15:46:02 -08: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 6a4c21fc57
Fix an exception that is raised when creating a media item in Google Photos fails #328 (#329)
Fixes #328

When creating a new media item for Google Photos fails it does not return newMediaItemResults in the body. The code checks for this but then returns the key which it verified does not exist.

This change returns the entire response body in its entirety.
2019-07-24 00:50:02 -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