#!/usr/bin/python
# -*- coding: utf-8 -*-

# rss2mp3.py

import sys, os, datetime, locale
import feedparser

llia_dir="/opt/mbrola/lliaphon/"
lliaphon=os.path.join(llia_dir,"bin/lliaphon")
lliaphon_db=os.path.join(llia_dir,"share/lliaphon/initfile.lia")

mbrola="/opt/mbrola/mbrola"
mbrola_db="/opt/mbrola/fr2/fr2"


temp_file="/tmp/r2m_temp"
log_file = "/tmp/r2m_log"
text="Flux air hess hess de " # heu oui, les acronymes, c'est pas tout a fait ca :)

def usage():
   """display help"""
   print ("usage: %s <RssFeedUrl> [NbTitles]" % (sys.argv[0]))
   print ("\texple: %s http://kubuntu.free.fr/blog/rss.php 5\n\tcréation d'un mp3 des titres des 5 derniers articles de mon blog\n" % (sys.argv[0]))

if __name__ == "__main__":
   locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8') # pour date.strftime()
   if len(sys.argv) < 2:
      usage()
      sys.exit(1)

   feed = feedparser.parse( sys.argv[1] )
   text += feed[ "channel" ][ "title" ].strip('!.?') + ".\n"
   # nombre d'articles
   if len(sys.argv) > 2:
      # nb titles
      nb = int(sys.argv[2])
   else:
      nb = len(feed[ "items" ])
   # recupere les dates/titres
   for i in range(nb):
      date=datetime.date(feed[ "items" ][i][ "date_parsed" ][0],feed[ "items" ][i][ "date_parsed" ][1],feed[ "items" ][i][ "date_parsed" ][2])
      text += "Titre %d : Le %s; %s.\n"%(i+1,date.strftime ("%A %e %B").decode('utf-8'),feed[ "items" ][i][ "title" ].strip('!.?'))
   print text
   # texte à lire
   f = open(temp_file,"w")
   f.write(text.encode('iso-8859-1'))
   f.close()
   # lit et convertis en mp3
   os.system ("%s %s > %s 2>&1" % (lliaphon,temp_file,log_file))
   os.system ("%s -e -t 0.75 -I %s %s %s.ola %s.wav >>%s 2>&1"%(mbrola,lliaphon_db,mbrola_db,temp_file,temp_file,log_file))
   os.system ("lame %s.wav %s.mp3 >> %s 2>&1"%(temp_file,feed[ "channel" ][ "title" ].strip().replace(' ','_'),log_file))

