Uploads de fotos no Flickr! usando API e Python

February 23, 2010

[Warning: This post is a backup recovery from my previous Wordpress blog. All content was automatically converted accessing a MySQL database using a Python script (details). Mostly are in Portuguese but if you are interest I can translate to English. If you found any problem dont’t hesitate to contact me in comments.]

A API (Interface de Programao de Aplicativo) do Flickr! bem documetada e rapidamente voc pode fazer bastante coisa. Se voc desejar usar a linguagem Python como mtodo de acesso, em linhas gerais voc precisa.

  1. Criar uma chave na API do Flickr!
  2. Download do binding para acesso a API (flickrapi)

Nas distribuies Linux, um dos jeitos de instalar usar o easy_install

easy_install flickrapi

Um modo eficaz para fazer o upload das fotos no servio seria um script que varre e submete todas as imagens, por exemplo, de uma pasta definida. O exemplo abaixo recebe como parmetro um diretrio e busca por todos os arquivos com extenso .jpg. A funo status apenas para mostrar o andamento do upload e executada como uma chamada callback no mtodo flickr.upload(). Nos meus testes, precisei pegar o nmero definido na varivel token, antes, executando na interface de linha de comando do Python os seguintes passos:

>>> api_key = ""
>>> secret = ""
>>> username = ""
>>> flickr = flickrapi.FlickrAPI(api_key,secret,username)
>>> (token, frob) = flickr.get_token_part_one(perms="write")
>>> print token
>>> print frob
</pre>

Na hora o browser padro ir abrir e pedir para voc confirmar o uso do aplicativo.

# -*- coding: utf-8 -*-
#/bin/python 

import sys
import glob 
import flickrapi

api_key = ""
secret = ""
username = ""

token=""
frob=None

def status(progress, done):
	if done:
		print "Finished ;-)"
	else:
		print "At %s%%" % progress

def upload(photo):
	flickr.upload(photo, callback=status)

if __name__ == "__main__":
	
        flickr = flickrapi.FlickrAPI(api_key,secret,username)
        flickr.get_token_part_two((token,frob))

        photos = sys.argv[1]+"*.jpg"

	for photo in glob.glob(photos):
		print "Uploading: ",photo
		upload(photo)
</pre>

Um exemplo de uso:

python upload.py /Fotos
Utilize sua criatividade para extender essa idia e criar aplicativos que ensinem e facilite sua vida. :-)