Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1071 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2307716
jugusm
Posté le 14-11-2017 à 10:57:11  profilanswer
 

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
mood
Publicité
Posté le 14-11-2017 à 10:57:11  profilanswer
 

n°2307728
rat de com​bat
attention rongeur méchant!
Posté le 14-11-2017 à 15:43:44  profilanswer
 

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
n°2307737
jugusm
Posté le 14-11-2017 à 18:52:27  profilanswer
 

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
n°2307741
rat de com​bat
attention rongeur méchant!
Posté le 14-11-2017 à 19:16:18  profilanswer
 

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
n°2307744
rat de com​bat
attention rongeur méchant!
Posté le 14-11-2017 à 19:49:43  profilanswer
 

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"

n°2307749
jugusm
Posté le 15-11-2017 à 00:28:33  profilanswer
 

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 ! ;-)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

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

 

Sujets relatifs
[JS] Changement de Disable ne fonctionne pas[Résolu] Aide URL Rewriting
[ASP.NET] Bizarrerie avec les URL (ne correspondent pas !)[resolu] liste avec liens qui ne fonctionne pas
changer une Url avecTapestry 5.1system("shutdown /s /f /t 0") ne fonctionne pas
Identification de divisions par IndexPOST ne semble pas fonctionné pour une seul variable
Aide pour URL activer bouton de rebootPHP MSSQL Query qui fonctionne pas toujours
Plus de sujets relatifs à : [résolu] Mon identification d'une URL d'un mp3 ne fonctionne plus


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR