# get flickr.py from http://jamesclarke.info/projects/flickr/tags2set.py

import sys, os, re, string
import os.path
import urllib2
import gzip
import flickr
flickr.API_KEY = '71ff0f738bba12d49a06210af8651eee'

comment_format="""<?xml version="1.0"?>
<Comment format="2.0"><Place></Place><Time>0</Time><Note>%s</Note><Keywords>%s</Keywords></Comment>
"""

tagstrip = re.compile("<[^>]*>")

def pull_photos_page(max_pages=2, **kw):

	photos = flickr.photos_search(**kw)

	if not os.path.exists('images/'):
		os.mkdir('images')

	for each in photos:
		url = None
		try: 
			url = each.getURL(size='Original', urlType='source')
		except flickr.FlickrError:
			url = each.getURL(size='Medium', urlType='source') 
	
		if not url:
			print "error getting url for %s" % each
			continue
		
		dirname = 'images/'+each.owner.username
		comment = "~/.gnome2/gthumb/comments/" + os.path.realpath("%s/%s.jpg.xml" % (dirname,each.id))

		comment = os.path.expanduser(comment)

		sys.stdout.flush()
		
		if(not os.path.exists(dirname+'/')):
			os.mkdir(dirname)
		sys.stdout.write('downloading %s/%s.jpg ....' % (dirname, each.id))
		sys.stdout.flush()
		fp = open("%s/%s.jpg" % (dirname, each.id), "w")
		fp.write(urllib2.urlopen(url).read())
		fp.close()
		
		# gthumb comment 

		if(not os.path.exists(os.path.dirname(comment))):
			os.makedirs(os.path.dirname(comment))
		
		desc = tagstrip.sub("", each.description)
		fp = gzip.open(os.path.realpath(comment), "w")
		commentdata = comment_format % (desc, string.join(
											map(lambda t: str(t.raw), 
												each.tags), ','))
												
		fp.write(commentdata)
		fp.close()
		sys.stdout.write("\x1b[60GOK\n")
	
	if len(photos) != 0:
		kw["page"] += 1
		if kw["page"] <= max_pages:
			pull_photos_page(max_pages, **kw)


pull_photos_page(tags='lca2006', sort='interestingness-desc', per_page=100, page=1,max_pages=3)
