Bonsoir.
Je suis en train d’essayer d’écrire un script me permettant de récupérer des paroles de chanson. voici où j’en suis :
[code]#!/bin/sh script pour trouver les paroles jouées par mpd
#votre navigateur préféré
NAVIGATEUR=« surf » #on regarde si mpd joue
if [ « $(ps axo comm |grep mpd) » = « mpd » ] && [ « $(mpc |grep ‹ playing ›) » != « » ]; then
TITLE="$(mpc | head -n 1 |cut -d - -f2 |sed 's/ /+/g' |sed 's/+//')"
ARTIST="$(mpc | head -n 1 |cut -d - -f1 |sed 's/ /+/g')"
#on récupère le code de la page
wget http://api.leoslyrics.com/api_search.php?auth=duane'&'songtitle=$TITLE'&'artist=$ARTIST -O /tmp/RESULT
REFERENCE_PAGE="$(cat /tmp/RESULT | grep hid |awk '{print $3}' | sed 's/hid=//g' | sed 's/\"//g')"
#on récupère les paroles
wget http://www.leoslyrics.com/listlyrics.php?hid=$REFERENCE_PAGE -O /tmp/lyrics
fi
[/code]
Mon problème est le suivant : je parviens à obtenir l’adresse de la page où sont situées les paroles. Maintenant, comment puis-je les récupérer en format texte? Car si je fais comme dans le script actuel, un simple wget adresse_de_la_page , ben je récupère quelque chose de bien bizarre.
Déja que je débute pour les scripts, j’ai beaucoup de mal avec le langage web…
Quelqu’un aurait une méthode sous la main?
Merci d’avance
ps : je sais, c’est pas propre du tout mes sed, cut et tout mélangé, mais j’essaie d’abord d’avoir quelque chose qui marche, puis je l’améliorerais à l’avenir. Quand j’en saurais plus aussi )
J’ai avancé un petit peu, mais là je coince. Il faudrait que je puisse afficher le texte qui se trouve seulement entre les ballises et . Et j’ai beau chercher…
désolé de la médiocrité du script… :
[code]#!/bin/sh
SB="#D4D4D4"
SF="#1C1918"
NB="#251C1A"
NF="#D4D4D4" #script pour trouver les paroles jouées par mpd
#votre navigateur préféré
NAVIGATEUR=“surf” #on regarde si mpd joue
if [ “$(ps axo comm |grep mpd)” = “mpd” ] && [ “$(mpc |grep ‘playing’)” != “” ]; then
TITLE="$(mpc | head -n 1 |cut -d - -f2 |sed 's/ /+/g' |sed 's/+//')"
ARTIST="$(mpc | head -n 1 |cut -d - -f1 |sed 's/ /+/g')"
#on récupère le code de la page
wget http://api.leoslyrics.com/api_search.php?auth=duane'&'songtitle=$TITLE'&'artist=$ARTIST -O /tmp/RESULT
REFERENCE_PAGE="$(cat /tmp/RESULT | grep hid |awk '{print $3}' | sed 's/hid=//g' | sed 's/\"//g')"
#on récupère les paroles
wget http://api.leoslyrics.com/api_lyrics.php?auth=duane'&'hid=$REFERENCE_PAGE -O /tmp/PAROLESXML
On les affiche dans dmenu
cat /tmp/PAROLESXML | dmenu -fn 'fixed' -nb $NB -nf $NF -sb $SB -sf $SF -l 30
Eventuellement regarder du côté de xslt sinon, voire s’il existe une appli deb (xmllint ?) ou tout simplement une façon simple de faire joujou avec (template générique + inclusion du xml récupéré par exemple, et après avec 2 ou 3 manips tu devrais récupérer ce qui t’intéresse). Faut voir quelle est la chose la plus pratique pour toi.
Merci pour toutes vos pistes! j’ai du pain sur la planche. Le but reste de transformer une page afin d’en extraire seulement les informations intéressantes.
Juste une simple question en rapport avec ce que tu souhaite faire pourquoi fais-tu cela en bash est-ce pour l’apprentissage du langage ou juste que tu ne sais pas si l’on peux le faire plus facilement avec un autre ?
Si c’est la deuxième solution alors regarde un peu Perl et WWW::Mechanize
C’est parce que c’est le seul langage que je “maitrise” un petit peu.
Et je n’ai pas encore eu suffisamment de temps ( ni pris le temps) pour apprendre rigoureusement le scripting shell, le c, et ainsi passer à d’autres langages.
Ne t’inquiète pas ce n’est pas une critique juste pour comprendre. Amuse toi bien en shell si tu le désire. Ceci dit maintenant tu sais qu’il y a une autre manière de faire plus simple il n’appartient qu’à toi de persister dans l’apprentissage de ta connaissance par la continuité de ton action ou de passer à autre chose.