#!/usr/bin/python API_KEY = "your_API_KEY" API_SECRET = "tour_API_SECRET" import flickrapi import os import sys import argparse from datetime import datetime LOG_FILE = "/var/log/flickrUp.log" TOKEN_CACHE = os.path.dirname(os.path.realpath(sys.argv[0])) + '/token' parser = argparse.ArgumentParser() parser.add_argument("folder", help="Path to the folder you want to upload") parser.add_argument("-l", "--log", help="No output, log to " + LOG_FILE) parser.add_argument("-t", "--tags", help="One or more tags for all the files (use quotes if needed)") params=parser.parse_args() FOLDER=os.path.abspath(params.folder) if params.tags: TAGS=params.tags else: TAGS="Upload by LNT " if params.log: LOG = params.log else: LOG = 0 if LOG: sys.stdout = open(LOG_FILE, 'a') flickr = flickrapi.FlickrAPI(API_KEY, API_SECRET, token_cache_location=TOKEN_CACHE) if not flickr.token_valid(perms='write'): print "Authentication required" # Get request token flickr.get_request_token(oauth_callback='oob') # Show url. Copy and paste it in your browser authorize_url = flickr.auth_url(perms=u'write') print(authorize_url) # Prompt for verifier code from the user verifier = unicode(raw_input('Verifier code: ')) print "Verifier:", verifier # Trade the request token for an access token print(flickr.get_access_token(verifier)) def upFile (fullname, indent): prefix = ' ' * indent filename = os.path.basename(fullname) print prefix + filename + ":", ext = '' filename_split = filename.split('.') if len(filename_split) == 2: ext = filename_split[1].lower() if ext in ['png', 'jpeg', 'jpg', 'avi', 'mp4', 'gif', 'tiff', 'mov', 'wmv', 'ogv', 'mpg', 'mp2', 'mpeg', 'mpe', 'mpv']: try: uploadResp = flickr.upload(filename=fullname, is_public=0, is_friend=0, is_family=1, tags=TAGS) photo_id = uploadResp.findall('photoid')[0].text print('OK! Flickr_id = ' + photo_id) return photo_id except: print("ERROR!") else: print("IGNORE!") return -1 def upFolder (Folder, indent): global TAGS prefix = ' ' * indent if not os.path.isdir(Folder): print prefix + Folder, "INVALID FOLDER!" return 1 params = {} params['tags']=TAGS photo_ids=[] TITLE = os.path.basename(os.path.normpath(Folder)) print prefix + "->> Uploading", Folder, 'to', '"'+TITLE+'" ...' for filename in os.listdir(Folder): if os.path.isfile(Folder + "/" + filename): photo_id = upFile(Folder + "/" + filename, indent) if photo_id != -1: photo_ids.append(photo_id) elif os.path.isdir(Folder + "/" + filename): upFolder(Folder + '/' + filename, indent + 1) #photo_ids??? else: print prefix + filename + ":", "INVALID FILE or FOLDER!" # Creating an album try: print prefix + "--- Creating album",'"' + TITLE + '":', resp = flickr.photosets.create(title=TITLE,primary_photo_id=photo_ids[0]) photoset_id = photoset_id = resp.findall('photoset')[0].attrib['id'] print 'OK! Album_id = ' + photoset_id del photo_ids[0] except: print "ERROR!" return 1 print prefix + "<<- Add photos to album", '"' + TITLE + '":', for photo_id in photo_ids: try: resp = flickr.photosets.addPhoto(photoset_id=photoset_id,photo_id=photo_id) except: print "ERROR!" return 1 print "OK!" #begin upFolder(FOLDER, 0) if LOG: sys.stdout.close()