Script bash de récupération d'info sur page Web

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(disponible ici : https://ankiweb.net/shared/info/2428949188 logiciel d'apprentissage libre.

Voici un URL-de-Flickr d'exemple, en vert : https://www.flickr.com/photos/calamity_photography/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-ultime 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 <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 <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 <a href="https://www.flickr.com/photos/calamity_photography/">Courtney Carmody</a>, 2010, licensed under <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 !

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. je bosse dessus depuis déja 1h30, mais je ne lache pas le morceau. ca va m'occuper pendant mes vacances et me fera une bonne révision pour mes cours de script linux.
    1. Salut,
      voila un début de script à améliorer :
      #!/bin/bash
      
      page=$1
      
      echo "[DEBUG] Telechargement de la page..."
      html=$(wget -O - $page 2>/dev/null)
      
      echo "[DEBUG] Recherche des infos..."
      photo_init=$(grep "Y.photo.init" <<< "$html")
      
      OLD_IFS=$IFS
      IFS='{' read -a array <<< "$photo_init"
      IFS=$OLD_IFS
      
      title=$(sed "s/.*\"title\":\"\([^\"]*\).*/\1/" <<< ${array[1]} )
      path=$(sed "s/.*\"url\":\"\([^\"]*\).*/\1/" <<< ${array[1]} )
      galerie=$(sed "s/\(\\/.*\)\\/.*\\//\1/" <<< $path)
      owner=$(sed "s/.*\"ownername\":\"\([^\"]*\).*/\1/" <<< ${array[1]} )
      date=$(sed "s/.*\"date_taken\":\"\([^\"]*\).*/\1/" <<< ${array[1]} )
      year=$(sed "s/\([0-9]*\).*/\1/" <<< $date )
      
      echo "Titre : $title"
      echo "Auteur : $owner"
      echo "Galerie : $galerie"
      echo "Date : $date"
      echo "Année : $year"

      1. je viens de finir le script, mais je ne peux pas aficher le nom de la license creative commons. je l'ai remplacé par "license cretive commons"

        #!/bin/bash
        
        if [[ $1 != "" ]]; then
            if [[ $1 != "*flickr.com/*" ]]; then
                cd $HOME
                page=$1
                mkdir tmp 2>/dev/null
                rm tmp/* 2>/dev/null
        
                echo "récupération de la page web ..."
        
                wget -P tmp $page -q
                cd tmp
                
                echo "[OK]"
                echo "extraction du titre ..."
                titre=`grep -e '<title>' pge | cut -d '>' -f 2 | cut -d '|' -f 1` #ok
                #methode alternative : titre=`grep -e '<meta name="title"' pge | cut -d '"' -f 8`
                echo "[OK]"
                echo "extraction des informations de l'auteur ..."
                owner=`echo $page | cut -d '/' -f 1,2,3,4,5 | tr ' ' '/'` #ok
                ownername=`grep -A1 -e 'photoAttributionNameClick' 4696806650 | grep -v '=' | cut -d $'\t' -f 10` #ok
                echo "[OK]"
                echo "extraction de la date de prise de vue ..."
                annee=`grep -e "Photo prise le" pge | cut -d '>' -f  2 | cut -d '<' -f 1 | cut -d ' ' -f 3` #ok
                echo "[OK]"
                echo "extraction des informations de copyright ..."
                license=`grep -n -e 'Certains droits réservés' pge | grep -n 'Certains droits réservés' | grep '1:' | cut -d '"' -f 2` #ok
                licensename=`license creative commons`
                echo "[OK]"
                echo ""
                echo ""
                echo "<a href=\"$1\"><i>$titre</i></a>, by <a href=\"$owner\">$ownername</a>, $annee, licensed under <a href=\"$licence\">$licencename</a>"
                rm *
                cd ..
                rmdir tmp
            fi
        fi
        exit
        


        je l'ai testé à l'instant, il fonctionne bien
        1. je suis un boulet, le script fonctionne, pais il ne devrai pas : pour éviter les soucis, il faut enlever les lignes n°4 et 37 (
              if [[ $1 != "*flickr.com/*" ]]; then
          et
              fi
          )...