#!/usr/bin/env python
# encoding: utf-8
"""
pull.py

Created by Gary Dusbabek on 2008-05-09.
Copyright (c) 2008 Gary Dusbabek.  All rights reserved.
"""
import sys
import datetime
import urllib, urllib2
import xml.etree.ElementTree as et
import markup

class pull:
	def get_recent_songs_xml(self, user):
		"""grabs the recent songs and returns a dict of info"""
		url = 'http://ws.audioscrobbler.com/1.0/user/' + user + '/recenttracks.xml'
		children = et.parse(urllib2.urlopen(url)).getroot().getchildren()
		songs = []
		count = 0
		for track in children:
			if count > 10:
				break
			trackinfo = {}
			trackinfo['track'] = track.find('name').text
			trackinfo['artist.mbid'] = track.find('artist').get('mbid')
			trackinfo['artist'] = track.find('artist').text
			trackinfo['album.mbid'] = track.find('album').get('mbid');
			trackinfo['album'] = track.find('album').text
			trackinfo['date'] = str(datetime.datetime.fromtimestamp(float(track.find('date').get('uts'))))
			trackinfo['utc'] = track.find('date').get('uts')
			songs.append(trackinfo)
			count = count + 1
		return songs
		
	def songs_to_html_table(self,songs):
		page = markup.page()
		page.div(id_='dribble')
		page.table()
		page.tr()
		page.th('Song')
		page.th('Artist')
		page.th('Album')
		page.th('Played')
		page.tr.close()
		for track in songs:
			self.row(page,track)
		page.table.close()
		page.div.close()
		return str(page)
	
	def row(self,page,track):
		page.tr()
		page.td(track['track'])
		if len(track['artist.mbid']) > 0:
			page.td()
			page.a(track['artist'],href='http://musicbrainz.org/artist/'+track['artist.mbid']+'.html')
			page.a.close()
			page.td.close()
		else:
			page.td(track['artist'])
		if len(track['album.mbid']) > 0:
			page.td()
			page.a(track['album'],href='http://musicbrainz.org/release/'+track['album.mbid']+'.html')
			page.a.close()
			page.td.close()
		else:
			page.td(track['album'])
		page.td(track['date'])
		page.tr.close()
	
	def html_to_file(self,html,fn):
		outfile = open(fn,'w')
		outfile.write(html)
		outfile.close()
	
pull = pull()
songs = pull.get_recent_songs_xml('gdusbabek')
html = pull.songs_to_html_table(songs)
pull.html_to_file(html,'/home/garyd/public_html/songs_table.html')
#pull.html_to_file(html,'songs_table.html')
