#!/usr/bin/python

from urllib2 import urlopen
import datetime, re, os

def getStrip(date):

	""" Fetch a Dilbert comic strip (in GIF or JPG format) for a specific date """

	daily = 'dilbert-%.4d%.2d%.2d' % (date.year, date.month, date.day)
	
	if os.access('%s.gif' % daily, os.F_OK) or \
	   os.access('%s.jpg' % daily, os.F_OK):
		print 'The comic strip for %.4d-%.2d-%.2d has already been fetched' % (date.year, date.month, date.day) 
		return

	url = 'http://www.dilbert.com/comics/dilbert/archive/%s.html' % daily
	print 'Fetching %s' % url
	html = urlopen(url).read()

	match = re.compile('/images/(dilbert\d+\.(?:gif|jpg))').search(html)
	if not match:
		print "Oops, couldn't determine the filename for this day's strip :("
		return

	print 'Total matches: %s' % len(match.groups())
	filename = match.group(1)
	print 'Filename: %s' % filename
	
	url = 'http://www.dilbert.com/comics/dilbert/archive/images/%s' % filename
	content = urlopen(url).read()

	file = open(filename, 'w')
	file.write(content)
	file.close()
	if 'gif' in filename:
		os.symlink(filename, '%s.gif' % daily)
	else:
		os.symlink(filename, '%s.jpg' % daily)
	
def getAll(days):
	
	today = datetime.date.today()
	start = today.toordinal() - days

	for i in range(start, start + days + 1):
		date = datetime.date.fromordinal(i)
		getStrip(date)

#getStrip(datetime.date(2004, 11, 17))
getAll(31)

