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

Yoannjap Messages postés 19 Statut Membre -  
ellana29460 Messages postés 805 Statut Membre -
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

  1. ellana29460 Messages postés 805 Statut Membre 181
     
    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.
    0
  2. Flachy Joe Messages postés 2303 Statut Membre 261
     
    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"

    0
  3. ellana29460 Messages postés 805 Statut Membre 181
     
    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
    0
    1. ellana29460 Messages postés 805 Statut Membre 181
       
      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
      )...
      0