import os, sys
from shutil import copyfileobj
from urllib import urlopen
from xml.etree import ElementTree as ET
if len(sys.argv) != 2:
print >> sys.stderr, "Pass tumblr name as argument"
sys.exit()
tumblr_name = sys.argv[1]
api_endpoint = 'http://%s.tumblr.com/api/read' % tumblr_name
start = 0
num = 50
post_count = 1
while post_count:
resp = urlopen("%s?type=photo&start=%s&num=%s" % (api_endpoint, start, num))
content = resp.read()
tree = ET.fromstring(content)
post_tags = tree.findall(".//post")
post_count = len(post_tags)
for post_tag in post_tags:
post_id = post_tag.attrib['id']
post_date = post_tag.attrib['date-gmt'].split(" ")[0]
outname = "%s-%s-%s.jpeg" % (tumblr_name, post_date, post_id)
if os.path.exists(outname):
print "%s already downloaded" % outname
continue
for photo_tag in post_tag.findall(".//photo-url"):
if photo_tag.attrib['max-width'] == "1280":
photo_url = photo_tag.text
resp = urlopen(photo_url)
outfile = open(outname, 'w')
copyfileobj(resp, outfile)
outfile.close()
print "Downloaded %s to %s" % (photo_url, outname)
start += num