#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
import os,sys,socket,shutil
sys.path.append('/usr/scripts/gestion')
import lock
import time
from time import localtime,sleep
tmp_dir = '/tmp'
www_dir = '/var/www/'
img_dir = '%s/images' % www_dir
t = localtime()
trame_entete="""
Petites vignettes
Vignettes Normales
""" % (int(t[3]) ,int(t[4]) )
table_piedpage="""
"""
trame_piedpage="""
"""
def ajoute_image(nom,fqdn,ip,html,html_petites):
html.write('
')
html.write(' ' % (fqdn, nom, ip))
html.write('Chaine : %s IP : %s:1234' % (nom, ip))
html.write(' | \n')
html_petites.write('
')
html_petites.write(' ' % (fqdn, nom, ip))
html_petites.write('Chaine : %s IP : %s:1234' % (nom, ip))
html_petites.write(' | \n')
def vignettes() :
html = open('%s/vignettes.html' % tmp_dir,'w')
html.write(trame_entete)
html_petites = open('%s/vignettes_petites.html' % tmp_dir,'w')
html_petites.write(trame_entete)
col = 0
col_petites = 0
#a factoriser
chaines_probleamatiques=[]
os.system('/usr/scripts/tv/recup_sap')
#On est obligé de mettre en dur le path
#car il n'est pas configurable dans recup_sap
chaines_sap = open('/tmp/chaines_recup_sap.txt','r').readlines()
chaines_sap_sort = open('%s/chaines_recup_sap_triees.txt' % tmp_dir, 'w' )
chaines_sap.sort()
for line in chaines_sap :
chaines_sap_sort.write(line.replace('\'',''))
chaines_sap_sort.close()
for line in chaines_sap :
line = line.strip()
nom = line.split(':')[0]
ip = line.split(':')[-1]
print '%s %s' %(str(ip),str(nom))
fqdn = socket.gethostbyaddr(ip)[0]
#on évite les radios, peu de debit et pas de vignettes
if nom[0:3]=='rad' :
#C'est une radio on cherche un logo
ok=0 #désolé vince j'ai essayé les exceptions mois c pas si simple
nom_court=(' '.join(nom.split(' ')[2:])).lower()
print "On s'occupe de la radio %s" % nom_court
for file in os.listdir('%s /logos_radios' % img_dir):
if file.startswith(nom_court):
shutil.copy(' %s/logos_radios/%s' % (img_dir,file),'%s/%s.jpg' % (img_dir,fqdn))
shutil.copy(' %s/logos_radios/%s' % (img_dir,file),'%s/%s_petites.jpg' % (img_dir,fqdn))
if col == 2 :
col = 1
html.write('
\n')
else :
col += 1
if col_petites == 3:
col_petites = 1
html_petites.write('
\n')
else :
col_petites += 1
ajoute_image(nom,fqdn,ip,html,html_petites)
ok=1 #désolé vince j'ai essayé les exceptions mois c pas si simple
if not ok:
#il n'y a pas de logo :-(
chaines_probleamatiques.append('Chaine : %s
IP : %s:1234
\n' %(nom,ip))
print "\t Fait"
continue
print 'on s\'occupe de %s %s' % (ip,nom)
print '\trecuperation du flux'
#ip port duree
os.system('/usr/scripts/tv/dumpudp %s 1234 2 > %s/%s.ts 2>/dev/null' % (ip,tmp_dir,ip))
os.system('ffmpeg -deinterlace -an -i %s/%s.ts -s 400x300 -r 1 -t 00:00:01 -f image2 %s/%s.jpg 1>/dev/null 2>/dev/null' % (tmp_dir,ip,img_dir,fqdn))
if not os.path.exists('%s/%s.jpg' % (img_dir,fqdn)) or not os.stat('%s/%s.jpg' % (img_dir,fqdn))[6] :
print '\tOn retente'
os.system('/usr/scripts/tv/dumpudp %s 1234 2 > %s/%s.ts ' % (ip,tmp_dir,ip))
os.system('ffmpeg -deinterlace -an -i %s/%s.ts -s 400x300 -r 1 -t 00:00:01 -f image2 %s/%s.jpg 1>/dev/null 2>/dev/null' % (tmp_dir,ip,img_dir,fqdn))
if not os.path.exists('%s/%s.jpg' % (img_dir,fqdn)) or not os.stat('%s/%s.jpg' % (img_dir,fqdn))[6] :
shutil.copy('%s/fail.jpg' % (img_dir) , '%s/%s.jpg' % (img_dir,fqdn))
if os.path.exists('%s/%s_petites.jpg' % (img_dir,fqdn)) :
os.remove('%s/%s_petites.jpg' % (img_dir,fqdn))
os.system('convert -geometry \'200x150 !\' %s/%s.jpg %s/%s_petites.jpg 2>/dev/null 1>/dev/null' % (img_dir,fqdn,img_dir,fqdn))
#On met des symlink pour garder une compatibilité avec les programmes utilisant les adresses ip
if os.path.exists('%s/%s.jpg' % (img_dir,ip)) :
os.remove('%s/%s.jpg' % (img_dir,ip))
if os.path.exists('%s/%s_petites.jpg' % (img_dir,ip)) :
os.remove('%s/%s_petites.jpg' % (img_dir,ip))
os.symlink('%s/%s.jpg' % (img_dir,fqdn),'%s/%s.jpg' % (img_dir,ip))
os.symlink('%s/%s_petites.jpg' % (img_dir,fqdn),'%s/%s_petites.jpg' % (img_dir,ip))
if os.path.exists('%s/%s.ts' % (tmp_dir,ip)) and os.stat('%s/%s.ts' % (tmp_dir,ip))[6] : #on teste sur le ts car il est enleve a chaque fois
if col == 2 :
col = 1
html.write('
\n')
else :
col += 1
if col_petites == 3:
col_petites = 1
html_petites.write('
\n')
else :
col_petites += 1
ajoute_image(nom,fqdn,ip,html,html_petites)
print "--------------- Ok %s" % ip
else :
chaines_probleamatiques.append('Chaine : %s
IP : %s:1234
\n' %(nom,ip))
print "--------------- Problematique %s ..." % ip
if os.path.exists('%s/%s.jpg' % (img_dir,fqdn)) :
os.remove('%s/%s.jpg' % (img_dir,fqdn))
if os.path.exists('%s/%s_petites.jpg' % (img_dir,fqdn)) :
os.remove('%s/%s_petites.jpg' % (img_dir,fqdn))
if os.path.exists('%s/%s.ts' % (tmp_dir,ip)) :
os.remove('%s/%s.ts' % (tmp_dir,ip))
html.write(table_piedpage)
html_petites.write(table_piedpage)
#on ecrit les radios
html.write('
Liste des chaines diffusées mais dont le flux est érroné ou uniquement audio (les flux videos ne seront probablement non lisibles avec VLC mais lisibles avec xine)
')
html_petites.write('
Liste des chaines diffusées mais dont le flux est érroné ou uniquement audio (les flux videos ne seront probablement non lisibles avec VLC mais lisibles avec xine)
')
for line in chaines_probleamatiques :
html.write(line)
html_petites.write(line)
#on ecrit la vraie fin
html.write(trame_piedpage)
html.close()
html_petites.write(trame_piedpage)
html_petites.close()
shutil.copy('%s/vignettes.html' % tmp_dir,'%s/vignettes.html' % www_dir)
shutil.copy('%s/vignettes_petites.html' % tmp_dir,'%s/vignettes_petites.html' % www_dir)
if __name__ == '__main__' :
lock.make_lock('vignettes')
print 'Vignetisation générale'
vignettes()
print 'On a fini'
lock.remove_lock('vignettes')