Tout d'abord après relecture je note que malgré les bloc code l'affichage est une fois de plus saccagé ce qui ne va pas aider à la compréhension. Après les smiley, ce sont les adresses qui sont interprétées.J'y peut rien, désolé.
La page en question c'est di.fm (http://www.di.fm/)
donc en gros je fais
curl -s [www.di.fm]
Ce qui correspond à récupérer le code source.
Sur ce code source j'applique deux fois la commande awk pour récupérer ce que je veux. Ça marche bien mais je voulais convertir la partie ligne de commande en script awk et là je ne vois plus trop comment faire.
J'ai bien essayé d'autres choses hier après avoir posté mais je n'ai pas accès à mon poste Linux pour le moment (probablement jusque dimanche soir).
Je ne sais plus exactement ce que j'avais fait mais en gros ça devait ressembler à ça :
BEGIN {
FS="\""
ln=0
}
{
if ($0 ~ /href="http:\/\/listen/) {
line[ln]=$2
ln++
}
}
END {
for(i=0; i<ln; i++)
{
FS="/|\."
if (line~/public2/) {
printf("32k PLS %s",line)
}
else if (line~/public3/) {
printf("96k PLS %s",line)
}
else if (line~/public5/) {
printf("40k ASX %s", line)
}
# else {
# print $0
# }
}
}
Alors je ne sais plus si c'est exactement comme ça que je l'avais écrit. Mais ça y ressemble beaucoup.
A ce stade ça m'afficherait des choses genre
96k PLS [listen.di.fm]
32k PLS [listen.di.fm]
40k ASX [listen.di.fm]
96k PLS [listen.di.fm]
32k PLS [listen.di.fm]
40k ASX [listen.di.fm]
...
C'est presque ça sauf que J'isolais aussi le nom du fichier avec le second awk pour le replacer devant. Idéalement j'aurais souhaité mettre la première lettre en capitale mais c'est pas le plus important.
Ce que je cherche à obtenir c'est donc
liquiddnb 96k PLS [listen.di.fm]
liquiddnb 32k PLS [listen.di.fm]
liquiddnb 40k ASX [listen.di.fm]
oldschoolhouse 96k PLS [listen.di.fm]
oldschoolhouse 32k PLS [listen.di.fm]
oldschoolhouse 40k ASX [listen.di.fm]
...
ou mieux (mais on va se contenter de la version précédente)
Liquiddnb 96k PLS [listen.di.fm]
Liquiddnb 32k PLS [listen.di.fm]
Liquiddnb 40k ASX [listen.di.fm]
Oldschoolhouse 96k PLS [listen.di.fm]
Oldschoolhouse 32k PLS [listen.di.fm]
Oldschoolhouse 40k ASX [listen.di.fm]
...
La ligne de commande marche comme ça
Avec curl je parcours le code source que j'envoie au travers d'un pipe vers un premier awk qui va isoler les lignes qui m'intéressent c'est-à-dire celles qui contiennent "[
listen"];.
Si on prend la ligne dans son ensemble l'adresse est isolé entre guillemets doubles donc en gros
... href"[listen.di.fm]; ...
Si on prend le guillemet double en séparateur le 2ème champ isole l'adresse donc ça c'est bon.
Dans la ligne de commande le second awk redéfinit le séparateur pour pouvoir isoler facilement le nom du fichier et reformater la ligne sous le format
nom_station bitrate type url_station
url_station correspond à l'ensemble de la ligne d'où le $0.
Je voulais adapter cette ligne de commande dans un programme AWK.
Voilà, j'espère que c'est plus clair.
Merci.
NEKOAITI