commande SED pour récupérer les paroles sur LyricWiki |
Bienvenue invité ( Connexion | Inscription )
commande SED pour récupérer les paroles sur LyricWiki |
19 Apr 2017, 11:56
Message
#1
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 Inscrit : 2 Jun 2006 Membre no 62 332 |
Bonjour,
Puisque maintenant je suis devenu un pro d'Applescript ( voir mon autre post), je cherche à récupérer les paroles de chanson sur lyricWiki. J'ai pour ce faire une commande qui ne fonctionne pas : combinaison de curl, grep et de sed : Code set lesParoles to (do shell script "curl " & quoted form of lyricWikiPageURL & "|grep \"'lyricbox'\"|sed -e \"s/<div class='.*lyricbox' >//g\"|sed -e's/<br \\/>/" & (ASCII character 13) & "/g'") Les paroles se trouvent bien dans une div dont la class est lyricbox. lyricWikiPageURL est la variable qui contient l'url de la page avec les paroles. Mais la variable lesParoles reste désespérément vide quoi que je fasse. Est-ce qu'un pro des commandes UNIX pourrait m'aider ? Merci d'avance. m00n -------------------- MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
|
|
|
21 Apr 2017, 02:55
Message
#2
|
|
Macbidouilleur de vermeil ! Groupe : Membres Messages : 879 Inscrit : 4 Apr 2004 Lieu : Lorraine - 54 Membre no 17 184 |
Es tu certain de n'avoir rien dans la variable issue de ton code ?
En utilisant ton code dans l'éditeur Applescript et après avoir déclaré la variable lyricWikiPageURL par une adresse valide, j'obtiens un résultat qui présente certes plusieurs problèmes mais qui n'est pas vide. J'ai en effet noté plusieurs erreurs dans la partie shell script de ta commande que j'ai corrigé ci-dessous: A noter que le résultat n'est pas directement lisible en fichier texte. En effet dans la variable retournée, chaque caractère est présenté en code HTML de la forme : Citation &#<code décimal>; Le résultat doit donc être soit lu avec un navigateur (qui procède automatiquement à son décodage) soit traité et correctement décodé pour devenir un texte lisible. Ne sachant pas comment tu souhaites utiliser cette variable je ne me suis pas attardé sur la partie décodage (peut être d'ailleurs cela fait t'il déjà parti de la suite de ton code que tu ne dévoile pas). J'ai pris comme source un exemple de page : Code "http://lyrics.wikia.com/wiki/Céline_Dion:S%27il_Suffisait_D%27aimer" pour la commande shell corrigée cela donne ça: Code curl "http://lyrics.wikia.com/wiki/Céline_Dion:S%27il_Suffisait_D%27aimer" | grep "'lyricbox'" | sed -e "s/<div class='lyricbox'>//g" | sed -e "s/<div class='lyricsbreak'><\/div>//g" | sed -e 's/<br \/>/@/g' | tr '@' $'\x0A' Une fois transposée dans applescript cela donne cela: Code set lyricWikiPageURL to "http://lyrics.wikia.com/wiki/Céline_Dion:S%27il_Suffisait_D%27aimer" set lesParoles to (do shell script "curl " & quoted form of lyricWikiPageURL & " | grep \"'lyricbox'\" | sed -e \"s/<div class='lyricbox'>//g\" | sed -e \"s/<div class='lyricsbreak'><\\/div>//g\" | sed -e 's/<br \\/>/@/g' | tr '@' $'\\x0A'") En revenant sur le Shell et en imaginant que tu souhaites lire les données en html avec ton navigateur, je propose cette commande modifiée : J'ai ici enlevé la suppression des balises <br/> du code (qui participent à la mise en page). Le résultat sera enregistré sur ton bureau, dans un fichier lyrics_wikia_test.html, puis directement ouvert par ton navigateur par défaut (chez moi avec Safari le texte apparait alors en clair) Code curl "http://lyrics.wikia.com/wiki/Céline_Dion:S%27il_Suffisait_D%27aimer" | grep "'lyricbox'" | sed -e "s/<div class='lyricbox'>//g" | sed -e "s/<div class='lyricsbreak'><\/div>//g" > ~/Desktop/lyrics_wikia_test.html; open ~/Desktop/lyrics_wikia_test.html J'espère que ça pourra t'aider. Bon Courage -------------------- MP Intel Dual Xéon 3 GHz - MacOSX 10.10.3 - ATI Radeon HD 5770 - ATTO UL5D - Apple Cinema HD Display 23 pouces MBP 15' 2017 - MBP 13' mid 2009 - iMac 24' 8,1 2,8GHz - MP G4 MDD Bi 1,25 GHz - MP G4 Quicksylver 933MHz |
|
|
22 Apr 2017, 10:38
Message
#3
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 Inscrit : 2 Jun 2006 Membre no 62 332 |
Alors là, chapeau bas. Quelle démonstration, quelle clarté !
Et, heu ... juste une chose : Céline Dion ? Est-ce bien raisonnable ? -------------------- MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
|
|
|
22 Apr 2017, 12:16
Message
#4
|
|
Macbidouilleur de vermeil ! Groupe : Membres Messages : 879 Inscrit : 4 Apr 2004 Lieu : Lorraine - 54 Membre no 17 184 |
Citation juste une chose : Céline Dion ? blink.gif Est-ce bien raisonnable ? rotfl.gif Pas que je sois spécialement fan , mais j'ai cherché francophone et pas trouvé mieux (faut dire que la recherche par artiste n'est pas super aisée sur ce site). Quelle méthode vas tu finalement utiliser, la méthode html avec ton navigateur ou alors le txt avec un décodage perso ? As tu pu adapter la commande à ton programme ? Ce message a été modifié par teddy7545 - 22 Apr 2017, 12:16. -------------------- MP Intel Dual Xéon 3 GHz - MacOSX 10.10.3 - ATI Radeon HD 5770 - ATTO UL5D - Apple Cinema HD Display 23 pouces MBP 15' 2017 - MBP 13' mid 2009 - iMac 24' 8,1 2,8GHz - MP G4 MDD Bi 1,25 GHz - MP G4 Quicksylver 933MHz |
|
|
22 Apr 2017, 13:06
Message
#5
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 Inscrit : 2 Jun 2006 Membre no 62 332 |
Le but étant de me faire une application pour rechercher et enregistrer automatiquement les paroles de mes morceaux dans iTunes, je vais essayer de décoder le résultat à l'aide d'une méthode perso. Mais c'est pas gagné, je ne sais pas encore comment procéder. Je me renseigne sur le net d'abord. Si tu as une idée, n'hésite pas, hein.
-------------------- MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
|
|
|
22 Apr 2017, 13:35
Message
#6
|
|
Macbidouilleur de vermeil ! Groupe : Membres Messages : 879 Inscrit : 4 Apr 2004 Lieu : Lorraine - 54 Membre no 17 184 |
On trouve différentes solutions sur le net mais il faut souvent installer un package.
A défaut d'installation spécifique, tu peux procéder comme ça par exemple : Code php -r 'while(($line=fgets(STDIN)) !== FALSE) echo html_entity_decode($line, ENT_QUOTES|ENT_HTML401);' Ce qui donne la commande shell complète comme ceci Code curl "http://lyrics.wikia.com/wiki/Céline_Dion:S%27il_Suffisait_D%27aimer" | grep "'lyricbox'" | sed -e "s/<div class='lyricbox'>//g" | sed -e "s/<div class='lyricsbreak'><\/div>//g" | sed -e 's/<br \/>/@/g' | tr '@' $'\x0A' | php -r 'while(($line=fgets(STDIN)) !== FALSE) echo html_entity_decode($line, ENT_QUOTES|ENT_HTML401);' Ou encore comme cela si tu souhaites enregistrer le résultat dans un fichier texte (et l'ouvrir directement) Code curl "http://lyrics.wikia.com/wiki/Céline_Dion:S%27il_Suffisait_D%27aimer" | grep "'lyricbox'" | sed -e "s/<div class='lyricbox'>//g" | sed -e "s/<div class='lyricsbreak'><\/div>//g" | sed -e 's/<br \/>/@/g' | tr '@' $'\x0A' | php -r 'while(($line=fgets(STDIN)) !== FALSE) echo html_entity_decode($line, ENT_QUOTES|ENT_HTML401);' > ~/Desktop/Lyrics_test1.txt; open ~/Desktop/Lyrics_test1.txt
Ce message a été modifié par teddy7545 - 22 Apr 2017, 14:02. -------------------- MP Intel Dual Xéon 3 GHz - MacOSX 10.10.3 - ATI Radeon HD 5770 - ATTO UL5D - Apple Cinema HD Display 23 pouces MBP 15' 2017 - MBP 13' mid 2009 - iMac 24' 8,1 2,8GHz - MP G4 MDD Bi 1,25 GHz - MP G4 Quicksylver 933MHz |
|
|
22 Apr 2017, 13:46
Message
#7
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 Inscrit : 2 Jun 2006 Membre no 62 332 |
tu peux procéder comme ça par exemple : Ah la vache ! Mais où tu vas chercher tout ça ? Eh bien je crois bien que mon problème est résolu. Merci, merci merci mille fois. -------------------- MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
|
|
|
22 Apr 2017, 14:08
Message
#8
|
|
Macbidouilleur de vermeil ! Groupe : Membres Messages : 879 Inscrit : 4 Apr 2004 Lieu : Lorraine - 54 Membre no 17 184 |
Je ne suis pas magicien ... mais j'aime beaucoup le code en général y compris les commandes shell ...
Je prend beaucoup de notes à chaque fois que je trouve une solution intéressante. Ca peut toujours servir pour moi ou pour répondre aux questions sur macbidouille. Pour le reste Google est mon ami J'avais déjà commencé à chercher après ma réponse partielle d'hier ... Pour finir, si tu souhaites remettre cette solution dans ton applescript ça donne : Code set lyricWikiPageURL to "http://lyrics.wikia.com/wiki/Céline_Dion:S%27il_Suffisait_D%27aimer" set lesParoles to (do shell script "curl " & quoted form of lyricWikiPageURL & " | grep \"'lyricbox'\" | sed -e \"s/<div class='lyricbox'>//g\" | sed -e \"s/<div class='lyricsbreak'><\\/div>//g\" | sed -e 's/<br \\/>/@/g' | tr '@' $'\\x0A' | php -r 'while(($line=fgets(STDIN)) !== FALSE) echo html_entity_decode($line, ENT_QUOTES|ENT_HTML401);'") Bonne continuation -------------------- MP Intel Dual Xéon 3 GHz - MacOSX 10.10.3 - ATI Radeon HD 5770 - ATTO UL5D - Apple Cinema HD Display 23 pouces MBP 15' 2017 - MBP 13' mid 2009 - iMac 24' 8,1 2,8GHz - MP G4 MDD Bi 1,25 GHz - MP G4 Quicksylver 933MHz |
|
|
Nous sommes le : 12th November 2024 - 07:14 |