diff --git a/flickrscripts.py b/flickrscripts.py index 9761511..8785ffa 100644 --- a/flickrscripts.py +++ b/flickrscripts.py @@ -1,4 +1,5 @@ import json +from hashlib import sha1 from os.path import expanduser import flickrapi @@ -15,6 +16,30 @@ def setup_flickr(api_key, api_secret): return flickr +def get_photo_signature(flickr, photo_id): + info = flickr.photos_getInfo(photo_id=photo_id).find('photo') + exif = flickr.photos_getExif(photo_id=photo_id).find('photo') + + if not info or not exif: + raise InvalidPhotoIdError(photo_id) + + return [ + info.get('originalformat'), info.find('owner').get('location'), + info.find('dates').get('taken') + ] + sorted( + (e.get('label'), e.get('tag'), e.get('tagspace'), e.get('tagspaceid'), + e.find('raw').text) for e in exif.findall('exif') + ) + + +def get_photo_sha1sum(flickr, photo_id): + return sha1(str(get_photo_signature(flickr, photo_id))) + + def get_flickr_from_rc_file(rc_file=expanduser('~/.flickrscripts.json')): rc_conf = json.load(open(rc_file)) return setup_flickr(rc_conf['APIKEY'], rc_conf['APISECRET']) + + +class InvalidPhotoIdError(ValueError): + pass