Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/06/2014, à 16:36

Yoannjap

Script bash de récupération d'info sur page Web, à l'AIDE !

Bonjour à tous,

Je ne m'y connais résolument pas du tout en langage de programmation de script. J'ai infiniment besoin de votre aide pour une tâche répétitive et quotidienne que j'exécute pour enrichir les mon deck partagé de flashcards d'Anki, logiciel d'apprentissage libre.

[Voici un URL-de-Flickr-choisi d'exemple, en vert : https://www.flickr.com/photos/calamity_ … 4696806650]
Je souhaite qu'un nouveau script exécute la chose suivante lorsque je l'exécute par le biais de « commande-du-script + URL-de-Flickr-choisie » : qu'il m'affiche sur le terminal, sous format texte, les informations suivantes :
    - 1. le titre de l'image (194/365 - Seven Deadly Sins - Lust. dans l'exemple) ;
    - 2. l'URL de l'artiste/photographe (https://www.flickr.com/photos/calamity_photography/ dans l'exemple) ;
    - 3. le nom de l'artiste/photographe (Courtney Carmody dans l'exemple) ;
    - 4. l'année de prise de vue de la photo (2010/ dans l'exemple) ;
    - 5. l'URL de la licence Creative Commons (https://creativecommons.org/licenses/by-sa/2.0/deed.fr dans l'exemple) ;
    - 6. l'intitulé correspondant cette même licence Creative Common (CC BY-SA 2.0 dans l'exemple).

Et le must de l'ultime must est que le terminal me les affiche sous ce format, que je puisse copier le bloc de texte directement sur l'éditeur Anki de ma flashcard :
<a href="URL-de-Flickr-choisi"><i>le titre de l'image</i></a>, by&nbsp;<a href="l'URL de l'artiste/photographe">le nom de l'artiste/photographe</a>, l'année de prise de vue de la photo, licensed under&nbsp;<a href="l'URL de la licence Creative Commons">l'intitulé correspondant cette même licence Creative Common</a>

Ce que le terminal m'afficherait, donc, dans le cas de l'exemple, une fois la commande+URL entrée :

<a href="https://www.flickr.com/photos/calamity_photography/4696806650"><i>194/365 - Seven Deadly Sins - Lust.</i></a>, by&nbsp;<a href="https://www.flickr.com/photos/calamity_photography/">Courtney Carmody</a>, 2010, licensed under&nbsp;<a href="https://creativecommons.org/licenses/by-sa/2.0/deed.fr">CC BY-SA 2.0</a>

Merci à qui pourra m'apporter son aide (assez immense, vu le temps que je perds chaque jour, dans cette opération faite jusqu'à présent "à la main", et répétée depuis le début des milliers de fois). Un grand merci d'avance !

Dernière modification par Yoannjap (Le 11/06/2014, à 16:58)

Hors ligne

#2 Le 12/06/2014, à 13:03

claudius01

Re : Script bash de récupération d'info sur page Web, à l'AIDE !

Bonjour,


1ère solution
-----------------
Comme ces infos sont disponibles dans la page, ce qui est le cas par exemple de "Seven Deadly Sins - Lust." qui est bien encadré par la balise title:

<title>194/365 - Seven Deadly Sins - Lust. | Flickr : partage de photos !</title>

tu peux utiliser l'excellent wget comme

$ wget [-les bonnes options] https://www.flickr.com/photos/calamity_photography/4696806650

et après ce n'est qu'une question de parsing de la page retournée et d'extraction des données souhaitées en espérant qu'un jour la page retournée ne soit pas totalement chanboulée...

2ième solution
-------------------
Utiliser l'API REST PHP proposée par ce site flickr avec Format de réponse PHP en série


NB: Maintenant, comme tu écris "Je ne m'y connais résolument pas du tout en langage de programmation de script", tu n'as plus qu'à trouver une bonne âme qui le ferait gracieusement voire à moindre frais en contactant d'abord la communauté des développeurs de ce site ;-)


Cordialement, A+
--
Claudius

Dernière modification par claudius01 (Le 12/06/2014, à 13:41)

Hors ligne

#3 Le 12/06/2014, à 15:05

Yoannjap

Re : Script bash de récupération d'info sur page Web, à l'AIDE !

Merci à toi pour ton aide Claudius01,

Mais avant ta réponse finalement, je suis monté sur le plongeoir, et j'ai sauté dans la boue (= je me suis auto-formé sur le tas tutoïsés).
Voici le résultat que j'ai pondu, pour ceux qui comme moi seraient perdus :

#!/bin/bash
url=$1
BOUTURL="`wget -q -O - $1 | sed -n '/data-track="photoAttributionBuddyIconClick">/p' | sed 's/.*<a href="//' | sed 's/".*//' | sed 's/^[ \t]*//;s/[ \t]*$//' | sed '$!N; /^\(.*\)\n\1$/!P; D'`"
AUTEURURL="https://www.flickr.com$BOUTURL"
TITREIMAGE="`wget -q -O - $1 | sed -n '/meta name="title" content="/p' | sed 's/.*e" content="//' | sed 's/">.*//' | sed 's/^[ \t]*//;s/[ \t]*$//' | sed '$!N; /^\(.*\)\n\1$/!P; D'`"
NOMAUTEUR="`wget -q -O - $AUTEURURL | sed -n '/"display_name":"/p' | sed 's/.*"display_name":"//' | sed 's/".*//' | sed 's/^[ \t]*//;s/[ \t]*$//' | sed '$!N; /^\(.*\)\n\1$/!P; D'`"
ANNEEIMAGE="`wget -q -O - $1 | sed -n '/"date_taken":"/p' | sed 's/.*"date_taken":"//' | sed 's/-.*//' | sed 's/^[ \t]*//;s/[ \t]*$//' | sed '$!N; /^\(.*\)\n\1$/!P; D'`"
CCURL="`wget -q -O - $1 | sed -n '/http:\/\/creativecommons.org\/licenses\//p; /https:\/\/creativecommons.org\/licenses\//p' | sed 's/.*href="//' | sed 's/">.*//' | sed 's/deed.*//' | sed 's/^[ \t]*//;s/[ \t]*$//' | sed '$!N; /^\(.*\)\n\1$/!P; D'`"
TITRECC="`wget -q -O - $CCURL | sed -n '/&mdash; CC/p' | sed 's/.*sh; //' | sed 's/<\/title>.*//' | sed 's/^[ \t]*//;s/[ \t]*$//' | sed '$!N; /^\(.*\)\n\1$/!P; D'`"

if [[ $TITRECC = "CC0"* ]] ;
  then
      echo '<a href="'$url'"><i>'$TITREIMAGE'</i></a>, by&nbsp;<a href="'$AUTEURURL'">'$NOMAUTEUR'</a>, '$ANNEEIMAGE', in the Public domain'
  else
      echo '<a href="'$url'"><i>'$TITREIMAGE'</i></a>, by&nbsp;<a href="'$AUTEURURL'">'$NOMAUTEUR'</a>, '$ANNEEIMAGE', licensed under <a href="'$CCURL'">'$TITRECC'</a>'
  fi

Hors ligne