Coder Social home page Coder Social logo

thelastgimbus / googlephotostakeouthelper Goto Github PK

View Code? Open in Web Editor NEW
3.2K 3.2K 166.0 635 KB

Script that organizes the Google Takeout archive into one big chronological folder

Home Page: https://aur.archlinux.org/packages/gpth-bin

License: Apache License 2.0

Python 1.02% Shell 1.04% Dart 97.94%
exif exif-data google-photos google-takeout json python-scripts

googlephotostakeouthelper's People

Contributors

bitsondatadev avatar choodique avatar cintx avatar conradstorz avatar dalenw avatar dependabot[bot] avatar ed789d0 avatar fengye avatar fossamagna avatar geekrainy avatar hansdg1 avatar hheimbuerger avatar iamnhx avatar jaapp avatar jmigual avatar krishxda avatar m1ndy avatar matt-boris avatar mcgillij avatar rgstori avatar rizz360 avatar rtadams89 avatar sethflowers avatar spyrosroum avatar sugarfunk avatar theendcomplete avatar thejimmynowak avatar thelastgimbus avatar tsi avatar wydy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

googlephotostakeouthelper's Issues

not an issue, but no other way to contact

I've tried so many different scripts and settings and trying things myself...but this is the one that really worked for me! Thank you so much for offering such a great script as open source. You've made my day after so much wasted time!!
Thank you thank you thank you!!!!

Smarter json finding

There was literally no option to set date on test\Photos from 2015\MyPhoto_1116680380_0334.jpeg
There was literally no option to set date on test\Photos from 2015\MyPhoto_1116680380_0335.jpeg
There was literally no option to set date on test\Photos from 2015\MyPhoto_1116680380_0336.jpeg
There was literally no option to set date on test\Photos from 2015\MyPhoto_1116680380_0337.jpeg
There was literally no option to set date on test\Photos from 2015\MyPhoto_1116680380_0338.jpeg
There was literally no option to set date on test\Photos from 2015\MyPhoto_1116680380_0339.jpeg
There was literally no option to set date on test\Photos from 2015\MyPhoto_1116680380_0340.jpeg
There was literally no option to set date on test\Photos from 2015\MyPhoto_1116680380_0341.jpeg
...
!!! There were 53 files where there was absolutely no way to set a correct date! They will probably appear at the top of the others, as their 'last modified' value is set to moment of downloading your takeout :/
 - you have full list in test\unsorted.txt

MyPhoto_1116680380_0341.jpeg.json :

  "title": "MyPhoto_1116680380_0341.jpeg",
  "description": "",
  "imageViews": "7",
  "creationTime": {
    "timestamp": "1516861252",
    "formatted": "2018. 1. 25. 오전 6시 20분 52초 UTC"
  },
  "photoTakenTime": {
    "timestamp": "1432612865",
    "formatted": "2015. 5. 26. 오전 4시 1분 5초 UTC"
  },

UnicodeEncodeError after all files are processed

The script crashes with UnicodeEncodeError after all files are processed.

Here is the log file:

2021-03-09 19:48:06.723 | INFO     | __main__:main:697 - DONE! FREEEEEDOOOOM!!!
2021-03-09 19:48:06.723 | INFO     | __main__:main:698 - 
2021-03-09 19:48:06.724 | INFO     | __main__:main:699 - Final statistics:
2021-03-09 19:48:06.724 | INFO     | __main__:main:700 - Files copied to target folder: 37766
2021-03-09 19:48:06.724 | INFO     | __main__:main:701 - Removed duplicates: 8196
2021-03-09 19:48:06.724 | INFO     | __main__:main:702 - Files for which we couldn't find json: 969
2021-03-09 19:48:06.726 | INFO     | __main__:main:708 -  - you have full list in alex\no_json_found.txt
2021-03-09 19:48:06.736 | INFO     | __main__:main:709 - Files where inserting new exif failed: 2390
2021-03-09 19:48:06.737 | INFO     | __main__:main:711 - (This is not necessary bad thing - pretty much all videos fail, and your photos probably have their original exif already
2021-03-09 19:48:06.739 | INFO     | __main__:main:717 -  - you have full list in alex\failed_inserting_exif.txt
2021-03-09 19:48:06.752 | INFO     | __main__:main:718 - Files where date was set from name of the folder: 91
2021-03-09 19:48:06.758 | ERROR    | __main__:<module>:754 - WHHoopssiee! Looks like script crashed! This shouldn't happen, although it often does haha :P
Most of the times, you should cut out the last printed file (it should be down there somehwere) to some other folder, and continue

If this doesn't help, and it keeps doing this after many cut-outs, you can check out issues tab:
https://github.com/TheLastGimbus/GooglePhotosTakeoutHelper/issues 
to see if anyone has similar issue, or contact me other way:
https://github.com/TheLastGimbus/GooglePhotosTakeoutHelper/blob/master/README.md#contacterrors 

Traceback (most recent call last):

> File "google_photos_takeout_helper\__main__.py", line 754, in <module>

  File "google_photos_takeout_helper\__main__.py", line 723, in main

  File "c:\hostedtoolcache\windows\python\3.7.9\x64\lib\encodings\cp1252.py", line 19, in encode

UnicodeEncodeError: 'charmap' codec can't encode characters in position 49-60: character maps to <undefined>

Issue with date?

Takeout/Google Fotos//2003-12-31/CIMG4562.JPG
Takeout/Google Fotos//2014-11-28/IMG_20141128_170758.jpg
Takeout/Google Fotos//2018-05-04/IMG_20180504_144625.jpg
Takeout/Google Fotos//2011-09-09/IMAG0180.jpg

time data '2011/09/10 02:38:43' does not match format '%Y:%m:%d %H:%M:%S'

==========!!!==========
You probably forgot to remove 'album folders' from your takeout folder
Please do that - see README.md or --help for why

Once you do this, just run it again :)
==========!!!==========

I also removed all album folders...?!

root@linux:/mnt/data2# ls Takeout/Google\ Fotos/
'1970-01-01 #2'   2006-07-16-17    2009-11-06       2011-10-06       2014-09-19       2015-10-02       2016-07-11       2017-09-01       2018-11-17       2019-07-24       2020-04-25
 2003-02-28       2006-08-21       2009-11-24-25    2011-10-07       2014-09-20       2015-10-03       2016-07-12       2017-09-03       2018-11-21       2019-07-25       2020-04-29
 2003-03-01       2006-10-31       2009-11-25-27    2011-10-11       2014-09-22       2015-10-06       2016-07-14       2017-09-09       2018-11-24       2019-07-26       2020-05-02
 2003-03-01-02    2006-12-24       2009-11-28       2011-10-13       2014-09-23       2015-10-07       2016-07-22       2017-09-11       2018-11-26       2019-07-28       2020-05-04
 2003-03-02-03    2006-12-26       2009-11-29       2011-10-25       2014-09-24       2015-10-08       2016-07-26       2017-09-15       2018-11-27       2019-08-02      '2020-05-04 #2'
 2003-03-03       2006-12-29       2009-11-30       2011-11-07       2014-09-26       2015-10-11       2016-07-29       2017-09-17       2018-12-01       2019-08-07       2020-05-06
 2003-12-31       2006-12-31       2009-12-04       2011-11-23       2014-09-28       2015-10-13       2016-08-01       2017-09-21       2018-12-02       2019-08-09       2020-05-08
 2004-01-01       2007-01-04       2009-12-08       2011-11-24       2014-09-29       2015-10-14       2016-08-13       2017-09-27       2018-12-03       2019-08-17       2020-05-09
 2004-01-07       2007-01-05       2009-12-24       2011-11-26       2014-10-02       2015-10-17       2016-08-15      '2017-09-27 #2'   2018-12-06       2019-08-18       2020-05-11
 2004-04-04       2007-04-08       2009-12-25       2011-12-01       2014-10-03       2015-10-18       2016-08-16       2017-10-05       2018-12-06-07    2019-08-20       2020-05-12
 2004-05-07       2007-04-09       2009-12-26       2011-12-03       2014-10-13       2015-10-19       2016-08-17       2017-10-10       2018-12-08       2019-08-26       2020-05-15
 2004-05-08       2007-04-21       2010-01-14       2011-12-12       2014-10-16       2015-10-23      '2016-08-17 #2'   2017-10-15       2018-12-09       2019-08-31       2020-05-16
 2004-05-09       2007-04-22       2010-02-06       2011-12-31       2014-10-23       2015-10-26       2016-08-18       2017-10-17       2018-12-10       2019-09-03       2020-05-18
 2004-05-29      '2007-04-22 #2'   2010-02-11       2012-01-06       2014-10-26       2015-10-29       2016-08-22       2017-10-24       2018-12-12       2019-09-07       2020-05-20
 2004-05-30       2007-04-23      '2010-02-11 #2'  '2012-01-06 #2'   2014-10-27       2015-11-04       2016-08-24       2017-10-29       2018-12-16       2019-09-10       2020-05-22
 2004-07-17       2007-04-25       2010-02-13       2012-01-23       2014-11-01       2015-11-06       2016-08-25       2017-11-07       2018-12-17       2019-09-12       2020-05-23
 2004-07-20      '2007-04-25 #2'   2010-05-12       2012-01-26       2014-11-05       2015-11-09       2016-08-26       2017-11-08       2018-12-20       2019-09-13       2020-05-25
 2004-07-24       2007-06-27       2010-06-05       2012-02-05       2014-11-06       2015-11-10       2016-08-27      '2017-11-08 #2'   2018-12-21       2019-09-14       2020-05-28
 2004-07-29       2007-06-28       2010-06-05-06    2012-02-10       2014-11-12       2015-11-14       2016-08-28       2017-11-09       2018-12-22      '2019-09-14 #2'   2020-05-29
 2004-07-30       2007-06-30       2010-06-07       2012-02-12       2014-11-21      '2015-11-14 #2'   2016-08-29       2017-11-10       2018-12-23       2019-09-17       2020-05-30
 2004-07-30-31   '2007-06-30 #2'   2010-06-08       2012-02-15       2014-11-22       2015-11-21       2016-08-30       2017-11-14       2018-12-27       2019-09-19       2020-05-31
 2004-08-01       2007-07-01       2010-06-09       2012-02-17       2014-11-24       2015-11-22       2016-08-31       2017-11-23       2018-12-28       2019-09-21       2020-06-01
 2004-08-02       2007-07-02       2010-06-10       2012-02-18       2014-11-26       2015-11-23       2016-09-01       2017-11-30       2018-12-29       2019-09-22       2020-06-02
 2004-08-03       2007-07-03       2010-06-11       2012-02-19       2014-11-28       2015-11-24       2016-09-03       2017-12-01      '2018-12-29 #2'   2019-09-26       2020-06-05
 2004-08-04       2007-07-04       2010-06-12       2012-02-20       2014-12-02       2015-11-25       2016-09-06      '2017-12-01 #2'   2018-12-30       2019-09-27      '2020-06-05 #2'
 2004-08-05       2007-07-05       2010-06-13       2012-02-22       2014-12-03       2015-11-26       2016-09-07       2017-12-04       2019-01-01      '2019-09-27 #2'   2020-06-06
 2004-08-06      '2007-07-05 #2'   2010-06-18       2012-03-11       2014-12-04       2015-11-29       2016-09-08       2017-12-06       2019-01-02       2019-09-29       2020-06-10
 2004-08-07      '2007-07-06 #2'   2010-06-24       2012-03-12       2014-12-05       2015-11-30       2016-09-11       2017-12-08       2019-01-03       2019-09-30       2020-06-12
 2004-08-08      '2007-07-06 #3'   2010-07-03       2012-03-17       2014-12-06       2015-12-02       2016-09-12       2017-12-13       2019-01-06       2019-10-06       2020-06-13
 2004-08-09       2007-07-07       2010-07-05       2012-03-19       2014-12-07       2015-12-03       2016-09-13       2018-01-03       2019-01-07       2019-10-08       2020-06-14
'2004-08-09 #2'  '2007-07-08 #2'   2010-07-16       2012-03-20       2014-12-11       2015-12-05       2016-09-17       2018-01-04       2019-01-08       2019-10-09       2020-06-17
 2004-08-10      '2007-07-09 #2'   2010-07-16-17    2012-03-24       2014-12-15       2015-12-06       2016-09-21       2018-01-06      '2019-01-08 #2'   2019-10-14       2020-06-19
 2004-08-11       2007-07-09-10    2010-07-22       2012-03-26       2014-12-16       2015-12-07       2016-09-24       2018-01-15       2019-01-08-09    2019-10-15       2020-06-20
 2004-08-12       2007-07-11       2010-07-23       2012-04-07       2014-12-22       2015-12-12       2016-10-01       2018-01-18       2019-01-10       2019-10-19       2020-06-24
 2004-08-13       2007-07-12       2010-07-24       2012-04-08       2014-12-24       2015-12-13       2016-10-03       2018-01-21       2019-01-11       2019-10-20       2020-06-26
 2004-08-14       2007-07-13       2010-07-25       2012-05-09       2014-12-26       2015-12-14       2016-10-04       2018-01-23       2019-01-12       2019-10-25       2020-06-29
 2004-08-15       2007-07-13-14    2010-07-26       2012-05-13       2014-12-31       2015-12-15       2016-10-05       2018-01-24       2019-01-16       2019-11-02       2020-06-30
 2004-08-16       2007-07-14-15    2010-07-28       2012-05-18       2015-01-06       2015-12-18       2016-10-14       2018-01-30       2019-01-16-17    2019-11-04       2020-07-01
 2004-08-17       2007-07-15       2010-07-29      '2012-05-26 #3'   2015-01-09       2015-12-23       2016-10-19       2018-02-01       2019-01-25       2019-11-05       2020-07-02
 2004-08-17-18    2007-07-16       2010-07-30      '2012-05-27 #2'   2015-01-11       2015-12-31       2016-10-28      '2018-02-01 #2'   2019-01-26       2019-11-07       2020-07-03
 2004-08-18       2007-07-17       2010-07-31      '2012-05-28 #2'   2015-01-12       2016-01-04       2016-11-15       2018-02-02       2019-01-27       2019-11-08       2020-07-06
 2004-08-19       2007-07-18       2010-08-01      '2012-05-29 #3'   2015-01-17       2016-01-05       2016-11-19       2018-02-04       2019-01-29       2019-11-11       2020-07-07
 2004-08-20      '2007-07-18 #2'   2010-08-02      '2012-05-29 #4'  '2015-01-17 #2'   2016-01-11       2016-11-29       2018-02-05       2019-01-31       2019-11-12       2020-07-09
'2004-08-20 #2'   2007-07-19       2010-08-04      '2012-05-30 #2'   2015-01-18       2016-01-15       2016-11-30       2018-02-06       2019-02-01       2019-11-14      '2020-07-09 #2'
 2004-08-21      '2007-07-19 #2'   2010-08-05      '2012-05-31 #2'   2015-01-19       2016-01-25       2016-12-01       2018-02-07       2019-02-02       2019-11-15       2020-07-10
 2004-08-26       2007-07-21       2010-08-06      '2012-06-02 #2'   2015-01-20       2016-01-26       2016-12-04       2018-02-12       2019-02-06       2019-11-16       2020-07-11
 2004-08-27      '2007-07-21 #2'   2010-08-09      '2012-06-03 #2'   2015-01-30       2016-02-04       2016-12-08       2018-02-23       2019-02-09       2019-11-22       2020-07-12
 2004-08-31       2007-07-22       2010-08-14      '2012-06-04 #2'   2015-02-01       2016-02-08       2016-12-13       2018-03-12       2019-02-11       2019-11-23       2020-07-16
 2004-09-01      '2007-07-22 #2'   2010-08-26-27   '2012-06-05 #2'   2015-02-09       2016-02-25       2016-12-28       2018-03-13      '2019-02-11 #2'   2019-11-25       2020-07-18
 2004-09-08       2007-07-29      '2010-08-27 #2'  '2012-06-06 #2'   2015-02-10       2016-02-26       2016-12-30       2018-03-15       2019-02-12       2019-11-29       2020-07-21
 2004-09-11       2007-07-30       2010-09-10       2012-06-07       2015-02-15       2016-02-27       2016-12-31       2018-03-19       2019-02-13       2019-11-30       2020-07-26
 2004-09-16       2007-08-12-13    2010-09-10-11   '2012-06-09 #3'   2015-02-17       2016-02-29       2017-01-07       2018-03-20       2019-02-17       2019-12-01       2020-07-29
 2004-09-20       2007-08-24       2010-10-01      '2012-06-09 #4'   2015-02-19       2016-03-04       2017-01-09       2018-03-24       2019-02-20       2019-12-02       2020-07-31
 2004-09-21       2007-12-07       2010-10-08       2012-06-19       2015-02-20       2016-03-13      '2017-01-09 #2'   2018-03-31       2019-02-24       2019-12-05       2020-08-06
 2004-09-29       2007-12-14       2010-10-09       2012-06-23       2015-03-01       2016-03-16       2017-01-12       2018-04-04       2019-02-25       2019-12-08       2020-08-07
 2004-09-30       2007-12-31       2010-10-10       2012-06-29       2015-03-06       2016-03-17       2017-01-15       2018-04-08       2019-02-26       2019-12-11       2020-08-10
 2004-10-04      '2007-12-31 #2'   2010-10-11       2012-07-29       2015-03-07       2016-03-18       2017-01-17       2018-04-09       2019-02-27       2019-12-12       2020-08-11
 2004-10-05      '2008-02-08 #3'   2010-10-12       2012-10-03       2015-03-10       2016-03-18-19    2017-01-18      '2018-04-09 #2'   2019-02-28       2019-12-13      '2020-08-11 #2'
 2004-10-07       2008-04-07       2010-10-13       2012-10-22       2015-03-16       2016-03-20       2017-01-22       2018-04-14       2019-03-03       2019-12-14       2020-08-12
 2004-10-17       2008-04-22       2010-10-14       2012-10-26       2015-03-18       2016-03-21       2017-01-23       2018-04-15       2019-03-05       2019-12-16       2020-08-13
 2004-11-01       2008-04-23       2010-10-19       2012-11-10       2015-03-19       2016-03-22       2017-01-26       2018-04-17       2019-03-08       2019-12-17       2020-08-14
 2004-11-02       2008-04-26       2010-11-12       2012-11-14       2015-03-20       2016-03-23      '2017-01-26 #2'   2018-04-19       2019-03-09       2019-12-18       2020-08-15
 2004-11-10       2008-05-01      '2010-11-12 #2'   2012-12-06       2015-03-24       2016-03-24       2017-02-05       2018-04-21       2019-03-11       2019-12-22       2020-08-22
 2004-11-13       2008-05-02       2010-11-16       2013-02-24       2015-03-30       2016-03-25       2017-02-11       2018-04-23       2019-03-14       2019-12-23       2020-08-23
 2004-11-16       2008-05-03       2010-11-20       2013-03-01       2015-04-01       2016-03-26       2017-02-13       2018-04-24      '2019-03-14 #2'   2019-12-24       2020-08-24
 2004-12-21       2008-05-04       2010-11-27       2013-03-02      '2015-04-01 #2'   2016-03-27       2017-02-15       2018-04-27       2019-03-15       2019-12-26       2020-08-25
 2005-01-01       2008-05-14      '2010-11-27 #2'  '2013-03-02 #2'   2015-04-02       2016-03-28       2017-02-22       2018-04-30       2019-03-17       2019-12-31       2020-08-26
 2005-01-04       2008-05-17-18    2010-12-18       2013-03-03      '2015-04-02 #2'   2016-03-29       2017-03-02       2018-05-04      '2019-03-17 #2'   2020-01-01       2020-08-27
 2005-01-08       2008-05-19       2010-12-24       2013-03-04       2015-04-03       2016-03-30       2017-03-11       2018-05-05       2019-03-18       2020-01-02       2020-08-28
 2005-01-27       2008-05-20       2010-12-25       2013-03-10       2015-04-11       2016-04-01       2017-03-13       2018-05-26       2019-03-22       2020-01-03       2020-08-31
 2005-01-31       2008-05-21       2011-01-02      '2013-03-10 #2'   2015-04-15       2016-04-02       2017-03-15       2018-05-30       2019-03-25       2020-01-06       2020-09-01
 2005-02-03       2008-05-22       2011-01-08       2013-03-11       2015-04-16       2016-04-03       2017-03-18       2018-06-09       2019-03-26       2020-01-08       2020-09-03
 2005-02-04       2008-05-23       2011-01-24       2013-03-30       2015-04-20       2016-04-06       2017-03-19       2018-06-15       2019-03-27       2020-01-09       2020-09-04
 2005-02-05       2008-05-24       2011-02-04       2013-03-31       2015-04-27       2016-04-07      '2017-03-19 #2'   2018-06-20       2019-03-28       2020-01-10       2020-09-06
 2005-02-06       2008-05-26       2011-02-05       2013-04-15       2015-05-11       2016-04-08       2017-03-20       2018-06-22       2019-03-29       2020-01-13       2020-09-07
 2005-02-07       2008-05-27       2011-02-07       2013-04-22       2015-05-21       2016-04-11       2017-03-23       2018-06-23       2019-03-31       2020-01-16       2020-09-08
 2005-02-08       2008-05-28       2011-02-08       2013-04-28       2015-05-22       2016-04-13       2017-03-25       2018-06-25       2019-04-01       2020-01-21       2020-09-10
 2005-02-15       2008-05-31       2011-02-11       2013-04-29       2015-05-23       2016-04-15       2017-03-30       2018-07-01       2019-04-14       2020-01-22       2020-09-21
 2005-02-21       2008-06-13       2011-03-03       2013-05-19      '2015-05-23 #2'   2016-04-16       2017-03-31       2018-07-06       2019-04-16       2020-01-23       2020-09-22
 2005-02-22       2008-06-14       2011-03-09       2013-06-20       2015-05-24      '2016-04-16 #2'   2017-04-01       2018-07-07       2019-04-17       2020-01-31       2020-09-23
 2005-03-02       2008-07-05       2011-03-17       2013-07-20       2015-05-25       2016-04-21       2017-04-02       2018-07-11       2019-04-18       2020-02-03       2020-09-29
 2005-03-27       2008-07-06       2011-03-23       2013-07-21       2015-05-29       2016-04-24-25    2017-04-07       2018-07-13       2019-04-21       2020-02-04       2020-09-30
 2005-03-28       2008-07-07       2011-04-01       2013-07-25       2015-05-30       2016-04-26       2017-04-08       2018-07-14       2019-04-24       2020-02-08       2020-10-01
 2005-04-23       2008-07-08       2011-04-04       2013-07-26      '2015-05-30 #2'  '2016-04-26 #2'   2017-04-13       2018-07-20       2019-04-28       2020-02-11       2020-10-03
 2005-05-02       2008-07-10       2011-04-05       2013-08-04       2015-06-03       2016-04-27       2017-04-14       2018-07-22       2019-04-30       2020-02-12      '2020-10-03 #2'
 2005-05-09       2008-07-11       2011-04-16       2013-08-07      '2015-06-03 #2'   2016-04-29       2017-04-16       2018-07-24       2019-05-02       2020-02-13       2020-10-05
 2005-06-01       2008-07-12       2011-04-18       2013-10-04       2015-06-06       2016-04-30       2017-04-18       2018-07-26       2019-05-03       2020-02-15       2020-10-06
 2005-06-16       2008-07-30       2011-04-19       2013-11-01       2015-06-09       2016-05-01       2017-04-26       2018-07-27       2019-05-06       2020-02-18       2020-10-07
 2005-06-21       2008-07-31       2011-04-21       2013-11-12       2015-06-11       2016-05-03       2017-04-29       2018-07-28       2019-05-07       2020-02-19       2020-10-08
 2005-06-24       2008-08-11       2011-05-13       2013-11-18       2015-06-12      '2016-05-03 #2'   2017-05-02       2018-07-29       2019-05-09       2020-02-21       2020-10-09
 2005-06-27       2008-08-12       2011-05-14-15    2013-12-05       2015-06-16       2016-05-04       2017-05-09       2018-07-30       2019-05-11       2020-02-22       2020-10-11
 2005-06-28       2008-08-13       2011-05-16       2013-12-31       2015-06-18       2016-05-09       2017-05-11       2018-08-01       2019-05-13       2020-02-29       2020-10-12
 2005-06-30       2008-08-14       2011-05-17       2014-01-23       2015-06-22       2016-05-10       2017-05-12       2018-08-02       2019-05-16       2020-03-02      '2020-10-12 #2'
 2005-08-15       2008-08-15       2011-05-18       2014-02-18       2015-06-25       2016-05-11       2017-05-16       2018-08-05       2019-05-18       2020-03-03       2020-10-13
 2005-08-16-17    2008-09-20       2011-05-19       2014-02-22       2015-07-01       2016-05-12      '2017-05-16 #2'   2018-08-06       2019-05-20       2020-03-05       2020-10-15
 2005-08-23       2008-12-24       2011-05-20       2014-03-01       2015-07-07       2016-05-13       2017-05-20       2018-08-08      '2019-05-20 #2'   2020-03-09       2020-10-17
 2005-09-08       2008-12-25       2011-05-24       2014-03-06       2015-07-08       2016-05-17       2017-05-22       2018-08-16      '2019-05-20 #3'   2020-03-10       2020-10-18
 2006-01-13-14    2008-12-26       2011-05-26       2014-03-17       2015-07-09       2016-05-18       2017-05-23       2018-08-20       2019-05-21       2020-03-11       2020-10-19
 2006-01-14       2009-01-09       2011-06-08       2014-05-06       2015-07-13      '2016-05-18 #2'   2017-05-24       2018-08-21       2019-05-25       2020-03-15       2020-10-20
 2006-01-15      '2009-01-09 #2'   2011-06-15       2014-05-07       2015-07-14       2016-05-20       2017-05-28       2018-08-23       2019-05-28       2020-03-16       2020-10-21
 2006-01-16       2009-01-10       2011-06-22       2014-05-22       2015-07-20       2016-05-22       2017-05-29       2018-08-24       2019-05-29       2020-03-17       2020-10-22
'2006-01-16 #2'   2009-01-11       2011-06-23       2014-05-24       2015-07-23       2016-05-26       2017-06-04       2018-08-30       2019-05-31       2020-03-18       2020-10-25
 2006-01-17       2009-05-01       2011-06-28       2014-06-09       2015-07-25       2016-05-27       2017-06-06       2018-09-03       2019-06-02       2020-03-19       2020-10-26
 2006-01-18       2009-05-02       2011-06-29       2014-06-11       2015-07-31       2016-05-28       2017-06-07       2018-09-07       2019-06-03       2020-03-20      '2020-10-26 #2'
 2006-01-19       2009-05-03       2011-06-30       2014-06-15       2015-08-02      '2016-05-28 #2'   2017-06-09       2018-09-10       2019-06-08       2020-03-21       2020-10-27
 2006-01-20       2009-06-30       2011-07-13       2014-06-22       2015-08-05       2016-05-30       2017-06-14       2018-09-11       2019-06-16       2020-03-22       2020-10-28
 2006-02-23       2009-07-19       2011-07-19       2014-06-23       2015-08-06       2016-06-01       2017-06-17       2018-09-12       2019-06-20       2020-03-23       2020-10-31
 2006-02-24       2009-08-22       2011-07-25       2014-07-04       2015-08-08       2016-06-02       2017-07-03       2018-09-16       2019-06-24       2020-03-24       2020-11-01
 2006-02-25       2009-09-12       2011-08-08       2014-07-10       2015-08-11       2016-06-04       2017-07-06       2018-09-21       2019-06-26       2020-03-24-25    2020-11-02
 2006-02-26       2009-09-13       2011-08-09       2014-07-11       2015-08-13       2016-06-06       2017-07-07       2018-09-26       2019-06-28       2020-03-26       2020-11-06
 2006-02-27      '2009-09-13 #2'   2011-08-10       2014-07-13       2015-08-14       2016-06-07       2017-07-08       2018-09-28      '2019-06-28 #2'   2020-03-27       2020-11-07
 2006-02-28       2009-09-14       2011-08-13       2014-07-18       2015-08-17       2016-06-08      '2017-07-08 #2'   2018-09-30       2019-06-29       2020-03-28       2020-11-08
 2006-03-04       2009-09-15-16    2011-08-14       2014-07-19       2015-08-19       2016-06-09       2017-07-13       2018-10-01       2019-07-01       2020-03-31       2020-11-12
 2006-04-09       2009-09-16-18    2011-08-15       2014-07-20       2015-08-23       2016-06-10       2017-07-26       2018-10-05       2019-07-06       2020-04-02       2020-11-13
 2006-04-10       2009-09-19       2011-08-16       2014-07-24       2015-08-27       2016-06-12       2017-08-05       2018-10-08       2019-07-08       2020-04-04       2020-11-14
 2006-04-16       2009-09-19-20    2011-08-17       2014-08-01       2015-08-29       2016-06-14       2017-08-06       2018-10-13       2019-07-09       2020-04-05       2020-11-15
 2006-05-16       2009-09-20       2011-08-18       2014-08-02       2015-09-01       2016-06-15       2017-08-07       2018-10-26       2019-07-13       2020-04-06       2020-11-17
 2006-05-22       2009-09-20-21    2011-08-19       2014-08-04      '2015-09-01 #2'   2016-06-16       2017-08-08       2018-10-30       2019-07-14       2020-04-07       2020-11-20
 2006-06-08       2009-09-21-22    2011-08-20       2014-08-06       2015-09-07       2016-06-17       2017-08-11       2018-10-31      '2019-07-14 #2'   2020-04-08       2020-11-22
 2006-07-10       2009-09-22-23    2011-08-21       2014-08-08       2015-09-14       2016-06-19       2017-08-12       2018-11-03       2019-07-15       2020-04-09       2020-11-23
 2006-07-11       2009-09-24       2011-08-22       2014-08-17       2015-09-15       2016-06-21       2017-08-15       2018-11-04       2019-07-16       2020-04-14       2020-11-24
'2006-07-11 #2'   2009-09-25       2011-08-23       2014-08-19       2015-09-16       2016-06-25       2017-08-18       2018-11-06       2019-07-17       2020-04-16
 2006-07-12       2009-09-26       2011-09-09       2014-08-21       2015-09-17       2016-06-27       2017-08-20       2018-11-08       2019-07-18       2020-04-18
'2006-07-12 #2'   2009-09-27       2011-09-16       2014-08-24       2015-09-18       2016-06-29       2017-08-21       2018-11-12       2019-07-19      '2020-04-18 #2'
 2006-07-13       2009-09-28       2011-09-22       2014-08-31       2015-09-27-28    2016-07-01       2017-08-22       2018-11-13      '2019-07-19 #2'   2020-04-20
 2006-07-14      '2009-09-28 #2'   2011-10-01       2014-09-09       2015-09-29       2016-07-05       2017-08-28      '2018-11-13 #2'   2019-07-22       2020-04-21
 2006-07-15       2009-09-29-30    2011-10-04       2014-09-10       2015-09-30       2016-07-07       2017-08-29       2018-11-15       2019-07-23       2020-04-22

JSON Case

Found a separate issue. Google sucks. Google has made some of the JSON filenames with caps extensions.

/volume1/public/takeout/1main/Takeout/Google Photos/The Pups/197_197.jpg
Couldn't find json for file
/volume1/public/takeout/1main/Takeout/Google Photos/The Pups/20090216_00021.jpg
Couldn't find json for file
/volume1/public/takeout/1main/Takeout/Google Photos/The Pups/20090216_00022.jpg
Couldn't find json for file
/volume1/public/takeout/1main/Takeout/Google Photos/The Pups/20090216_00023.jpg
Couldn't find json for file
/volume1/public/takeout/1main/Takeout/Google Photos/The Pups/20090216_00024.jpg
Couldn't find json for file
/volume1/public/takeout/1main/Takeout/Google Photos/The Pups/20090216_00025.jpg
Couldn't find json for file
/volume1/public/takeout/1main/Takeout/Google Photos/The Pups/20090216_00026.jpg
Couldn't find json for file
/volume1/public/takeout/1main/Takeout/Google Photos/The Pups/20090216_00027.jpg
Couldn't find json for file
/volume1/public/takeout/1main/Takeout/Google Photos/The Pups/20090316_00190.jpg
Couldn't find json for file
/volume1/public/takeout/1main/Takeout/Google Photos/The Pups/20090316_00191.jpg
Couldn't find json for file
/volume1/public/takeout/1main/Takeout/Google Photos/The Pups/20090325_00192.jpg
Couldn't find json for file
/volume1/public/takeout/1main/Takeout/Google Photos/The Pups/20090325_00193.jpg
Couldn't find json for file
/volume1/public/takeout/1main/Takeout/Google Photos/The Pups/20090325_00194.jpg
Couldn't find json for file

image

JSON naming too long?

I have several JSON files which names are probably too long. for exmple:

oot@linux:/mnt/data2/Takeout/Google Fotos/2005-02-05# ls -l
total 15111
-rwxrwxrwx 1 root root    440 Nov 26 03:03  Metadaten.json
-rwxrwxrwx 1 root root    752 Jan 12  2020 'Urlaub in Knaufspesch in der Schneifel (38).JP.json'
-rwxrwxrwx 1 root root 341685 Feb  5  2005 'Urlaub in Knaufspesch in der Schneifel (38).JPG'
-rwxrwxrwx 1 root root    752 Jan 12  2020 'Urlaub in Knaufspesch in der Schneifel (39).JP.json'
-rwxrwxrwx 1 root root 330766 Feb  5  2005 'Urlaub in Knaufspesch in der Schneifel (39).JPG'
-rwxrwxrwx 1 root root    752 Jan 12  2020 'Urlaub in Knaufspesch in der Schneifel (40).JP.json'
-rwxrwxrwx 1 root root 315658 Feb  5  2005 'Urlaub in Knaufspesch in der Schneifel (40).JPG'
-rwxrwxrwx 1 root root    752 Jul  3 07:34 'Urlaub in Knaufspesch in der Schneifel (41).JP.json'
-rwxrwxrwx 1 root root 423738 Feb  5  2005 'Urlaub in Knaufspesch in der Schneifel (41).JPG'

this way your script does not found the json files?

Invalid Name crash, only while using experimental options.

I got this crash. It does not happen when I run the program omitting the --skip-extras-harder --skip-extras options.

$ google-photos-takeout-helper -i Takeout -o processed --skip-extras-harder --skip-extras 
Heeeere we go!
Counting how many input files we have ahead...
100%|███████████████████████████████████████████████████████████████████████████████████████████| 23/23 [00:05<00:00,  4.38formats/s]
Input files: 24289
=====================
Fixing files metadata and creation dates...
WHHoopssiee! Looks like script crashed! This shouldn't happen, although it often does haha :P                                        
Most of the times, you should cut out the last printed file (it should be down there somehwere) to some other folder, and continue

