box-o-sand/oldstuff/flickrscripts/flickrscripts/common.py

50 lines
1.3 KiB
Python

import json
from hashlib import sha1
from os.path import expanduser
import flickrapi
def setup_flickr(api_key, api_secret):
flickr = flickrapi.FlickrAPI(api_key, api_secret)
token, frob = flickr.get_token_part_one(perms='write')
if not token:
raw_input("Press ENTER after you authorized this program")
flickr.get_token_part_two((token, frob))
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'])
def load_rc_file(rc_file=expanduser('~/.flickrscripts.json')):
return json.load(open(rc_file))
class InvalidPhotoIdError(ValueError):
pass