[PhotoFloat] python ValueError: time data '0000:00:00 00:00:00' does not match format '%Y:%m:%d %H:%M:%S

Dennis Ortsen dortsen at gmail.com
Tue Dec 16 21:08:15 CET 2014


Well, it was just a matter of time before I’d run into another image with faulty exif dates :-)

I applied your patch and re-ran the scanner and voila! It finished without problems!

Again: thank you very much!


Op 15 dec. 2014, om 23:39 heeft Dennis Ortsen <dortsen at gmail.com> het volgende geschreven:

> I’ve added more images, to find out they had the same issue, from that same camera. I already fixed those images with correct exif information. But looking at your code (I’m not a python expert) a try/catch would indeed stop the scanner from bailing out. I’m running the scanner at this moment and will certainly apply your patch at the next moment a faulty exif is encountered!
> 
> Thanks!
> 
> 
> Op 15 dec. 2014, om 22:57 heeft Tom Talpey <tom at talpey.com> het volgende geschreven:
> 
>> On 12/15/2014 4:43 PM, Dennis Ortsen wrote:
>>> To answer Tom’s reply
>>> 
>>>> The latest git has a fix for this, btw. When there is no date-taken
>>>> tag, it falls back to using the timestamp of the jpg. I don't think
>>>> the distros have picked this up.
>>>> 
>>>> This doesn't really have anything to do with auth (subject of thread).
>>> 
>>> I’ve cloned the git repo on december 11 (as outlined on
>>> http://git.zx2c4.com/PhotoFloat/about/). I see that the last commit on
>>> august 25 this year was meant to fix this. But it’s exactly this piece
>>> of code that python chokes on…
>> 
>> Oh, in fact I had the same issue, and hacked up this patch.
>> Maybe it will work for you?
>> 
>> diff --git a/scanner/PhotoAlbum.py b/scanner/PhotoAlbum.py
>> index fffe4ac..08a463f 100644
>> --- a/scanner/PhotoAlbum.py
>> +++ b/scanner/PhotoAlbum.py
>> @@ -309,14 +309,19 @@ class Photo(object):
>> 		correct_date = None;
>> 		if not self.is_valid:
>> 			correct_date = datetime(1900, 1, 1)
>> -		if "dateTimeOriginal" in self._attributes:
>> +		elif "dateTimeOriginal" in self._attributes:
>> 			correct_date = self._attributes["dateTimeOriginal"]
>> 		elif "dateTime" in self._attributes:
>> 			correct_date = self._attributes["dateTime"]
>> 		else:
>> 			correct_date = self._attributes["dateTimeFile"]
>> 		if isinstance(correct_date, unicode):
>> -			correct_date = datetime.strptime(correct_date, '%Y:%m:%d %H:%M:%S')
>> +			try:
>> +				correct_date = datetime.strptime(correct_date, '%Y:%m:%d %H:%M:%S')
>> +			except KeyboardInterrupt:
>> +				raise
>> +			except:
>> +				correct_date = datetime(1900, 1, 1)
>> 		return correct_date
>> 
>> 	def __cmp__(self, other):
>> 
>> 
>> 
>>> 
>>> Br.
>>> 
>>> Dennis
>>> 
>>> 
>>> 
>>> 
>>> Op 15 dec. 2014, om 22:37 heeft Dennis Ortsen <dortsen at gmail.com
>>> <mailto:dortsen at gmail.com>> het volgende geschreven:
>>> 
>>>> I’m starting a new thread on this topic since Tom Talpey made me aware
>>>> of continuing a thread which had nothing to do with the subject.
>>>> (Thanks Tom)
>>>> 
>>>> OK, this is what I mentioned to keep things clear and usable:
>>>> 
>>>> first mail message:
>>>> 
>>>> +++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>> Sadly I’ve run into an error, I’m not that much into python, perhaps
>>>> someone has encountered this before and can pinpoint me?
>>>> 
>>>> I’m running an updated Ubuntu 14.04.1 and a git clone of PhotoFloat
>>>> from this week. When running the scanner’s main.py, somewhere along
>>>> the process an image is found with a different date/time format:
>>>> 
>>>> 2014-12-11T23:11:48.670837   |  |--[thumbing]      IMG_3092.JPG -> 800px
>>>> 2014-12-11T23:11:49.343290   |  |--[thumbing]      IMG_3092.JPG -> 1024px
>>>> 2014-12-11T23:11:50.295564   |--[caching]       Liza
>>>> Traceback (most recent call last):
>>>> File "./main.py", line 23, in <module>
>>>>   main()
>>>> File "./main.py", line 17, in main
>>>>   TreeWalker(sys.argv[1], sys.argv[2])
>>>> File "/var/www/photofloat/scanner/TreeWalker.py", line 16, in __init__
>>>>   self.walk(self.album_path)
>>>> File "/var/www/photofloat/scanner/TreeWalker.py", line 55, in walk
>>>>   album.add_album(self.walk(entry))
>>>> File "/var/www/photofloat/scanner/TreeWalker.py", line 76, in walk
>>>>   album.cache(self.cache_path)
>>>> File "/var/www/photofloat/scanner/PhotoAlbum.py", line 68, in cache
>>>>   self._sort()
>>>> File "/var/www/photofloat/scanner/PhotoAlbum.py", line 51, in _sort
>>>>   self._photos.sort()
>>>> File "/var/www/photofloat/scanner/PhotoAlbum.py", line 323, in __cmp__
>>>>   date_compare = cmp(self.date, other.date)
>>>> File "/var/www/photofloat/scanner/PhotoAlbum.py", line 319, in date
>>>>   correct_date = datetime.strptime(correct_date, '%Y:%m:%d %H:%M:%S')
>>>> File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
>>>>   (data_string, format))
>>>> ValueError: time data '0000:00:00 00:00:00' does not match format
>>>> '%Y:%m:%d %H:%M:%S'
>>>> 
>>>> How can I find out which file(s) the scanner is choking on? Or perhaps
>>>> someone can tell me in which order the scanner processes file
>>>> (alphabetically, order by oldest or first folder/file)?
>>>> 
>>>> Thanks in advance.
>>>> 
>>>> For what it’s worth: I’ve added a second ip address to my ubuntu for
>>>> ease of Nginx configuration and thus it’s not accessible from the
>>>> Internet (I’ve port forwarded http and https on a different ip address).
>>>> 
>>>> ++++++++++++++++++++++++++++++++++++++++++++
>>>> 
>>>> Later I replied to the above with this message:
>>>> 
>>>> 
>>>> +++++++++++++++++++++++++++++++++++++++++++++
>>>> Should anyone encounter this in the future, I corrected the exif
>>>> information in the affected images (which was wrong anyway) using
>>>> exiftool.
>>>> 
>>>> (helpful links:
>>>> http://dimitar.me/change-the-date-and-time-or-any-other-exif-image-meta-data-of-pictures-with-ubuntu/ and
>>>> https://fitzcarraldoblog.wordpress.com/2011/08/17/exiftool-comes-to-the-rescue-when-i-need-to-fix-the-date-and-time-in-a-batch-of-photo-files/)
>>>> 
>>>> It turned out that certain images taken by a certain camera a few
>>>> years ago had a correct file creation time, but the Date/Time
>>>> Original fields were indeed set to all zeros.
>>>> 
>>>> I’m not a programmer, If I could, I’d like to help to include a check
>>>> when scanning the images that if such exif information was found, the
>>>> scanner would report them (on the running screen for instance, perhaps
>>>> a summary at the end) and skip the failing images.
>>>> 
>>>> +++++++++++++++++++++++++++++++++++++++++++++
>>>> 
>>>> 
>>>> And Tom Talpey answered the following on that:
>>>> 
>>>> +++++++++++++++++++++++++++++++++++++++++++++
>>>> The latest git has a fix for this, btw. When there is no date-taken
>>>> tag, it falls back to using the timestamp of the jpg. I don't think
>>>> the distros have picked this up.
>>>> 
>>>> This doesn't really have anything to do with auth (subject of thread).
>>>> +++++++++++++++++++++++++++++++++++++++++++++
>>>> 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> PhotoFloat mailing list
>>> PhotoFloat at lists.zx2c4.com
>>> http://lists.zx2c4.com/mailman/listinfo/photofloat
>>> 
>> _______________________________________________
>> PhotoFloat mailing list
>> PhotoFloat at lists.zx2c4.com
>> http://lists.zx2c4.com/mailman/listinfo/photofloat
> 



More information about the PhotoFloat mailing list