If this doesn't help, and it keeps doing this after many cut-outs, you can check out issues tab:
https://github.com/TheLastGimbus/GooglePhotosTakeoutHelper/issues 
to see if anyone has similar issue, or contact me other way:
https://github.com/TheLastGimbus/GooglePhotosTakeoutHelper/blob/master/README.md#contacterrors 

Traceback (most recent call last):

> File "/home/j/.local/bin/google-photos-takeout-helper", line 8, in <module>
    sys.exit(main())
    │   │    └ <function main at 0x7fcf2d056dc0>
    │   └ <built-in function exit><module 'sys' (built-in)>
  File "/home/j/.local/lib/python3.8/site-packages/google_photos_takeout_helper/__main__.py", line 666, in main
    for_all_files_recursive(
    └ <function main.<locals>.for_all_files_recursive at 0x7fcf2c727430>
  File "/home/j/.local/lib/python3.8/site-packages/google_photos_takeout_helper/__main__.py", line 151, in for_all_files_recursive
    if filter_fun(file):
       │          └ PosixPath('Takeout/Google Photos/Photos from 2020/IMG_20200811_131725(1).jpg')
       └ <function main.<locals>.<lambda> at 0x7fcf2c72d700>
  File "/home/j/.local/lib/python3.8/site-packages/google_photos_takeout_helper/__main__.py", line 670, in <lambda>
    filter_fun=lambda f: (is_photo(f) or is_video(f))
                      │   │        │     │        └ PosixPath('Takeout/Google Photos/Photos from 2020/IMG_20200811_131725(1).jpg')
                      │   │        │     └ <function main.<locals>.is_video at 0x7fcf2c727550>
                      │   │        └ PosixPath('Takeout/Google Photos/Photos from 2020/IMG_20200811_131725(1).jpg')
                      │   └ <function main.<locals>.is_photo at 0x7fcf2c7274c0>
                      └ PosixPath('Takeout/Google Photos/Photos from 2020/IMG_20200811_131725(1).jpg')
  File "/home/j/.local/lib/python3.8/site-packages/google_photos_takeout_helper/__main__.py", line 180, in is_photo
    plain_file = file.with_name(_re.sub(search, '.', str(file)))
                 │    │         │   │   │                └ PosixPath('Takeout/Google Photos/Photos from 2020/IMG_20200811_131725(1).jpg')
                 │    │         │   │   └ '\\(\\d+\\)\\.'
                 │    │         │   └ <function sub at 0x7fcf2d156c10>
                 │    │         └ <module 're' from '/usr/lib/python3.8/re.py'>
                 │    └ <function PurePath.with_name at 0x7fcf2c7aeb80>
                 └ PosixPath('Takeout/Google Photos/Photos from 2020/IMG_20200811_131725(1).jpg')
  File "/usr/lib/python3.8/pathlib.py", line 856, in with_name
    raise ValueError("Invalid name %r" % (name))
                                          └ 'Takeout/Google Photos/Photos from 2020/IMG_20200811_131725.jpg'

ValueError: Invalid name 'Takeout/Google Photos/Photos from 2020/IMG_20200811_131725.jpg'

Script throws an error after approx. 10 seconds

I have no clue what would possibly cause this since I don't code

Here is a dump of my entire cmd, I hope you can help me out here! :)
If you need any additional information, I am more than happy to give that, thanks!

Microsoft Windows [Version 10.0.19042.630]
(c) 2020 Microsoft Corporation. All rights reserved.

