Pages : 1
#1 Le 25/11/2008, à 18:37
- pierra
[HELP] mettre en forme un fichier
Bon c'est partit, je suis fervent ecouteur de Fg dj radio, mais voila ecouter c'est bien joli, mais j'aimerai bien recuperer les titre des chansons.
Or super, ils sont disponible sur cette page : http://www.radiofg.com/modules.php?name=Fg_Titres
Jme dit, il doit bien y avoir moyen de recuperer ces infos dans un fichier texte.
Donc jme lance et sa donne sa, enfin le peu que j'ai fait.
#!/usr/bin/python
#recuperation des info sur la musique qui passe en ce moment sur fgimport os
#suppression de l'ancien fichier
fglistexiste = os.popen("cd ~/script && ls | grep fglist").read()
if fglistexiste != "":
os.popen("cd ~/script && rm fglist")#recuperation de la source de la page web de fg (et renommage en fglist)
os.popen("cd ~/script && wget http://www.radiofg.com/modules.php?name=Fg_Titres && mv modules.php?name=Fg_Titres fglist")
bon et bien la c'est bien joli, mais je suis bloqué sur comment le mettre en forme...
en gros je voudrai arriver a sa :
Titres trouvés sur une plage de +/- 60 minutes.
17:02:00
Saturday night
MICHAEL FEINER17:04:57
Get up (D.O.N.S rmx)
NIKI BELUCCI
...
...
euh pour info, voila le code de la page en question...
un des gros probleme, c'est que le code n'est pas fixe, dans mon exemple, la partie interessante commence ligne 318, mais ce n'est pas toujour le cas.
nous somme ligne 318 du fichier
<div align="center"><span class="texteresultat"><br><strong>
Titres trouvés sur une plage de +/- 60 minutes.</strong></span></div>
<br />
<table width="100%" border="0" cellpadding="2" cellspacing="0">
<tr bgcolor="#e4e9ef">
<td class="textetrack">
<div align="center">
17:02:00 </div></td>
<td class="textetrack">Saturday night</td>
<td class="textetrack">MICHAEL FEINER</td>
<td></td>
<td><a href="http://www3.fnac.com/search/quick.do?text=MICHAEL FEINER+Saturday night&Origin=RADIOFG&category=audio" target="_blank"><img src="themes/RFG/images/player/bt_achat.jpg" name="bt_achat2008-11-25 17:02:00" width="17" height="17" border="0" align="absmiddle" id="bt_achat2008-11-25 17:02:00" onMouseOver="MM_swapImage('bt_achat2008-11-25 17:02:00','','themes/RFG/images/player/bt_achat_roll.jpg',0)" onMouseOut="MM_swapImgRestore()" alt="ACHETER" /></a></td>
<td>
<div align="center"><a href="http://www.tkqlhce.com/click-2169789-10447531?url=http://www.fnacmusic.com/layout/search/searchCategoryResult.aspx?text=MICHAEL FEINER+Saturday night&filter=all&Origin=CJ_FNACMUSIC" target="_blanck"><img src="themes/RFG/images/player/bt_download.jpg" name="bt_download" width="17" height="17" border="0" align="absmiddle" id="bt_download2008-11-25 17:02:00" onMouseOver="MM_swapImage('bt_download2008-11-25 17:02:00','','themes/RFG/images/player/bt_download_roll.jpg',0)" onMouseOut="MM_swapImgRestore()" alt="TELECHARGER" /></a></div> </td>
</tr>
<tr bgcolor="#ffffff">
<td class="textetrack">
<div align="center">
17:04:57 </div></td>
<td class="textetrack">Get up (D.O.N.S rmx)</td>
<td class="textetrack">NIKI BELUCCI</td>
<td></td>
<td><a href="http://www3.fnac.com/search/quick.do?text=NIKI BELUCCI+Get up (D.O.N.S rmx)&Origin=RADIOFG&category=audio" target="_blank"><img src="themes/RFG/images/player/bt_achat.jpg" name="bt_achat2008-11-25 17:04:57" width="17" height="17" border="0" align="absmiddle" id="bt_achat2008-11-25 17:04:57" onMouseOver="MM_swapImage('bt_achat2008-11-25 17:04:57','','themes/RFG/images/player/bt_achat_roll.jpg',0)" onMouseOut="MM_swapImgRestore()" alt="ACHETER" /></a></td>
<td>
<div align="center"><a href="http://www.tkqlhce.com/click-2169789-10447531?url=http://www.fnacmusic.com/layout/search/searchCategoryResult.aspx?text=NIKI BELUCCI+Get up (D.O.N.S rmx)&filter=all&Origin=CJ_FNACMUSIC" target="_blanck"><img src="themes/RFG/images/player/bt_download.jpg" name="bt_download" width="17" height="17" border="0" align="absmiddle" id="bt_download2008-11-25 17:04:57" onMouseOver="MM_swapImage('bt_download2008-11-25 17:04:57','','themes/RFG/images/player/bt_download_roll.jpg',0)" onMouseOut="MM_swapImgRestore()" alt="TELECHARGER" /></a></div> </td>
</tr>
<tr bgcolor="#e4e9ef">
<td class="textetrack">
<div align="center">
17:08:29 </div></td>
<td class="textetrack">I pray</td>
<td class="textetrack">LAURENT WOLF</td>
<td></td>
<td><a href="http://www3.fnac.com/search/quick.do?text=LAURENT WOLF+I pray&Origin=RADIOFG&category=audio" target="_blank"><img src="themes/RFG/images/player/bt_achat.jpg" name="bt_achat2008-11-25 17:08:29" width="17" height="17" border="0" align="absmiddle" id="bt_achat2008-11-25 17:08:29" onMouseOver="MM_swapImage('bt_achat2008-11-25 17:08:29','','themes/RFG/images/player/bt_achat_roll.jpg',0)" onMouseOut="MM_swapImgRestore()" alt="ACHETER" /></a></td>
<td>
<div align="center"><a href="http://www.tkqlhce.com/click-2169789-10447531?url=http://www.fnacmusic.com/layout/search/searchCategoryResult.aspx?text=LAURENT WOLF+I pray&filter=all&Origin=CJ_FNACMUSIC" target="_blanck"><img src="themes/RFG/images/player/bt_download.jpg" name="bt_download" width="17" height="17" border="0" align="absmiddle" id="bt_download2008-11-25 17:08:29" onMouseOver="MM_swapImage('bt_download2008-11-25 17:08:29','','themes/RFG/images/player/bt_download_roll.jpg',0)" onMouseOut="MM_swapImgRestore()" alt="TELECHARGER" /></a></div> </td>
</tr>
<tr bgcolor="#ffffff">
<td class="textetrack">
<div align="center">
17:11:33 </div></td>
<td class="textetrack">Dilly dally</td>
<td class="textetrack">HAKIMAKLI</td>
<td></td>
<td><a href="http://www3.fnac.com/search/quick.do?text=HAKIMAKLI+Dilly dally&Origin=RADIOFG&category=audio" target="_blank"><img src="themes/RFG/images/player/bt_achat.jpg" name="bt_achat2008-11-25 17:11:33" width="17" height="17" border="0" align="absmiddle" id="bt_achat2008-11-25 17:11:33" onMouseOver="MM_swapImage('bt_achat2008-11-25 17:11:33','','themes/RFG/images/player/bt_achat_roll.jpg',0)" onMouseOut="MM_swapImgRestore()" alt="ACHETER" /></a></td>
<td>
<div align="center"><a href="http://www.tkqlhce.com/click-2169789-10447531?url=http://www.fnacmusic.com/layout/search/searchCategoryResult.aspx?text=HAKIMAKLI+Dilly dally&filter=all&Origin=CJ_FNACMUSIC" target="_blanck"><img src="themes/RFG/images/player/bt_download.jpg" name="bt_download" width="17" height="17" border="0" align="absmiddle" id="bt_download2008-11-25 17:11:33" onMouseOver="MM_swapImage('bt_download2008-11-25 17:11:33','','themes/RFG/images/player/bt_download_roll.jpg',0)" onMouseOut="MM_swapImgRestore()" alt="TELECHARGER" /></a></div> </td>
</tr>
<tr bgcolor="#e4e9ef">
<td class="textetrack">
<div align="center">
17:20:10 </div></td>
<td class="textetrack">Golden Walls</td>
<td class="textetrack">ARNO COST</td>
<td></td>
<td><a href="http://www3.fnac.com/search/quick.do?text=ARNO COST+Golden Walls&Origin=RADIOFG&category=audio" target="_blank"><img src="themes/RFG/images/player/bt_achat.jpg" name="bt_achat2008-11-25 17:20:10" width="17" height="17" border="0" align="absmiddle" id="bt_achat2008-11-25 17:20:10" onMouseOver="MM_swapImage('bt_achat2008-11-25 17:20:10','','themes/RFG/images/player/bt_achat_roll.jpg',0)" onMouseOut="MM_swapImgRestore()" alt="ACHETER" /></a></td>
<td>
<div align="center"><a href="http://www.tkqlhce.com/click-2169789-10447531?url=http://www.fnacmusic.com/layout/search/searchCategoryResult.aspx?text=ARNO COST+Golden Walls&filter=all&Origin=CJ_FNACMUSIC" target="_blanck"><img src="themes/RFG/images/player/bt_download.jpg" name="bt_download" width="17" height="17" border="0" align="absmiddle" id="bt_download2008-11-25 17:20:10" onMouseOver="MM_swapImage('bt_download2008-11-25 17:20:10','','themes/RFG/images/player/bt_download_roll.jpg',0)" onMouseOut="MM_swapImgRestore()" alt="TELECHARGER" /></a></div> </td>encore du code qui ne me sert a rien ( fin du fichier ligne 740 )
Donc si vous avez des idées pour m'aidez ou si vous pensez que c'est totalement impossible merci de me donnez votre avis .
au cas ou mon adresse partmat71[at]hotmail.com
#2 Le 25/11/2008, à 20:09
- AnsuzPeorth
Re : [HELP] mettre en forme un fichier
bjr,
Si en bash ça te va et que l'heure n'est pas nécessaire (niveau débutant, je precise!)
J'utilse curl pour rapratrier la page html (curl m'a ete conseillé ici, et je ne regrette pas)
curl http://www.radiofg.com/modules.php?name=Fg_Titres | grep textetrack | cut -d ">" -f2 | cut -d "<" -f1
.textetrack {color: #666666; font-size: 11px;}
Daddy O (Rmx Soulseekerz)
WIDEBOYS feat SHAZNAY LEWIS
Golden Walls
ARNO COST
So what (Bimbo Jones rmx)
PINK
Last forever
NORMAN DORAY AND TRISTAN GARNER
If I were a boy (Laurent Wolf rmx)
BEYONCE
Silence (Niels Van Gogh vs Thomas Gold rmx)
DELIRIUM
You're not alone
DAVID GUETTA
Army of two
UMEK
Pour supprimer la premiere ligne, je te laisse choisir comment faire !
Une page bien utile pour sed !
http://sed.sourceforge.net/sed1line_fr.html
Sinon, attends un peu, et une tronche du forum va te pondre une ligne qui te fera le travail (plus propre et plus efficasse que ce que je fais...j'ai l'habitude )
#3 Le 25/11/2008, à 21:08
- Totor
Re : [HELP] mettre en forme un fichier
Salut,
Pour compléter la réponse d'AnsuzPeorth, voici une solution complète :
curl http://www.radiofg.com/modules.php?name=Fg_Titres | sed -n '/class="textetrack"/,/<\/table>/p'|sed 's/^[[:blank:]]*\([0-9]\{1,2\}:[0-9]\{1,2\}:[0-9]\{1,2\}\)[[:blank:]]*.*$/\1/; /textetrack/ s/.*>\(.*\)<.*/\1/; /</ d'
-- Lucid Lynx --
Hors ligne
#4 Le 25/11/2008, à 22:22
- AnsuzPeorth
Re : [HELP] mettre en forme un fichier
Salut,
Pour compléter la réponse d'AnsuzPeorth, voici une solution complète :
curl http://www.radiofg.com/modules.php?name=Fg_Titres | sed -n '/class="textetrack"/,/<\/table>/p'|sed 's/^[[:blank:]]*\([0-9]\{1,2\}:[0-9]\{1,2\}:[0-9]\{1,2\}\)[[:blank:]]*.*$/\1/; /textetrack/ s/.*>\(.*\)<.*/\1/; /</ d'
Ca c'est du chinois pour moi....!
Je m'etais arreter à
sed -n '/minutes/,/sas_page/p'
Mais je n'arrivais pas à supprimer les lignes vides, que ce soit avec grep ou sed (bizarre d'ailleurs car j'ai deja utiliser ces commandes pour ce genre de situation avec succes!)
Sinon, Alaing (un cador), m'avait proposer du perl pour régler ce problème (y a un bail deja)
http://forum.ubuntu-fr.org/viewtopic.php?pid=1364228#p1364228
#5 Le 25/11/2008, à 22:36
- pierra
Re : [HELP] mettre en forme un fichier
Merci beaucoup, je ne pensait pas avoir une repnse si rapidement :):):):):):):):):)
#6 Le 26/11/2008, à 09:52
- Totor
Re : [HELP] mettre en forme un fichier
Totor a écrit :Salut,
Pour compléter la réponse d'AnsuzPeorth, voici une solution complète :
curl http://www.radiofg.com/modules.php?name=Fg_Titres | sed -n '/class="textetrack"/,/<\/table>/p'|sed 's/^[[:blank:]]*\([0-9]\{1,2\}:[0-9]\{1,2\}:[0-9]\{1,2\}\)[[:blank:]]*.*$/\1/; /textetrack/ s/.*>\(.*\)<.*/\1/; /</ d'
Ca c'est du chinois pour moi....!
Explications :
sed -n '/class="textetrack"/,/<\/table>/p' : permet d'extraire du flux en entrée le texte entre class="textetrack" (1ère occurence de la liste des chansons) et </table> (fin de la table contenant les chansons)
s/^[[:blank:]]*\([0-9]\{1,2\}:[0-9]\{1,2\}:[0-9]\{1,2\}\)[[:blank:]]*.*$/\1/ : permet de transformer la ligne contenant l'heure de diffusion en une ligne contenant juste l'heure de diffusion (ex : 17:02:00 </div></td> -> 17:02:00)
/textetrack/ s/.*>\(.*\)<.*/\1/ : permet d'extraire l'interprète/le titre
/</ d : permet de supprimer toutes les lignes du flux en entrée contenant un < (à priori, il s'agit d'une ligne contenant un tag html). Mais ça risque d'être insuffisant car il y aura potentiellement des < dans des titres !
Sinon, pour ton interrogation sur les lignes vides, cette commande permet de supprimer les lignes vides ou ne contenant que des blancs d'un fichier (l'option i permet de supprimer directement dans le fichier) :
sed -i 's/^[[:blank:]]*$//g' nomfichier
Sinon, Alaing (un cador), m'avait proposer du perl pour régler ce problème (y a un bail deja)
http://forum.ubuntu-fr.org/viewtopic.php?pid=1364228#p1364228
Oui Alain.g est un mentor en la matière
-- Lucid Lynx --
Hors ligne
#7 Le 26/11/2008, à 12:10
- AnsuzPeorth
Re : [HELP] mettre en forme un fichier
Merci pour les explication Totor !
Une petite precision qd meme, si je peux .
A quoi correspond le 1 a la fin des expressions.
s/^[[:blank:]]*\([0-9]\{1,2\}:[0-9]\{1,2\}:[0-9]\{1,2\}\)[[:blank:]]*.*$/\1/
Pour le [[:blank:]], je chercherai sur le net.
Sinon, pour supprimer les lignes vides, j'utilisais:
grep '.'
sed '/^$/d'
sed '/./!d'
Mais dans ce cas, ca ne fonctionnait pas (je n'ai pas utilisé l'option -i de grep, peut ca vient de là ?)
#8 Le 26/11/2008, à 15:21
- Totor
Re : [HELP] mettre en forme un fichier
Une petite precision qd meme, si je peux .
Bien sûr, c'est l'un des intérêts du forum
A quoi correspond le 1 a la fin des expressions.
s/^[[:blank:]]*\([0-9]\{1,2\}:[0-9]\{1,2\}:[0-9]\{1,2\}\)[[:blank:]]*.*$/\1/
Pour le [[:blank:]], je chercherai sur le net.
[[:blank:]] : c'est pour indiquer un espace ou une tabulation
\1 (et non 1 tout seul) :
Si tu regardes bien, on a une notation s/<quelquechose>/<autrechose>/, qui signifie, remplace moi <quelquechose> par <autrechose>. Dans autrechose, on peut faire référence à une simple partie de quelquechose. C'est l'objectif du \1 qui référence la première partie isolée dans <quelquechose>. L'isolement se fait en encadrant la partie souhaitée par des parenthèses. Dans l'expression que tu as indiqué (ie. ^[[:blank:]]*\([0-9]\{1,2\}:[0-9]\{1,2\}:[0-9]\{1,2\}\)[[:blank:]]*.*$), il s'agit de [0-9]\{1,2\}:[0-9]\{1,2\}:[0-9]\{1,2\} qui est encadrée par \( et \) (il faut mettre des \ pour indiquer à sed de ne pas les interpréter comme des caractères de l'expression)
Sinon, pour supprimer les lignes vides, j'utilisais:
grep '.' sed '/^$/d' sed '/./!d'
Mais dans ce cas, ca ne fonctionnait pas (je n'ai pas utilisé l'option -i de grep, peut ca vient de là ?)
Effectivement, si tu n'utilises pas de redirection ou l'option i de sed, ton fichier source restera avec ses lignes vides. Pour ma part, je mets toujours ^[[:blank:]]*$ à la place de ^$ car je considère une ligne constituée uniquement d'espace ou de tabulation comme vide. Après, tout dépend du besoin.
Dernière modification par Totor (Le 27/11/2008, à 10:18)
-- Lucid Lynx --
Hors ligne
#9 Le 26/11/2008, à 22:39
- bandoine
Re : [HELP] mettre en forme un fichier
Salut fréro :
voici une soluce plus propre utilisant les librairies python urllib2 pour la recuperation et re pour l'execution de travaux relevant des expressions régulières :
import re
from urllib2 import urlopen
try:
fg = urlopen("http://www.radiofg.com/modules.php?name=Fg_Titres").read()
except:
print 'can\'t download http://www.radiofg.com/modules.php?name=Fg_Titres'
exit()
REGEX = "<td class=\"textetrack\">\s+<div align=\"center\">\s+([\d+:]+).*</div></td>\s+<td class=\"textetrack\">(.*)</td>\s+<td class=\"textetrack\">(.*)</td>"
list = re.findall(REGEX,fg)
ou list est une liste de 3-tuple contenant l'heure,le titre, l'artiste.
pour y acceder le plus simple est surement de faire une boucle "for in"
par exemple
for tuple in list:
print tuple[0] + " " + tuple[2] + " - " + tuple[1]
dont le retour sera qqch qui ressemble à:
21:48:36 ARNO COST - Golden Walls
21:52:17 NORMAN DORAY AND TRISTAN GARNER - Last forever
21:55:48 KELIS - Bossy (Alan Braxe et Fred Falke remix)
22:00:31 JOHNNY CORPORATE - In the pocket
22:03:57 KIKO - World cup
#10 Le 26/11/2008, à 23:42
- AnsuzPeorth
Re : [HELP] mettre en forme un fichier
Merci Totor...! En plus, c'est clair (apres 2 lecture )
J'adore ce forum !
#11 Le 27/11/2008, à 10:35
- aleph
Re : [HELP] mettre en forme un fichier
> bandoine
Ta solution est très élégante et me fais penser à ce commentaire :
http://forum.ubuntu-fr.org/viewtopic.php?pid=2204531#p2204531 (msg #15)