Ascolta «Grazie al Podcast»: il Podcast del NoWhereBlog!

Wednesday, November 1, 2006

Guida Tv in Python

Ho scoperto che all’indirizzo http://tv.lospettacolo.it si trova una bella guida tv formattata in una tabella; codice sporco a non finire, ma chissene, l’importante è che con una bella regex si cattura tutto.

Quale migliore occasione per dare un’occhiata al Python ? Non lo so.

#!/usr/bin/env python

CHANS = {

	'rai1'		: 10,	# rai uno
	'rai2'		: 21,	# rai due
	'rai3'		: 23,	# rai tre
	'rete4'		: 7,	# rete 4
	'canale5'	: 1,	# canale 5
	'italia1'	: 3,	# italia 1
	'la7'		: 2,	# la 7
	'mtv'		: 36,	# mtv
	'allmusic'	: 106	# all music

}

BASEURL = 'http://tv.lospettacolo.it/canale.asp?comando=canale&dato='

BLUE = '\033[34m'
RESET = '\033[0;0m'
BOLD = '\033[1m'

import re
import urllib
import sys
import getopt

def usage():
	print "USAGE: tvguide.py {rai1|rai2|rai3|rete4|canale5|italia1|la7|mtv|allmusic}\n"
	print "Options"
	print "   -h	shows this help"
	print "\n Content fetched from http://tv.lospettacolo.it"
	print "Code by NoWhereMan"

channel =  sys.argv[1]
if channel in CHANS.keys() :
	url = BASEURL + str(CHANS[channel])
	data = urllib.urlopen(url).read()
	rgx = re.compile('h: <b>(?P<time>[0-9]{2}:[0-9]{2})</b> -   (?P<type>[A-Z]+) <b>(<A[^<]*>)?(?P<title>[^<]*)(</A>)?</b>')
	found = rgx.finditer(data)
	for match in found :
		print match.expand(BLUE + "\\g<time> :" + RESET + BOLD + " \\g<title> " + RESET + "(\\g<type>)")
else :
	usage() 
		

Immagino che a lospettacolo.it mi ameranno (come no!), gli aumenterà improvvisamente il traffico a causa degli accessi del mio script. Un bel giorno si romperanno, cambieranno layout e lo script smetterà di funzionare :P

Nel frattempo si salvi in tvguide.py

chmod +x tvguide.py
./tvguide.py rai1

canali supportati rai1, rai2, rai3, rete4, canale5, italia1, la7, mtv, allmusic

funziona anche su Windork, a patto di avere Python installato (i caratteri strani sono le sequenze di escape… senza ansi.sys non vanno)

Categories

Archives

Blogroll

Last 10 entries

Admin area