C:\Users\phili>google-photos-takeout-helper -i "C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s" -o "C:\Users\phili\Documents\GOOGLE PHOTOS"
DISCLAIMER!
Before running this script, you need to cut out all folders that aren't dates
That is, all album folders, and everything that isn't named
2016-06-16 (or with "#", they are good)
See README.md or --help on why
(Don't worry, your photos from albums are already in some date folder)

Type "yes i did that" to confirm:
yes i did that
Heeeere we go!
=====================
Removing duplicates...
=====================
=====================
Fixing files metadata and creation dates...
=====================
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-05-24/IMG-20140524-WA0000.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-05-24/IMG-20140524-WA0003.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-05-24/IMG-20140524-WA0004.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-05-24/IMG-20140524-WA0005.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-05-24/IMG-20140524-WA0006.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-05-24/IMG-20140524-WA0007.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-05-24/IMG-20140524-WA0008.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-05-24/IMG-20140524-WA0009.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-05-24/IMG-20140524-WA0010.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-07-31/20140731_171051.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-07-31/20140731_171100.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_110919.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_110942.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_110943.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_110945.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_111139.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_111430.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_111432.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_111454.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_111502.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_112039.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_112303.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_112325.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_113739.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_113741.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_113742.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_113743.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_113744.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_113803.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_113804.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_115753.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_115809.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_115915.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_115918.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_115935.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_115957.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_120003.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_120014.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_120017.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_120109.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_120144.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-01/20140801_120203.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-02/20140802_181752.mp4
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-08-02/20140802_181752.mp4
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-09-25/IMG-20140925-WA0002.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-09-25/IMG-20140925-WA0003.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0001.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0002.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0003.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0004.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0005.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0006.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0007.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0008.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0009.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0010.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0011.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0012.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0014.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0015.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0016.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0017.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0018.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-01/IMG-20141001-WA0019.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-10-25/159de6f69e3809acff692a57372b5462.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-12-18/20141218_141900.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-12-18/20141218_142049.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2014-12-18/20141218_142115.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-01-14-15/IMG_20150115_120101142_HDR.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-01-14-15/IMG_20150115_124421664_HDR.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-01-19/IMG-20150119-WA0001.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-01-19/IMG-20150119-WA0002.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-01-21/IMG-20150121-WA0001.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-01-21/IMG-20150121-WA0002.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-01-21-22/IMG_20150122_125101215.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-01-25-26/IMG-20150126-WA0010.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-01-25-26/IMG-20150126-WA0011.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-01-25-26/IMG_20150126_100256604_HDR.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-01-25-26/IMG_20150126_100332869.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-02-04/IMG_20150204_134654804.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-02-04/IMG_20150204_190959196.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-02-07/IMG-20150207-WA0001.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-02-16/IMG_20150216_090711949_HDR.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-02-21/IMG-20150221-WA0004.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-02-21/IMG-20150221-WA0006.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-02-26/IMG-20150226-WA0001.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-02-27/IMG-20150227-WA0002.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-04-21/IMG_20150421_110536836.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-04-21/IMG_20150421_110658765.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-04-21/IMG_20150421_110849.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-04-24/School 079.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-04-26/IMG_20150426_190730.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-04-26/IMG_20150426_191919823.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-04-26/IMG_20150426_195648267.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-04-26/IMG_20150426_203645916.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-04-30/IMG_20150430_183557993.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-06/School 170.mp4
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-06/School 170.mp4
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-10/School 010.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-13/IMG_20150513_143204670.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-18/IMG_20150518_144034733_HDR.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-18/IMG_20150518_144151179_HDR.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-18/School 011.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_112129804.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_112134268.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_112257097.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_112339945.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_112629109.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_112644056.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_112648437.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_121135121.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_122718418.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_122901184.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_125818234.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_125841811.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_130110673.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_130206042.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_134459041.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_134509387.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_135410199.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-21/IMG_20150521_142610378.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-28/IMG_20150528_083250381.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-28/IMG_20150528_105602107.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-28/IMG_20150528_135502749.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-28/IMG_20150528_135504306.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/IMG_20150529_151122779.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/IMG_20150529_151130849.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/IMG_20150529_151143126.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/IMG_20150529_151152234.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/IMG_20150529_151723240.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/IMG_20150529_173236.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/IMG_20150529_173242.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/IMG_20150529_193026114.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/IMG_20150529_193028281.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/IMG_20150529_193029588.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/IMG_20150529_193030914.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/PANO_20150529_171726.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/PANO_20150529_172452.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-29/TINYPLANET_PANO_20150529_171726.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-31/IMG_20150531_122352617.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-31/IMG_20150531_122356427.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-05-31/School 107.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-01/IMG_20150601_101952027.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-01/IMG_20150601_124615367.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-01/IMG_20150601_124627980.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-01/IMG_20150601_124746091.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-03/IMG_20150603_115909210.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-03/IMG_20150603_115914924.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-03/IMG_20150603_120032168.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-03/IMG_20150603_120033300.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-03/IMG_20150603_120034346.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-03/IMG_20150603_120035402.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-05/IMG_20150605_123231072.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-05/IMG_20150605_123239497.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-05/IMG_20150605_123240677.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-05/IMG_20150605_155757890.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-06/IMG_20150606_185831534.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-07/IMG_20150607_153618998.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-08/IMG_20150608_103038007.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-08/IMG_20150608_103150859.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-09/IMG_20150609_104622631.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-09/School 012.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-12/IMG_20150612_143559888.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 013.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 014.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 014.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 015.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 015.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 016.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 016.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 017.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 017.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 018.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 018.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 019.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 019.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 020.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 020.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 021.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 021.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 022.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 022.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 023.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 025.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 025.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 026.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 026.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 027.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 028.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 029.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 030.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 033.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 033.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 034.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 034.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 035.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 035.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 037.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 037.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 038.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 038.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 039.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 039.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 040.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 040.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 041.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 041.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 042.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 042.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 043.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 043.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 044.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 045.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 046.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 046.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 047.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 047.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 048.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 048.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 049.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 050.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 051.JPG
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 052.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 052.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 053.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 054.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 055.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 056.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 058.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 059.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 060.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 060.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 061.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 061.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 062.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 062.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 064.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 064.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 065.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 065.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 066.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 066.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 068.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 068.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 069.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 069.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 070.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 070.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 071.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 071.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 072.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 073.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 073.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 075.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 076.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 078.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 078.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 080.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 080.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 081.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 082.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 083.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 083.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 084.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 084.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 085.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 085.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 086.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 086.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 087.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 087.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 088.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 088.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 089.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 090.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 090.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 091.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 091.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 092.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 092.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 093.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 093.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 094.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 094.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 095.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 095.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 096.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 096.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 097.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 097.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 098.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 098.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 099.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 099.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 100.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 101.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 101.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 102.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 102.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 103.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 103.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 104.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 104.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 105.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 105.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 106.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 106.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 108.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 108.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 109.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 109.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 110.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 110.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 111.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 111.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 112.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 112.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 113.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 113.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 114.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 114.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 115.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 115.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 116.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 116.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 117.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 117.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 118.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 118.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 119.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 119.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 120.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 120.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 121.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 121.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 122.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 122.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 123.png
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 124.png
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 125.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 125.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 126.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 126.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-15/School 127.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-16/School 128.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-16/School 128.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-17/School 129.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-17/School 129.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-20/School 130.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-20/School 130.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-21/School 131.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-21/School 131.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-21/School 132.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-21/School 132.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-21/School 133.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-21/School 133.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-23/School 134.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-23/School 134.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-24/School 135.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-24/School 135.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-24/School 136.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-24/School 136.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-24/School 137.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-24/School 137.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-24/School 359.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-24/School 359.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-25/School 140.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-25/School 141.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-25/School 142.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-25/School 143.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-28/School 145.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-28/School 145.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-28/School 146.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-28/School 146.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-29/School 147.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-06-29/School 147.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-03/VID-20171009-WA0006.mp4
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-03/VID-20171009-WA0006.mp4
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-04/VID-20150725-WA0009.mp4
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-04/VID-20150725-WA0009.mp4
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-04/VID-20150727-WA0002.mp4
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-04/VID-20150727-WA0002.mp4
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-05/School 148.png
Given file is neither JPEG nor TIFF.
No exif for C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-05/School 148.png
Couldn't insert geo exif!

Couldn't insert exif!

C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-13/School 150.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-13/School 151.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-13/School 152.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-13/School 153.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-13/School 154.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-13/School 155.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG-20150718-WA0002.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG-20150718-WA0003.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG-20150718-WA0005.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG-20150718-WA0006.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG-20150718-WA0007.jpeg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG-20150718-WA0023.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG-20150718-WA0024.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG-20150718-WA0026.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_201658888.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_202209812.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_202212010.jpg
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_202215467.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_202846272.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_204423648.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_204425055.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_204426169.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_204427471.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_204435378.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_204438732.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_204440762.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_204442765.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_204448089.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/IMG_20150718_211430582.jpg
Couldn't find json for file :/
C:\Users\phili\Documents\Takeout\Takeout\Google Foto_s/2015-07-18/School 157.jpg
Error setting creation date from string:
time data '18 jul: 2015 21:06:' does not match format '%Y:%m:%d %H:%M:%S'
Traceback (most recent call last):
  File "c:\users\phili\appdata\local\programs\python\python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\phili\appdata\local\programs\python\python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\phili\AppData\Local\Programs\Python\Python39\Scripts\google-photos-takeout-helper.exe\__main__.py", line 7, in <module>
  File "c:\users\phili\appdata\local\programs\python\python39\lib\site-packages\google_photos_takeout_helper\__main__.py", line 439, in main
    for_all_files_recursive(
  File "c:\users\phili\appdata\local\programs\python\python39\lib\site-packages\google_photos_takeout_helper\__main__.py", line 100, in for_all_files_recursive
    for_all_files_recursive(file, file_function, folder_function, filter_fun)
  File "c:\users\phili\appdata\local\programs\python\python39\lib\site-packages\google_photos_takeout_helper\__main__.py", line 103, in for_all_files_recursive
    file_function(dir, file)
  File "c:\users\phili\appdata\local\programs\python\python39\lib\site-packages\google_photos_takeout_helper\__main__.py", line 363, in fix_metadata
    set_creation_date_from_exif(file)
  File "c:\users\phili\appdata\local\programs\python\python39\lib\site-packages\google_photos_takeout_helper\__main__.py", line 235, in set_creation_date_from_exif
    set_creation_date_from_str(file, datetime_str)
  File "c:\users\phili\appdata\local\programs\python\python39\lib\site-packages\google_photos_takeout_helper\__main__.py", line 221, in set_creation_date_from_str
    _os.utime(file, (timestamp, timestamp))
UnboundLocalError: local variable 'timestamp' referenced before assignment

C:\Users\phili>


Some suggestions

I just used this, I love it! However, I have some ideas that might make this better:

  • I think the UX could be better if the months were labeled as Jan, Feb etc..
  • Also, I tried to use the exe file but windows was not letting me run it so I ended up using pip.
  • It would be cool if you rename the file as the date of the photo since Windows organizes the file names alpha order, this way when the user is viewing everything they can see all birthday photos together, all grad photos togther etc...
    Overall, great program, saved my life :)

(edits from @TheLastGimbus - I added the "[ ]" to mark progress

No folders named like the README instructions?

Hi, thought I'd give this a shot, however I noticed that after using takeout, I don't have any folders in the YYYY-MM-DD format or anything like that. Each takeout folder is mostly comprised of albums, with the closest being Photos from YYYY. I'm not sure if this is because it originally synced with Google Drive, or what.

And also, might be unrelated, but if using macOS, can I just copy-merge the folders so I have ./Takeout/Google\ Photos/<everything copy-merged here> or should it each Takeout folder just be put into a folder (no merge) like ./folder/<Takeout [1-N]>

Windows CMD Doesn't work.

When the .exe is run in CMD on windows it completely doesn't work. Doesn't matter the formatting or anything you change it will always give you an error

Dies on certain images

After running for 20+ hours, the script dies on a specific image even though it parses and displays fine. I have reproduced it with a directory of just the image. This is running release 2.0 on Ubuntu Linux 20.10

The log looks like this -

~/.local/bin/google-photos-takeout-helper -i brokenimages -o testout
Heeeere we go!
=====================
Fixing files metadata and creation dates...
=====================
brokenimages/IMG_4661(3).jpg
Traceback (most recent call last):
  File "/home/jasontitus/.local/bin/google-photos-takeout-helper", line 8, in <module>
    sys.exit(main())
  File "/home/jasontitus/.local/lib/python3.8/site-packages/google_photos_takeout_helper/__main__.py", line 570, in main
    for_all_files_recursive(
  File "/home/jasontitus/.local/lib/python3.8/site-packages/google_photos_takeout_helper/__main__.py", line 114, in for_all_files_recursive
    file_function(file)
  File "/home/jasontitus/.local/lib/python3.8/site-packages/google_photos_takeout_helper/__main__.py", line 494, in fix_metadata
    set_creation_date_from_exif(file)
  File "/home/jasontitus/.local/lib/python3.8/site-packages/google_photos_takeout_helper/__main__.py", line 343, in set_creation_date_from_exif
    exif_dict = _piexif.load(str(file))
  File "/home/jasontitus/.local/lib/python3.8/site-packages/piexif/_load.py", line 43, in load
    exif_dict["Exif"] = exifReader.get_ifd_dict(pointer, "Exif")
  File "/home/jasontitus/.local/lib/python3.8/site-packages/piexif/_load.py", line 118, in get_ifd_dict
    tag = struct.unpack(self.endian_mark + "H",
struct.error: unpack requires a buffer of 2 bytes

The jpeginfo output for the file is -
jpeginfo -c brokenimages/IMG_4661\(3\).jpg 
brokenimages/IMG_4661(3).jpg 2592 x 1936 24bit Exif  N 2167440  [OK]

Here is a link to the file

After a few modifications it works for me.

Line 10: from datetime import timedelta as _timedelta # used to calculate negative timestamp, i.e. time before 1970
Line 291: dir = dir[12:] + ':01:01' + ' 12:00:00' # adapted to the new takeout folder names, e.g. 'Photos from 2020'
Line 321: # if it is before 1970, timestamp needs to be calculated differently, which is also applicable after 1970.
timestamp = (_datetime.strptime(str_datetime, '%Y:%m:%d %H:%M:%S') - _datetime(1970, 1, 1)) / _timedelta(seconds=1)
Line 377: timestamp_1 = int(json['photoTakenTime']['timestamp'])
datetime_1 = _datetime(1970, 1, 1) + _timedelta(seconds=timestamp_1)
return datetime_1.strftime('%Y:%m:%d %H:%M:%S')
Line 550: date = _datetime(1970, 1, 1) + _timedelta(seconds=creation_date)

Strategies for timestamping more photos and videos.

After running this project, I had a number of leftover files with dates equal to the date of my google takeout.zip.

Many of the files had timestamps available in the filename in a predictable format.
Other files matched closely with a different file which we did have a timestamp in the json file that was already able to be pulled out.

Here's the code I used and it cleaned up most of the remaining ~300 files that google-photos-takeout-helper was not able to figure out the timestamps for.

  • check for timestamps for files with similar names, but without the (1) and -edited in their name. Or in a similarly named jpg file. For the android motion videos, there's a jpg and mp4 with identical names, so we can use the timestamp from the jpg on the mp4.
  • check for timestamps in the filename itself
import datetime
import os

folder = 'processed'

fnames = []
for (dirpath, dirnames, filenames) in os.walk(folder):
  fnames.extend(filenames)
  break 
for name in fnames:
  base = os.path.splitext(name)[0]
  base = base.rstrip("(1)") \
             .rstrip("(2)") \
             .rstrip("_1") \
             .rstrip("_a") \
             .rstrip("_b") \
             .rstrip("-edited")
  
  base += '.jpg'
  
  stinfo = os.stat(folder + '/' + name)
  
  # these are earlier than my google takeout zip.  so already modified.  no need to look at them again
  if stinfo.st_mtime < 1635785952:
    continue
  
  if base == name:
    continue
  
  if not os.path.exists(folder + '/' + base):
    # nothing to copy from
    print(f'need to figure out {name}')
    if "_20" in name:
      print(f'timestame in name?')
      ts = os.path.splitext(name)[0] \
           .rstrip("(1)")
      ts = "20" + ts.split("_20", 1)[1]
      print(f"datestring: {ts}")
      
      try:
       date = datetime.datetime.strptime(ts, "%Y%m%d_%H%M%S")
       print(f'parsed as date!: {date}')
       os.utime(folder + '/' + name,(date.timestamp(),date.timestamp()))
      except:
        pass
    continue

  print(f'copying attributes from sister jpg file: {base} -> {name}')
  stinfo = os.stat(folder + '/' + base)
  os.utime(folder + '/' + name,(stinfo.st_atime, stinfo.st_mtime))

Question - Help Needed

Hi - I joined Github just so I can send you a message, so I hope you see this. I'm attempting to use Google's Takeout for backing up my photos. With my frustration and googling, I found your code that could help me with combining into one folder and getting the correct dates on the files, only if I understood now to use it. Besides being able to make my way through understanding VBA and HTML codes, I'm clueless with actual coding. I see your instructions, but I do not understand past downloading your file and making sure there are only numbered folder. For example, what does step 2 mean? Do I type step 4 in Terminal? If so, how exactly do I type it? Is there any chance you could send me step by step instructions for the coding illiterate? If not, I understand, but I'd figured it didn't hurt to ask as it would be AMAZING if I got it to work. I'm on a Mac running 10.10.3 and confirmed I have Python 2.7.6 installed. Thank you so much for taking the time to read this! Lindsay

Grouping screenshots by aspect ratio

I don't know how far outside the scope this is (or wether it is possible at all), but it's something I'm currently in need of after having run Takeout so I might as well put it out there: since most of my Google Photos were uploaded from a smartphone, there's an inane amount of screenshots that I'll want to clear out.

If there was a way for the script to recognise and group together screenshots (by looking at the aspect ratio), it would be awesome!

Running script - error

I am trying to run the script as follows:
`python3 ./setup.py -i photos -o photos-output
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help

error: option -i not recognized`

Exception when time data in exif has 24 as midnight instead of 00

Traceback

.\photos/2016-01-25 #2/IMG_20160126_004214.jpg
Error setting creation date from string:
time data '2016:01:26 24:48:30' does not match format '%Y:%m:%d %H:%M:%S'
Traceback (most recent call last):
  File ".\GooglePhotosTakeoutHelper\google_photos_takeout_helper\__main__.py", line 387, in <module>
    main()
  File ".\GooglePhotosTakeoutHelper\google_photos_takeout_helper\__main__.py", line 353, in main
    for_all_files_recursive(
  File ".\GooglePhotosTakeoutHelper\google_photos_takeout_helper\__main__.py", line 99, in for_all_files_recursive
    for_all_files_recursive(file, file_function, folder_function, filter_fun)
  File ".\GooglePhotosTakeoutHelper\google_photos_takeout_helper\__main__.py", line 102, in for_all_files_recursive
    file_function(dir, file)
  File ".\GooglePhotosTakeoutHelper\google_photos_takeout_helper\__main__.py", line 274, in fix_metadata
    set_creation_date_from_exif(file)
  File ".\GooglePhotosTakeoutHelper\google_photos_takeout_helper\__main__.py", line 241, in set_creation_date_from_exif
    set_creation_date_from_str(file, datetime_str)
  File ".\GooglePhotosTakeoutHelper\google_photos_takeout_helper\__main__.py", line 226, in set_creation_date_from_str
    _os.utime(file, (timestamp, timestamp))
UnboundLocalError: local variable 'timestamp' referenced before assignment

Proposed patch

diff --git a/google_photos_takeout_helper/__main__.py b/google_photos_takeout_helper/__main__.py
index 34efe73..d366560 100644
--- a/google_photos_takeout_helper/__main__.py
+++ b/google_photos_takeout_helper/__main__.py
@@ -220,10 +220,10 @@ def main():
                 str_datetime,
                 '%Y:%m:%d %H:%M:%S'
             ).timestamp()
+            _os.utime(file, (timestamp, timestamp))
         except Exception as e:
             print('Error setting creation date from string:')
             print(e)
-        _os.utime(file, (timestamp, timestamp))


     def set_creation_date_from_exif(file):

I'm not sure why the parsing doesn't work but after the above change at least the program doesn't crash. As expected, the error is still printed out.

.\photos/2016-01-25 #2/IMG_20160126_004214.jpg
Error setting creation date from string:
time data '2016:01:26 24:48:30' does not match format '%Y:%m:%d %H:%M:%S'
.\photos/2016-02-04/IMG_0082.PNG

I should note that the picture was copied to the output directory, even with the error.

Output folder empty

Hi, I installed the GPTH via pip on a Windows 10 system.
I used it with 2 completely different folders (as input/output). This worked perfectly.
Then I used "C:\Users\xxx\Pictures\JFN" as input and "C:\Users\xxx\JF" as ouput. I.e. the output folder name was in part identical with the input folder name - but just shorter.
And to my surprise: no photos were copied to the folder name (the log did not mention any problem). I tried the same with the--divide-to-dates option, but with the same result.
This could be a bug (not a very serious one I admit), but if somebody else could verify this I would consider it as bug.

Titus

struct.error

I am a total noob, please forgive me. The script runs for a while until I get this error:

File "c:\users\xy\appdata\local\programs\python\python39\lib\site-packages\piexif_load.py", line 108, in get_ifd_dict
tag_count = struct.unpack(self.endian_mark + "H",
struct.error: unpack requires a buffer of 2 bytes

I hope someone can help me, I want to finally get away from Google Photos.

Make the script automation-friendly

There are probably some people out there who would want to use this script as a part of some automated backup/archive process

To make it easier for them, we could:

  • add tests
  • add flag option to skip asking about albums (those need to be fixed anyway)
  • skip file hash calculating

Duplicate hashing

I would like to suggest using a hash to determine duplicates of a file rather than the filesize as this can have false positives, especially dealing with the number of photos many people typically store in these services.

md5 is faster than sha in most cases so I would recommend we use this.

>>> image_file = open('2017-11-11/20171111_170331.jpg').read()
>>> image_file2 = open('Saturday in Rockford/20171111_170331.jpg').read()
>>> hashlib.md5(image_file).hexdigest() == hashlib.md5(image_file2).hexdigest()
True

Thoughts?

AttributeError: 'PosixPath' object has no attribute 'read_text'

Cannot install the version 2.0.0rc1 due to error AttributeError: 'PosixPath' object has no attribute 'read_text'

➜  ~ pip install -U google-photos-takeout-helper==2.0.0rc1
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Collecting google-photos-takeout-helper==2.0.0rc1
  Using cached google-photos-takeout-helper-2.0.0rc1.tar.gz (14 kB)
    ERROR: Command errored out with exit status 1:
     command: /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/w5/y72p307x293dfngw87fm1m9w0000gn/T/pip-install-YHKLMj/google-photos-takeout-helper/setup.py'"'"'; __file__='"'"'/private/var/folders/w5/y72p307x293dfngw87fm1m9w0000gn/T/pip-install-YHKLMj/google-photos-takeout-helper/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/w5/y72p307x293dfngw87fm1m9w0000gn/T/pip-pip-egg-info-0x10iB
         cwd: /private/var/folders/w5/y72p307x293dfngw87fm1m9w0000gn/T/pip-install-YHKLMj/google-photos-takeout-helper/
    Complete output (5 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/w5/y72p307x293dfngw87fm1m9w0000gn/T/pip-install-YHKLMj/google-photos-takeout-helper/setup.py", line 6, in <module>
        README = (HERE/"README.md").read_text()
    AttributeError: 'PosixPath' object has no attribute 'read_text'
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
➜  ~ which python  
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
➜  ~ which pip   
/Library/Frameworks/Python.framework/Versions/2.7/bin/pip

Use hashing to determine albums.

With the hashing solution , we could perform a duplicate detection with the files we currently generate, with the files in albums.

>>> image_file = open('2017-11-11/20171111_170331.jpg').read()
>>> image_file2 = open('Saturday in Rockford/20171111_170331.jpg').read()
>>> hashlib.md5(image_file).hexdigest() == hashlib.md5(image_file2).hexdigest()
True

If we find a match, we can create a file called albums.json or something to that effect and use the current directory to pull the album name. The json could look something like this:

[
  {
    "Saturday in Rockford": [
      "20171111_170331.jpg",
      "mySecondIMG2.png",
       ....
    ]
  }, 
  ...
]

As much as I would hate to introduce yet another json file that we worked hard to remove from takeout folder, this is required since we can't assume an image belongs to only one album and just stick them in there. I'm open to hearing other solutions here though.

An alternative would be to just create album folders and allow duplicates in those folders.

Progress bar

So right now, the script just prints every file while fixing it's metadata, and when something bad happens, the last printed path is the photo that caused problem

My idea: wrap fix_metadata in a try-catch all, then inside catch print the photo path and then re-throw previously caught exception (because dummly catching and ignoring all exceptions would be bad)

Also adding progress bars to removing duplicates and coping would be nice

Windoza standalone .exe?

Hello,
Is it possible to have a standalone exe?
I don't have Python installed on my windows machine and probably neither does the average windows user.

PS. Looking forward to the new release! Keep it up! 👍

Keep manually created folder structure not just dates

Hi,

I have a lot of manually created folders. Google exports the photos duplicated once on the manually created folders on Google Photos app and an other one on the "Photos from " folder.

I would like to be able to use this script and keep the original folder structure, not just the date based folders as currently implemented. Any tips on where should I look or start to modify the script accordingly ?

Script terminates unexpectedly

here is a snippet of the code just before it errors


./Takeout/Google Photos/2018-12-16/Screenshot_20181216-162951_eBay.jpg
./Takeout/Google Photos/2018-12-16/20181216_140153.jpg
./Takeout/Google Photos/2018-12-16/20181216_140030.jpg
./Takeout/Google Photos/2018-12-16/Screenshot_20181216-204929_Amazon Shopping.jpg
./Takeout/Google Photos/2018-12-16/IMG_20181216_082603.jpg
./Takeout/Google Photos/2019-05-02/IMG_20190502_203702.jpg
./Takeout/Google Photos/2014-08-22/20140822_191207.jpg
./Takeout/Google Photos/2014-08-22/20140822_191219.jpg
./Takeout/Google Photos/2014-08-22/20140822_190221.jpg
./Takeout/Google Photos/2014-08-22/20140822_190135.jpg
./Takeout/Google Photos/2018-11-30/IMG_20181130_155507.jpg
./Takeout/Google Photos/2018-11-30/IMG_20181130_134550.jpg
./Takeout/Google Photos/2018-11-30/20181130_125101.jpg
./Takeout/Google Photos/2018-11-30/20181130_125109.jpg
./Takeout/Google Photos/2018-11-30/20181130_125049.jpg
./Takeout/Google Photos/2018-11-30/IMG_20181130_155529.jpg
./Takeout/Google Photos/2018-11-30/20181130_125116.jpg
./Takeout/Google Photos/2018-07-29/20180729_105716.jpg
./Takeout/Google Photos/2020-07-27/20200727_163130.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_125202.jpg
./Takeout/Google Photos/2020-07-27/20200727_141726.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_163114.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_125204.jpg
./Takeout/Google Photos/2020-07-27/20200727_163055.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_125418.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_125432(0).jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_163131.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_162926.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_163230.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_115029_03.jpg
./Takeout/Google Photos/2020-07-27/20200727_115029_04.jpg
./Takeout/Google Photos/2020-07-27/20200727_163115.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_125432.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_115029_07.jpg
./Takeout/Google Photos/2020-07-27/Screenshot_20200726-205805_Facebook.jpg
./Takeout/Google Photos/2020-07-27/20200727_163049.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_141732.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_162917.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_163333.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_162859.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_163058.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_150035.jpg
./Takeout/Google Photos/2020-07-27/20200727_115029_08.jpg
./Takeout/Google Photos/2020-07-27/20200727_185611.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_163412.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_115029_01.jpg
./Takeout/Google Photos/2020-07-27/20200727_125151.jpg
./Takeout/Google Photos/2020-07-27/20200727_125158.jpg
./Takeout/Google Photos/2020-07-27/20200727_210649.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_125421.jpg
Couldnt insert exif!
"dump" got wrong type of exif value.
41729 in Exif IFD. Got as <class 'int'>.
./Takeout/Google Photos/2020-07-27/20200727_163216.jpg
Traceback (most recent call last):
  File "/usr/local/bin/google-photos-takeout-helper", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/dist-packages/google_photos_takeout_helper/__main__.py", line 356, in main
    filter_fun=lambda f: (is_photo(f) or is_video(f))
  File "/usr/local/lib/python3.7/dist-packages/google_photos_takeout_helper/__main__.py", line 99, in for_all_files_recursive
    for_all_files_recursive(file, file_function, folder_function, filter_fun)
  File "/usr/local/lib/python3.7/dist-packages/google_photos_takeout_helper/__main__.py", line 99, in for_all_files_recursive
    for_all_files_recursive(file, file_function, folder_function, filter_fun)
  File "/usr/local/lib/python3.7/dist-packages/google_photos_takeout_helper/__main__.py", line 99, in for_all_files_recursive
    for_all_files_recursive(file, file_function, folder_function, filter_fun)
  File "/usr/local/lib/python3.7/dist-packages/google_photos_takeout_helper/__main__.py", line 102, in for_all_files_recursive
    file_function(dir, file)
  File "/usr/local/lib/python3.7/dist-packages/google_photos_takeout_helper/__main__.py", line 274, in fix_metadata
    set_creation_date_from_exif(file)
  File "/usr/local/lib/python3.7/dist-packages/google_photos_takeout_helper/__main__.py", line 230, in set_creation_date_from_exif
    exif_dict = _piexif.load(file)
  File "/usr/local/lib/python3.7/dist-packages/piexif/_load.py", line 53, in load
    exif_dict["1st"] = exifReader.get_ifd_dict(pointer, "1st")
  File "/usr/local/lib/python3.7/dist-packages/piexif/_load.py", line 109, in get_ifd_dict
    self.tiftag[pointer: pointer+2])[0]
struct.error: unpack requires a buffer of 2 bytes

Unit Tests

First of all thank you very much for the great work so far! 🚀

I've got a huge collection of Google Photos which I'd like to pipe through the takeout helper. Initial tests revealed that my takeout contains many edge cases which the helper does not handle correctly yet. I'd be super happy to contribute, but I'd afraid to break existing functionality.

Are there any plans to bring some high level unit test structure into place? Maybe at a full scale integration level first? Something simple like a set of predefined input and reference output folders?

Doesn't even need to be automated in a CI, local execution would already be a win I think.

Photos taken before 01.01.1970

When there is a negativ time in epoche seconds in the json file, the script ends with an exception.
All dates before 01.01.1970 00:00:01 have a negative one, tho.

Not all photos present in yyyy-mm--dd named folders

The instructions indicate

Before running this script, you need to cut out all folders that aren't dates
That is, all album folders, and everything that isn't named
2016-06-16 (or with "#", they are good)
See README.md or --help on why
(Don't worry, your photos from albums are already in some date folder)

This is however not true in my experience. I have exported photos from two different Google Accounts and each contains hundreds of photos that exist in custom named album folders which do not exist in any of the folders named yyyy-mm-dd.

Feature Request to Delete Originals

Could there be an option to delete the original file so that after running you are left with the new folder of "corrected files" and the old folder of "error files".

Confusing options and possibly wrong branch logic

There's some code smell to this and I want to make sure this is actually the logic we want.
What if args.dont_fix = True and args.dont_copy=False and args.divide_to_dates=True?

We would hit the elif branch and call copy_to_target when args.divide_to_dates=True which doesn't seem to make sense.

    if not args.dont_fix:
        for_all_files_recursive(
            dir=PHOTOS_DIR,
            file_function=fix_metadata,
            filter_fun=lambda f: (is_photo(f) or is_video(f))
        )
    if not args.dont_fix and not args.dont_copy and args.divide_to_dates:
        for_all_files_recursive(
            dir=PHOTOS_DIR,
            file_function=copy_to_target_and_divide,
            filter_fun=lambda f: (is_photo(f) or is_video(f))
        )
    elif not args.dont_copy:
        for_all_files_recursive(
            dir=PHOTOS_DIR,
            file_function=copy_to_target,
            filter_fun=lambda f: (is_photo(f) or is_video(f))
        )

Perhaps nesting the if logic under the first if was what was intended?

    if not args.dont_fix:
        for_all_files_recursive(
            dir=PHOTOS_DIR,
            file_function=fix_metadata,
            filter_fun=lambda f: (is_photo(f) or is_video(f))
        )
        if not args.dont_copy and args.divide_to_dates:
            for_all_files_recursive(
                dir=PHOTOS_DIR,
                file_function=copy_to_target_and_divide,
                filter_fun=lambda f: (is_photo(f) or is_video(f))
            )
        elif not args.dont_copy:
            for_all_files_recursive(
                dir=PHOTOS_DIR,
                file_function=copy_to_target,
                filter_fun=lambda f: (is_photo(f) or is_video(f))
            )

If this actually is correct then the args.dont_copy becomes redundant as args.dont_copy will always be the same as args.dont_fix and you could have this.

    if not args.dont_fix:
        for_all_files_recursive(
            dir=PHOTOS_DIR,
            file_function=fix_metadata,
            filter_fun=lambda f: (is_photo(f) or is_video(f))
        )
        if args.divide_to_dates:
            for_all_files_recursive(
                dir=PHOTOS_DIR,
                file_function=copy_to_target_and_divide,
                filter_fun=lambda f: (is_photo(f) or is_video(f))
            )
        else:
            for_all_files_recursive(
                dir=PHOTOS_DIR,
                file_function=copy_to_target,
                filter_fun=lambda f: (is_photo(f) or is_video(f))
            )

To be honest I don't think we should expose these as they are a bit confusing to anyone who can't understand the code, they make the code harder to understand, and as mentioned in the arguments themselves they seem a bit pointless.
--dont-fix

Don't try to fix Dates. I don't know why would you not want to do that, but ok

and
--dont-copy

Don't copy files to target folder. I don't know why would you not want to do that, but ok

If we removed these as options we could simply have this much clearer bit of code to read and people won't be scared of all these confusing levers they maybe aren't sure if they should pull.

        for_all_files_recursive(
            dir=PHOTOS_DIR,
            file_function=fix_metadata,
            filter_fun=lambda f: (is_photo(f) or is_video(f))
        )
        if args.divide_to_dates:
            for_all_files_recursive(
                dir=PHOTOS_DIR,
                file_function=copy_to_target_and_divide,
                filter_fun=lambda f: (is_photo(f) or is_video(f))
            )
        else:
            for_all_files_recursive(
                dir=PHOTOS_DIR,
                file_function=copy_to_target,
                filter_fun=lambda f: (is_photo(f) or is_video(f))
            )

--skip-extras and --skip-extras-harder , while the # Oh yeah, skip my extras harder daddy comment is hilarious, also seems rather confusing to expose as an option and it's always better to err on the side on no data loss. Someone not able to read the code well may be tempted to use this option and be sad when things are gone.

Personal roadmap for Takeout Helper

I have a goal to process 196 separate takeout zipfiles. Each file is 2GB and contains only photos/videos.
The roadmap that I have envisioned is to point TakeoutHelper at the base directory containing the takeout zips and then the script would locate all the takeout zips, unzip each one, process the files inside and give me progress reports as it runs.

I'm posting this here to solicit help and ideas so please add your thoughts.

MOV Couldn't insert exif! and other errors

test_folder_sub
MOV files are not updating the date/time.

Background:
Windows 10 w/Latest Updates
Backup taken from Google Takeout on 12/1/2020 of ALL Google Photos, Including Albums
All files unzipped to a common directory
Album folders deleted (including contents)
Only folders remaining are of yyyy-mm-dd naming convention and left unchanged from their original zip extraction
Installed Python3 including PATH updates
With administrator command prompt, ran "pip3 install -U google-photos-takeout-helper" without issue
With administrator command prompt, ran "python3 -m google_photos_takeout_helper -i c:\test -o c:\testout"

I got a ton of errors, no MOV files were updated.
Screenshots and logs are attached. Please help.
cmd_capture
test_folder
testout_folder
date_from_folder_name.txt
failed_inserting_exif.txt

Script crash - get_date_str_from_json

Hi there,

I was running the takeout helper for the first time and it crashed with the following stack trace:

  File "c:\python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
           │         │     └ {'__name__': '__main__', '__doc__': None, '__package__': '', '__loader__': <zipimporter object "C:\Python39\Scripts\google-ph...
           │         └ <code object <module> at 0x000002489C300710, file "C:\Python39\Scripts\google-photos-takeout-helper.exe\__main__.py", line 2>
           └ <function _run_code at 0x000002489BFBC310>

  File "c:\python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
         │     └ {'__name__': '__main__', '__doc__': None, '__package__': '', '__loader__': <zipimporter object "C:\Python39\Scripts\google-ph...
         └ <code object <module> at 0x000002489C300710, file "C:\Python39\Scripts\google-photos-takeout-helper.exe\__main__.py", line 2>

> File "C:\Python39\Scripts\google-photos-takeout-helper.exe\__main__.py", line 7, in <module>

  File "c:\python39\lib\site-packages\google_photos_takeout_helper\__main__.py", line 649, in main
    for_all_files_recursive(
    └ <function main.<locals>.for_all_files_recursive at 0x000002489E2AD9D0>

  File "c:\python39\lib\site-packages\google_photos_takeout_helper\__main__.py", line 146, in for_all_files_recursive
    file_function(file)
    │             └ WindowsPath('C:/Takeout/Photos/Photos from 1969/PIC_20200503012445234_raw.jpg')
    └ <function main.<locals>.<lambda> at 0x000002489E2B2EE0>

  File "c:\python39\lib\site-packages\google_photos_takeout_helper\__main__.py", line 651, in <lambda>
    file_function=lambda f: _walk_with_tqdm(fix_metadata(f), _metadata_bar),
                         │  │               │            │   └ <tqdm.std.tqdm object at 0x000002489E3309D0>
                         │  │               │            └ WindowsPath('C:/Takeout/Photos/Photos from 1969/PIC_20200503012445234_raw.jpg')
                         │  │               └ <function main.<locals>.fix_metadata at 0x000002489E2B25E0>
                         │  └ <function main.<locals>._walk_with_tqdm at 0x000002489E2B2820>
                         └ WindowsPath('C:/Takeout/Photos/Photos from 1969/PIC_20200503012445234_raw.jpg')

  File "c:\python39\lib\site-packages\google_photos_takeout_helper\__main__.py", line 570, in fix_metadata
    date = get_date_str_from_json(google_json)
           │                      └ {'title': 'PIC_20200503012445234_raw.jpg', 'description': '', 'imageViews': '0', 'creationTime': {'timestamp': '15884690...
           └ <function main.<locals>.get_date_str_from_json at 0x000002489E2B23A0>

  File "c:\python39\lib\site-packages\google_photos_takeout_helper\__main__.py", line 445, in get_date_str_from_json
    return _datetime.fromtimestamp(
           │         └ <method 'fromtimestamp' of 'datetime.datetime' objects>
           └ <class 'datetime.datetime'>

OSError: [Errno 22] Invalid argument

Below is the PIC_20200301142213234_raw.jpg.json file it failed to process:

{
  "title": "PIC_20200301142213234_raw.jpg",
  "description": "",
  "imageViews": "0",
  "creationTime": {
    "timestamp": "1588469085",
    "formatted": "3 May 2020, 01:24:45 UTC"
  },
  "photoTakenTime": {
    "timestamp": "-21600",
    "formatted": "31 Dec 1969, 18:00:00 UTC"
  },
  "geoData": {
    "latitude": 0.0,
    "longitude": 0.0,
    "altitude": 0.0,
    "latitudeSpan": 0.0,
    "longitudeSpan": 0.0
  },
  "geoDataExif": {
    "latitude": 0.0,
    "longitude": 0.0,
    "altitude": 0.0,
    "latitudeSpan": 0.0,
    "longitudeSpan": 0.0
  },
  "googlePhotosOrigin": {
    "mobileUpload": {
      "deviceFolder": {
        "localFolderName": "Camera"
      },
      "deviceType": "ANDROID_TABLET"
    }
  }
}

Perhaps the error with get_date_str_from_json is caused by photoTakenTime.timestamp being a negative Epoch value? Looking through the folders however, my camera photos are over a wide range of years, seemingly at random. For instance, the photos I took immediately before and after this were placed in the "Photos from 1980" and "Photos from 2001" folders respectively! :-D

Looking at the filename (20200301142213234) that's the same datetime as the creationTime.timestamp value but I'm not sure why as the former is when it was created on the phone and the former would have have been the date is was created on Google Drive when it was uploaded.

Thanks in advance for any help you can give.

Does it run in macOS?

I'm not a developer and I only have macOS, does it work? I tried to run it in terminal, but it says this:

WANGYIFANGCOM-iMac:~ wifi$ pip install -U google-photos-takeout-helper Traceback (most recent call last): File "/usr/local/bin/pip", line 11, in <module> load_entry_point('pip==21.1.3', 'console_scripts', 'pip')() File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 489, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2843, in load_entry_point return ep.load() File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2434, in load return self.resolve() File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2440, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/Library/Python/2.7/site-packages/pip-21.1.3-py2.7.egg/pip/__init__.py", line 1, in <module> from typing import List, Optional ImportError: No module named typing

HEIC Support for EXIF data

Hello,
is it possible to to add heic support? I used for some years an iPhone and the the photos are in heic format. But the script supports only jpg and tif.

Process kills itself without error message.

First off, huge thanks for this script! Hoping I can get it working for my fairly massive dataset. Last few lines of output:

There was literally no option to set date on /*snip*/IMG_0077.MOV
There was literally no option to set date on /*snip*/IMG_0864.MOV
There was literally no option to set date on /*snip*/IMG_4031.MOV
There was literally no option to set date on /*snip*/3DCC2641-963F-411E-A2A4-2A0D53D8527A-7119-00000.png
There was literally no option to set date on /*snip*/IMG_0027(1).MOV
There was literally no option to set date on /*snip*/IMG_0238.MOV
  2%|█▌                          | 1556/77872 [04:17<50:10, 25.35files/s][1]    19579 killed     google-photos-takeout-helper -i  -o  --divide-to-dates
➜  Takeout

Interestingly, the destination folder is still empty despite the script having processed 1556 items.

Any suggestions on how to troubleshoot?

Thanks!

Files with paranthesis e.g. (1) have differently named JSON files and titles

I have the following files:

  • IMG_4081(1).jpg
  • IMG_4081.JPG(1).json

Notice how not only the 'jpg' is uppercase for the json (fixed #46) but also the (1) is placed in the wrong location. To bring this one step further, this is the content of the json:

{
  "title": "IMG_4081.JPG",
  "description": "",
  "imageViews": "0",
  "creationTime": {
    "timestamp": "1432899863",
    "formatted": "May 29, 2015, 11:44:23 AM UTC"
  },
  ...
}

The title does not have the (1) at all. A big portion of my library has this issue. Is there something wrong with my export or is this yet another annoyance in takeouts?

To be clear, this happens with files that are not duplicates but probably just happened to have the same name upon upload.

Just look at this fun mess:
image

Invalid Name

Hi,

This my be my error, but I cannot seem to work through this. Below is the error thrown. It isn't singled out to this file. I previously had this error, deleted the file, and reran and had the same error on a different file.

/volume1/public/takeout/1main/Takeout/Google Photos/kbday/IMG_20190203_163316.jpg
/volume1/public/takeout/1main/Takeout/Google Photos/kbday/IMG_20181230_110012.jpg
/volume1/public/takeout/1main/Takeout/Google Photos/kbday/MVIMG_20190218_162639.jpg
/volume1/public/takeout/1main/Takeout/Google Photos/kbday/IMG_20190214_122032.jpg
/volume1/public/takeout/1main/Takeout/Google Photos/kbday/IMG_20190313_071319.jpg
/volume1/public/takeout/1main/Takeout/Google Photos/kbday/IMG_20190313_202224.jpg
Traceback (most recent call last):
  File "/var/services/homes/admin42/.local/bin/google-photos-takeout-helper", line 8, in <module>
    sys.exit(main())
  File "/var/services/homes/admin42/.local/lib/python3.8/site-packages/google_photos_takeout_helper/__main__.py", line 570, in main
    for_all_files_recursive(
  File "/var/services/homes/admin42/.local/lib/python3.8/site-packages/google_photos_takeout_helper/__main__.py", line 113, in for_all_files_recursive
    if filter_fun(file):
  File "/var/services/homes/admin42/.local/lib/python3.8/site-packages/google_photos_takeout_helper/__main__.py", line 573, in <lambda>
    filter_fun=lambda f: (is_photo(f) or is_video(f))
  File "/var/services/homes/admin42/.local/lib/python3.8/site-packages/google_photos_takeout_helper/__main__.py", line 133, in is_photo
    plain_file = file.with_name(_re.sub(search, '.', str(file)))
  File "/var/packages/py3k/target/usr/local/lib/python3.8/pathlib.py", line 847, in with_name
    raise ValueError("Invalid name %r" % (name))
ValueError: Invalid name '/volume1/public/takeout/1main/Takeout/Google Photos/kbday/MVIMG_20190427_154630.jpg'

What to do with unsorted files?

More a question, than an issue:

I really appreciate all the heavy lifting this script does. I'm just puzzled by what to do with the folder of unsorted files. Is there any way to find out what the dates were for them?

Enforcing python version in setup.py

Please enforce python version 3.6 for the f-strings.

import sys if sys.version_info < (3,6): sys.exit('Sorry, Python < 3.6 is not supported')

thx

Permission denied (Errno 13)

Hey there

I am trying to get the Takeout Helper to work, but ran into some issue. Here's the log:

2021-05-12 19:32:04.785 | INFO     | __main__:main:99 - Heeeere we go!
2021-05-12 19:32:04.800 | INFO     | __main__:main:655 - Counting how many input files we have ahead...
2021-05-12 19:32:08.516 | INFO     | __main__:main:659 - Input files: 3195
2021-05-12 19:32:08.516 | INFO     | __main__:main:661 - =====================
2021-05-12 19:32:08.517 | INFO     | __main__:main:662 - Fixing files metadata and creation dates...
2021-05-12 19:32:09.261 | DEBUG    | __main__:set_creation_date_from_exif:436 - Wrong date format in exif!
2021-05-12 19:32:09.262 | DEBUG    | __main__:set_creation_date_from_exif:437 - 2018:07:31 13:05:32
2021-05-12 19:32:09.262 | DEBUG    | __main__:set_creation_date_from_exif:438 - does not match '%Y:%m:%d %H:%M:%S'
2021-05-12 19:32:09.262 | DEBUG    | __main__:set_creation_date_from_exif:436 - Wrong date format in exif!
2021-05-12 19:32:09.263 | DEBUG    | __main__:set_creation_date_from_exif:437 - 2018:07:31 13:05:32
2021-05-12 19:32:09.263 | DEBUG    | __main__:set_creation_date_from_exif:438 - does not match '%Y:%m:%d %H:%M:%S'
2021-05-12 19:32:09.264 | DEBUG    | __main__:set_creation_date_from_exif:436 - Wrong date format in exif!
2021-05-12 19:32:09.264 | DEBUG    | __main__:set_creation_date_from_exif:437 - 2018:07:31 13:05:32
2021-05-12 19:32:09.264 | DEBUG    | __main__:set_creation_date_from_exif:438 - does not match '%Y:%m:%d %H:%M:%S'
2021-05-12 19:32:09.264 | DEBUG    | __main__:fix_metadata:580 - No correct DateTime in given exif
2021-05-12 19:32:09.265 | DEBUG    | __main__:fix_metadata:581 - No exif for C:\Users\fg\Desktop\takeout\Archiv\00005IMG_00005_BURST20180731130532.jpg
2021-05-12 19:32:09.287 | DEBUG    | __main__:set_file_geo_data:565 - Couldn't insert geo exif!
2021-05-12 19:32:09.288 | DEBUG    | __main__:set_file_geo_data:567 - [Errno 13] Permission denied: 'C:\\Users\\fg\\Desktop\\takeout\\Archiv\\00005IMG_00005_BURST20180731130532.jpg'
2021-05-12 19:32:09.313 | DEBUG    | __main__:set_file_exif_date:456 - Couldn't insert exif!
2021-05-12 19:32:09.314 | DEBUG    | __main__:set_file_exif_date:457 - [Errno 13] Permission denied: 'C:\\Users\\fg\\Desktop\\takeout\\Archiv\\00005IMG_00005_BURST20180731130532.jpg'
2021-05-12 19:32:09.317 | ERROR    | __main__:<module>:773 - WHHoopssiee! Looks like script crashed! This shouldn't happen, although it often does haha :P
Most of the times, you should cut out the last printed file (it should be down there somehwere) to some other folder, and continue

If this doesn't help, and it keeps doing this after many cut-outs, you can check out issues tab:
https://github.com/TheLastGimbus/GooglePhotosTakeoutHelper/issues 
to see if anyone has similar issue, or contact me other way:
https://github.com/TheLastGimbus/GooglePhotosTakeoutHelper/blob/master/README.md#contacterrors 

Traceback (most recent call last):

  File "google_photos_takeout_helper\__main__.py", line 412, in set_creation_date_from_str

PermissionError: [WinError 5] Zugriff verweigert: 'C:\\Users\\fg\\Desktop\\takeout\\Archiv\\00005IMG_00005_BURST20180731130532.jpg'


During handling of the above exception, another exception occurred:


Traceback (most recent call last):

> File "google_photos_takeout_helper\__main__.py", line 773, in <module>

  File "google_photos_takeout_helper\__main__.py", line 670, in main

  File "google_photos_takeout_helper\__main__.py", line 152, in for_all_files_recursive

  File "google_photos_takeout_helper\__main__.py", line 668, in <lambda>

  File "google_photos_takeout_helper\__main__.py", line 590, in fix_metadata

  File "google_photos_takeout_helper\__main__.py", line 416, in set_creation_date_from_str

ValueError: Error setting creation date from string: 2018:07:31 11:05:32

I don't have any experience with programming, so please forgive me if I'm making an obvious error. But looking at the log, I think it has something to do with the permissions, so I also tried running it in admin mode. That didn't work, either.

Thanks in advance for any help you can give.

Error running program

Why did this happen while running the program? I did everything in the instructions

Traceback (most recent call last): File "c:\users\20ben\appdata\local\programs\python\python37\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "c:\users\20ben\appdata\local\programs\python\python37\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "C:\Users\20ben\AppData\Local\Programs\Python\Python37\Scripts\google-photos-takeout-helper.exe\__main__.py", line 9, in <module> File "c:\users\20ben\appdata\local\programs\python\python37\lib\site-packages\google_photos_takeout_helper\__main__.py", line 565, in main filter_fun=lambda f: (is_photo(f) or is_video(f)) File "c:\users\20ben\appdata\local\programs\python\python37\lib\site-packages\google_photos_takeout_helper\__main__.py", line 125, in for_all_files_recursive for_all_files_recursive(file, file_function, folder_function, filter_fun) File "c:\users\20ben\appdata\local\programs\python\python37\lib\site-packages\google_photos_takeout_helper\__main__.py", line 128, in for_all_files_recursive file_function(dir, file) File "c:\users\20ben\appdata\local\programs\python\python37\lib\site-packages\google_photos_takeout_helper\__main__.py", line 478, in fix_metadata set_creation_date_from_exif(file) File "c:\users\20ben\appdata\local\programs\python\python37\lib\site-packages\google_photos_takeout_helper\__main__.py", line 331, in set_creation_date_from_exif exif_dict = _piexif.load(file) File "c:\users\20ben\appdata\local\programs\python\python37\lib\site-packages\piexif\_load.py", line 53, in load exif_dict["1st"] = exifReader.get_ifd_dict(pointer, "1st") File "c:\users\20ben\appdata\local\programs\python\python37\lib\site-packages\piexif\_load.py", line 109, in get_ifd_dict self.tiftag[pointer: pointer+2])[0] struct.error: unpack requires a buffer of 2 bytes

edit:
deleted photo that caused the problem

Setting right exif date failed

I have a takeout where setting the right exif failed for 17,366 files of 48,342 which is almost 36%. This seems high to me, does that mean that I don't have something installed correctly? Thanks.

Error: "unpack requires a buffer of 2 bytes"

Hello!

First of all, thank you for working so hard to make this tool work. I've been watching it since the beginning, waiting for your to add GPS and now that it's available in version 2, I've re-downloaded my Google Photos and tried running the Takeout Helper.

Unfortunately, twice it failed with the following error. I tried adding --user at the end, but the argument was not accepted.

Traceback (most recent call last):
  File "c:\programdata\anaconda3\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\programdata\anaconda3\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\ProgramData\Anaconda3\Scripts\google-photos-takeout-helper.exe\__main__.py", line 7, in <module>
  File "c:\programdata\anaconda3\lib\site-packages\google_photos_takeout_helper\__main__.py", line 570, in main
    for_all_files_recursive(
  File "c:\programdata\anaconda3\lib\site-packages\google_photos_takeout_helper\__main__.py", line 114, in for_all_files_recursive
    file_function(file)
  File "c:\programdata\anaconda3\lib\site-packages\google_photos_takeout_helper\__main__.py", line 494, in fix_metadata
    set_creation_date_from_exif(file)
  File "c:\programdata\anaconda3\lib\site-packages\google_photos_takeout_helper\__main__.py", line 343, in set_creation_date_from_exif
    exif_dict = _piexif.load(str(file))
  File "c:\programdata\anaconda3\lib\site-packages\piexif\_load.py", line 53, in load
    exif_dict["1st"] = exifReader.get_ifd_dict(pointer, "1st")
  File "c:\programdata\anaconda3\lib\site-packages\piexif\_load.py", line 108, in get_ifd_dict
    tag_count = struct.unpack(self.endian_mark + "H",
struct.error: unpack requires a buffer of 2 bytes

Running on WIndows 10 x64, Python 3.8.5

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.