[résolu] Mon identification d'une URL d'un mp3 ne fonctionne plus

Mon identification d'une URL d'un mp3 ne fonctionne plus [résolu] - Shell/Batch - Programmation

Marsh Posté le 14-11-2017 à 10:57:11    

Bonjour,
 
J'ai écris un petit script qui me permettais de récupérer les podcasts de Radio Nova :
 

Code :
  1. #!/usr/bin/sh
  2. for URL in $(cat URLs.txt)
  3.     do Web_page=$(wget $URL -q -O -)
  4.     file_to_get=$(echo $Web_page | sed 's/.*\(http:\/\/.*novaplanet\)\(.*\)\(\.mp3\).*/\1\2\3/g')
  5.     wget $file_to_get
  6. done


 
Mais le site a migré et je n'arrive plus à identifier l'URL des mp3 car elle n'est plus lisible directement dans la page Web.
Maintenant il faut d'abord cliquer sur le bouton de lecture pour le voir apparaître dans la fenêtre d'inspection de Firefox par exemple.
 
Du coup je souhaiterai lancer la lecture lorsque j'exécute le "wget" dans mon script pour que le fichier mp3 apparaisse.
 
Exemple :
 
L'URL de la page est celle-ci :
http://www.nova.fr/radionova/78897 [...] s-de-scene
 
L'emplacement du bouton de lecture apparaît de la sorte dans l'inspecteur de Firefox :
<a href="#" data-id="19816" data-type="episode" class="btn-action icon-pause-sound"></a>
 
L'URL du mp3 qui n'apparait qu'après avoir lancer la lecture est la suivante :
http://www.nova.fr/sites/default/f [...] T30407.mp3
 
Merci de votre aide.


Message édité par jugusm le 15-11-2017 à 00:59:49
Reply

Marsh Posté le 14-11-2017 à 10:57:11   

Reply

Marsh Posté le 14-11-2017 à 15:43:44    

Le bouton "lecture" (<a href="#" data-id="..." data-type="episode" class="btn-action icon-play-sound"></a>) sur lequel on clique pour lancer la lecture contient un data-id (machin HTML5) avec un numéro qu'il faut récupérer. Ensuite il faut faire une rêquete GET vers http://www.nova.fr/episode/$numero/player ce qui retourne un fichier JSON qui contient le lien vers le fichier mp3 que tu cherches ("mp3_file_uri" ).
Je n'ai aucune idée si c'est légal de faire ça de manière automatisée (sachant que je ne vois aucun problème si c'est pour un usage personnel mais les lois sont parfois mal faites). :o


Message édité par rat de combat le 14-11-2017 à 15:44:25
Reply

Marsh Posté le 14-11-2017 à 18:52:27    

Merci pour ta réponse.
 
Sais-tu comment récupérer le data-id ?
 
Est-ce qu'on peut ajouter le code du bouton lecture à l'URL par exemple ?

Message cité 1 fois
Message édité par jugusm le 14-11-2017 à 18:53:18
Reply

Marsh Posté le 14-11-2017 à 19:16:18    

jugusm a écrit :

Est-ce qu'on peut ajouter le code du bouton lecture à l'URL par exemple ?

J'ai pas compris. :??:

 

Pour télécharger le mp3 il suffit de télécharger la page, extraire le ID, télécharger l'autre lien (player), en sortir le URL du mp3 et finalement le télécharger. C'est du html et du json, autrement dit du texte, on peut soit utiliser un script shell avec wget et awk/grep/... ou n'importe quel language de programmation/script (typiquement Perl, Python, ...) pour rendre les choses un peu plus facile. C'est pas compliqué, juste un peu de traitement de texte. Pour le id si il n'y a qu'un seul id dans le code html un simple grep devrait suffire p.ex. edit2: Il y en a plus d'un, il faut faire une expression grep / un Regex un peu plus évolué.

 

edit: Le data-id est indiqué directement en clair dans le fichier html, data-id="(le numéro qu'on cherche)".


Message édité par rat de combat le 14-11-2017 à 19:19:22
Reply

Marsh Posté le 14-11-2017 à 19:49:43    

Si le code HTML ne change jamais on peut utiliser cette horreur p.ex. pour récuperer l'id avec un script. Attention c'est du bricolage, le moindre changement dans le code et ça ne marchera plus, mais je sais pas faire quelque chose de propre avec sed/awk. C'est juste pour montrer que c'est possible, perso j'utiliserais Perl. C'est pour Windows, d'où le "NUL".

wget -O - http://www.nova.fr/radionova/78897/episode-interview-voilaaa-soundsystem-fraichement-sortis-de-scene 2>NUL | grep data-type\=\"episode\" | sed "s/^ \+//" | cut -d" " -f3 | cut -d"=" -f2 | sed "s/\"//g"

Reply

Marsh Posté le 15-11-2017 à 00:28:33    

OK cool, il me manquait juste le lien entre la page Web et le mp3 c'est à dire l'URL du player :)
 
Du coup j'ai mis à jour mon script avec l'étape intermédiaire et les nouvelles expressions régulières :
 

Code :
  1. #!/usr/bin/sh
  2. URL="http://www.nova.fr/radionova/78897/episode-interview-voilaaa-soundsystem-fraichement-sortis-de-scene"
  3. Web_page=$(wget $URL -q -O -)
  4. prefixe="http://www.nova.fr/episode/"
  5. suffixe="/player"
  6. player_URL=$prefixe$(echo $Web_page | sed 's/.*\(<a href="#" data-id="\)\(.*\)\(" data-type="episode" class="btn-action icon-play-sound">\).*/\2/g')$suffixe
  7. player_datas=$(wget $player_URL -q -O -)
  8. prefixe="http://www.nova.fr/sites/default/files/ressources/sons/"
  9. file_to_get=$prefixe$(echo $player_datas | sed 's/.*\("mp3_file_uri":"\\\/sites\\\/default\\\/files\\\/ressources\\\/sons\\\/\)\(.*.mp3\)\("\).*/\2/g')
  10. wget $file_to_get


 
Merci m'sieur ! ;-)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed