[tv/vignettes/vignettes.py] Diverses modifications :
* Changement de quelques paths avec le passage sur mdr * Les paths sont déclarés au début du fichier * Le script utilise moins de os.system au profit des fonctions interne de Python * La génération des images a été simplifié * Les noms des images sont de type : <fqdn>.jpg, mais il y a des symlinks vers les IP pour garder une compatibilité. * Si la génération de l'image rate, on met une image par défault. darcs-hash:20090130210627-8fbb1-ab0fbebbcd0bb81a365872fe003e8242455f87d4.gz
This commit is contained in:
parent
bcde4688de
commit
ce3f0ad5ba
1 changed files with 56 additions and 45 deletions
|
@ -1,12 +1,16 @@
|
||||||
#! /usr/bin/env python
|
#! /usr/bin/env python
|
||||||
# -*- coding: iso-8859-15 -*-
|
# -*- coding: iso-8859-15 -*-
|
||||||
|
|
||||||
import os,sys
|
import os,sys,socket,shutil
|
||||||
sys.path.append('/usr/scripts/gestion')
|
sys.path.append('/usr/scripts/gestion')
|
||||||
import lock
|
import lock
|
||||||
import time
|
import time
|
||||||
from time import localtime,sleep
|
from time import localtime,sleep
|
||||||
|
|
||||||
|
tmp_dir = '/tmp'
|
||||||
|
www_dir = '/var/www/'
|
||||||
|
img_dir = '%s/images' % www_dir
|
||||||
|
|
||||||
t = localtime()
|
t = localtime()
|
||||||
trame_entete="""
|
trame_entete="""
|
||||||
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
|
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
|
||||||
|
@ -38,48 +42,50 @@ trame_piedpage="""</body>
|
||||||
</html>
|
</html>
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def ajoute_image(nom,ip,html,html_petites):
|
def ajoute_image(nom,fqdn,ip,html,html_petites):
|
||||||
html.write('<td align="center">')
|
html.write('<td align="center">')
|
||||||
html.write('<img src="images/%s.jpg" alt="Chaine : %s / IP : %s"><br>' % (ip, nom, ip))
|
html.write('<img src="images/%s.jpg" alt="Chaine : %s / IP : %s"><br>' % (fqdn, nom, ip))
|
||||||
html.write('<b><u>Chaine :</u></b> %s<br><b><u>IP :</u></b> %s:1234' % (nom, ip))
|
html.write('<b><u>Chaine :</u></b> %s<br><b><u>IP :</u></b> %s:1234' % (nom, ip))
|
||||||
html.write('</td>\n')
|
html.write('</td>\n')
|
||||||
html_petites.write('<td align="center">')
|
html_petites.write('<td align="center">')
|
||||||
html_petites.write('<img src="images/%s_petites.jpg" alt="Chaine : %s / IP : %s"><br>' % (ip, nom, ip))
|
html_petites.write('<img src="images/%s_petites.jpg" alt="Chaine : %s / IP : %s"><br>' % (fqdn, nom, ip))
|
||||||
html_petites.write('<b><u>Chaine :</u></b> %s<br><b><u>IP :</u></b> %s:1234' % (nom, ip))
|
html_petites.write('<b><u>Chaine :</u></b> %s<br><b><u>IP :</u></b> %s:1234' % (nom, ip))
|
||||||
html_petites.write('</td>\n')
|
html_petites.write('</td>\n')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def vignettes() :
|
def vignettes() :
|
||||||
html = open('/tmp/vignettes.html','w')
|
html = open('%s/vignettes.html' % tmp_dir,'w')
|
||||||
html.write(trame_entete)
|
html.write(trame_entete)
|
||||||
html_petites = open('/tmp/vignettes_petites.html','w')
|
html_petites = open('%s/vignettes_petites.html' % tmp_dir,'w')
|
||||||
html_petites.write(trame_entete)
|
html_petites.write(trame_entete)
|
||||||
col = 0
|
col = 0
|
||||||
col_petites = 0
|
col_petites = 0
|
||||||
#a factoriser
|
#a factoriser
|
||||||
chaines_probleamatiques=[]
|
chaines_probleamatiques=[]
|
||||||
os.system('/usr/local/bin/recup_sap')
|
os.system('/usr/scripts/tv/recup_sap')
|
||||||
os.system('sort /tmp/chaines_recup_sap.txt> /tmp/chaines_recup_sap_triees.txt')
|
#On est obligé de mettre en dur le path
|
||||||
data = open('/tmp/chaines_recup_sap_triees.txt','r').readlines()
|
#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()
|
||||||
|
|
||||||
# return
|
for line in chaines_sap :
|
||||||
|
|
||||||
for line in data :
|
|
||||||
|
|
||||||
|
chaines_sap_sort.write(line)
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
nom=line.split(':')[0]
|
nom = line.split(':')[0]
|
||||||
ip=line.split(':')[-1]
|
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
|
#on évite les radios, peu de debit et pas de vignettes
|
||||||
if nom[0:3]=='rad' :
|
if nom[0:3]=='rad' :
|
||||||
#C'est une radio on cherche un logo
|
#C'est une radio on cherche un logo
|
||||||
ok=0 #désolé vince j'ai essayé les exceptions mois c pas si simple
|
ok=0 #désolé vince j'ai essayé les exceptions mois c pas si simple
|
||||||
nom_court=(' '.join(nom.split(' ')[2:])).lower()
|
nom_court=(' '.join(nom.split(' ')[2:])).lower()
|
||||||
print "On s'occupe de la radio %s" % nom_court
|
print "On s'occupe de la radio %s" % nom_court
|
||||||
for file in os.listdir('/var/www/images/logos_radios'):
|
for file in os.listdir('%s /logos_radios' % img_dir):
|
||||||
if file.startswith(nom_court):
|
if file.startswith(nom_court):
|
||||||
os.system('cp /var/www/images/logos_radios/\"%s\" /var/www/images/%s.jpg' % (file,ip))
|
shutil.copy(' %s/logos_radios/%s' % (img_dir,file),'%s/%s.jpg' % (img_dir,fqdn))
|
||||||
os.system('cp /var/www/images/logos_radios/\"%s\" /var/www/images/%s_petites.jpg' % (file,ip))
|
shutil.copy(' %s/logos_radios/%s' % (img_dir,file),'%s/%s_petites.jpg' % (img_dir,fqdn))
|
||||||
if col == 2 :
|
if col == 2 :
|
||||||
col = 1
|
col = 1
|
||||||
html.write('</tr><tr>\n')
|
html.write('</tr><tr>\n')
|
||||||
|
@ -90,7 +96,7 @@ def vignettes() :
|
||||||
html_petites.write('</tr><tr>\n')
|
html_petites.write('</tr><tr>\n')
|
||||||
else :
|
else :
|
||||||
col_petites += 1
|
col_petites += 1
|
||||||
ajoute_image(nom,ip,html,html_petites)
|
ajoute_image(nom,fqdn,ip,html,html_petites)
|
||||||
ok=1 #désolé vince j'ai essayé les exceptions mois c pas si simple
|
ok=1 #désolé vince j'ai essayé les exceptions mois c pas si simple
|
||||||
if not ok:
|
if not ok:
|
||||||
#il n'y a pas de logo :-(
|
#il n'y a pas de logo :-(
|
||||||
|
@ -100,25 +106,27 @@ def vignettes() :
|
||||||
print 'on s\'occupe de %s %s' % (ip,nom)
|
print 'on s\'occupe de %s %s' % (ip,nom)
|
||||||
print '\trecuperation du flux'
|
print '\trecuperation du flux'
|
||||||
#ip port duree
|
#ip port duree
|
||||||
os.system('/usr/scripts/tv/dumpudp %s 1234 2 > /tmp/%s.ts 2>/dev/null &' % (ip,ip))
|
os.system('/usr/scripts/tv/dumpudp %s 1234 2 > %s/%s.ts 2>/dev/null' % (ip,tmp_dir,ip))
|
||||||
print '\tconversion en mpeg1'
|
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))
|
||||||
os.system('rm /tmp/%s.mpg 2>/dev/null 1> /dev/null' % (ip)) #eviter le message demandant l'ecrasement
|
if not os.path.exists('%s/%s.jpg' % (img_dir,fqdn)) or not os.stat('%s/%s.jpg' % (img_dir,fqdn))[6] :
|
||||||
os.system('ffmpeg -deinterlace -an -i /tmp/%s.ts /tmp/%s.mpg 2>/dev/null 1> /dev/null' % (ip,ip))
|
|
||||||
if not os.path.exists('/tmp/%s.mpg' % (ip)) or not os.stat('/tmp/%s.mpg' % (ip))[6] :
|
|
||||||
print '\tOn retente'
|
print '\tOn retente'
|
||||||
if os.path.exists('/tmp/%s.mpg' % (ip)) and os.stat('/tmp/%s.mpg' % (ip))[6] :
|
os.system('/usr/scripts/tv/dumpudp %s 1234 2 > %s/%s.ts ' % (ip,tmp_dir,ip))
|
||||||
print 'FICIHER VIDE'
|
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))
|
||||||
os.system('/usr/scripts/tv/dumpudp %s 1234 2 > /tmp/%s.ts ' % (ip,ip))
|
if not os.path.exists('%s/%s.jpg' % (img_dir,fqdn)) or not os.stat('%s/%s.jpg' % (img_dir,fqdn))[6] :
|
||||||
print '\t\tconversion en mpeg1'
|
shutil.copy('%s/fail.jpg' % (img_dir) , '%s/%s.jpg' % (img_dir,fqdn))
|
||||||
os.system('ffmpeg -y -deinterlace -an -i /tmp/%s.ts /tmp/%s.mpg 2>/dev/null 1> /dev/null' % (ip,ip))
|
|
||||||
print '\tconversion en ppm de la frame 11'
|
|
||||||
os.system('rm /tmp/image_%s*ppm 2>/dev/null 2> /dev/null 1> /dev/null' % (ip)) #eviter le message demandant l'ecrasement
|
|
||||||
os.system('transcode -q 0 -i /tmp/%s.mpg -x mpeg2,null -y ppm,null -c 10-11 -o /tmp/image_%s 2>/dev/null 1>/dev/null' % (ip,ip))
|
|
||||||
print '\tconversion en jpg\n'
|
|
||||||
os.system('convert -geometry \'400x300 !\' /tmp/image_%s*ppm /var/www/images/%s.jpg 2>/dev/null 1>/dev/null' % (ip,ip))
|
|
||||||
os.system('convert -geometry \'200x150 !\' /tmp/image_%s*ppm /var/www/images/%s_petites.jpg 2>/dev/null 1>/dev/null' % (ip,ip))
|
|
||||||
|
|
||||||
if os.path.exists('/tmp/%s.mpg' % (ip)) and os.stat('/tmp/%s.mpg' % (ip))[6] : #on teste sur le mpg car il est enleve a chaque fois
|
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 :
|
if col == 2 :
|
||||||
col = 1
|
col = 1
|
||||||
html.write('</tr><tr>\n')
|
html.write('</tr><tr>\n')
|
||||||
|
@ -129,16 +137,18 @@ def vignettes() :
|
||||||
html_petites.write('</tr><tr>\n')
|
html_petites.write('</tr><tr>\n')
|
||||||
else :
|
else :
|
||||||
col_petites += 1
|
col_petites += 1
|
||||||
ajoute_image(nom,ip,html,html_petites)
|
ajoute_image(nom,fqdn,ip,html,html_petites)
|
||||||
print "--------------- Ok %s" % ip
|
print "--------------- Ok %s" % ip
|
||||||
else :
|
else :
|
||||||
chaines_probleamatiques.append('<b><u>Chaine :</u></b> %s<br><b><u>IP :</u></b> %s:1234<br><br>\n' %(nom,ip))
|
chaines_probleamatiques.append('<b><u>Chaine :</u></b> %s<br><b><u>IP :</u></b> %s:1234<br><br>\n' %(nom,ip))
|
||||||
print "--------------- Problematique %s ..." % ip
|
print "--------------- Problematique %s ..." % ip
|
||||||
os.system('rm /var/www/images/%s.jpg' % (ip))
|
if os.path.exists('%s/%s.jpg' % (img_dir,fqdn)) :
|
||||||
os.system('rm /var/www/images/%s_petites.jpg' % (ip))
|
os.remove('%s/%s.jpg' % (img_dir,fqdn))
|
||||||
|
if os.path.exists('%s/%s_petites.jpg' % (img_dir,fqdn)) :
|
||||||
os.system('rm /tmp/%s.ts /tmp/%s.mpg /tmp/image_%s*ppm' % (ip,ip,ip))
|
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.write(table_piedpage)
|
||||||
html_petites.write(table_piedpage)
|
html_petites.write(table_piedpage)
|
||||||
|
@ -153,8 +163,9 @@ def vignettes() :
|
||||||
html.close()
|
html.close()
|
||||||
html_petites.write(trame_piedpage)
|
html_petites.write(trame_piedpage)
|
||||||
html_petites.close()
|
html_petites.close()
|
||||||
os.system('mv -f /tmp/vignettes.html /var/www/vignettes.html')
|
shutil.move('%s/vignettes.html' % (tmp_dir),'%s/vignettes.html' % (www_dir))
|
||||||
os.system('mv -f /tmp/vignettes_petites.html /var/www/vignettes_petites.html')
|
shutil.move('%s/vignettes_petites.html' % (tmp_dir),'%s/vignettes_petites.html' % (www_dir))
|
||||||
|
chaines_sap_sort.close()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__' :
|
if __name__ == '__main__' :
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue