# -*- coding: utf-8 -*-
# File feedsig.py
__author__="Sandro Della Giustina (gialloporpora)"
__date__="22 Aug 2007"
__license__="GPL"
__version__="0.0.1"
__URL__="http://www.gialloporpora.netsons.org"
__credits__="http://urltea.com/1apr"

#  Come si usa ?
# il file deve essere avviato da prompt dei comandi e deve avere un parametro obbligatorio che indica il nome del file utilizzato da TB per firmare le email
# Esempio: python feedsig.py firma.txt


# importa il modulo feedparser.py scaricabile da: http://feedparser.org che viene utilizzato per leggere il feed RSS
import feedparser,urllib, sys

# Di seguito i parametri che vanno configurati manualmente
# feeds  una lista dove devono essere inseriti i feed la cui prima entry verr usata  nella firma
# si possono inserire quanti feed si vuole, ma si ricordi che una firma non dovrebbe mai superare le quattro righe
# static entry rappresenta una riga che verr sempre aggiunta, il valore di staticpos ne indica la posizione
# 0 significa che verr inserita all'inizio, 1 che verr inserita alla fine
feeds=["http://www.gialloporpora.netsons.org/Blog/atom.php", "http://digg.com/rss/gialloporpora/index2.xml"]
static_entry="* FAQ* di /it-alt.comp.software.mozilla/: http://dwarfurl.com/f6c23"
static_pos=1




def replace_HTML_character(s):
	s=s.replace("&apos;","'")
	s=s.replace('&quot;','"')
	s=s.replace('&lt;','<')
	s=s.replace('&gt;','>')
	s=s.replace('&amp;','&')
	s=s.replace('&amp;','&')
	s=s.replace("&nbsp;"," ")
	s=s.replace("&agrave;","a")
	s=s.replace("&egrave;","")
	s=s.replace("&igrave;","")
	s=s.replace("&ograve;","")
	s=s.replace("&ugrave;","")
	s=s.replace("&eacute;","")
	
	return s
def tiny(url):
	# Liberamente ispirato da: http://urltea.com/1apr
	# Funzione che usa le API di urltea o tinyurl per accorciare l'URL
 	# volendo si puo usare anche Tinyurl: http://tinyurl.com/api-create.php?url=
	# Volendo si puo  usare anche urltea: http://urltea.com/api/text/?
	APIshortener="http://urltea.com/api/text/?"
	try:
		encodedurl=APIshortener+urllib.urlencode({"url":url})
		instream=urllib.urlopen(encodedurl)
		tinyurl=instream.read()
		instream.close()

		if len(tinyurl)==0:
			return url

		return tinyurl
	except IOError, e:
		raise "Could not connect."





nome_file_firma=sys.argv[1]
# crea l'oggetto file 
file_firma=open(nome_file_firma,"w")
# usa il metodo parse definito nel modulo feedparser per leggere il feed
firma=""
if (static_pos==0):
	firma+=static_entry+"\n"
errori=[]
for fd in feeds:
	x=feedparser.parse(fd)
	# la prima entry del feed viene  usata come firma
	if x.feed!={}:
		firma+="*"+replace_HTML_character(x.entries[0]["title"])+"*"
		# scrittura del file di firma, e' necessario utilizzare la giusta codifica caratteri, se si utilizza una codifica diversa da utf-8 nella composizione
		link=x.entries[0]["link"]
		link=tiny(link)
		firma+=" - " +link
		firma+="\n"
	else:
		firma+=tiny(fd)+"\n"
		errori.append(x.entries.index(i))

if (static_pos==1):
	firma+=static_entry
# dei messaggi e' necessario modificare utf-8 con la codifica in uso	
file_firma.write(firma.encode("utf-8"))
# chiude il file
file_firma.close()
