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

Fermé
Yoannjap Messages postés 16 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 1 juillet 2015 - Modifié par zipe31 le 12/06/2014 à 10:25
ellana29460 Messages postés 689 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 12 septembre 2015 - 25 févr. 2015 à 21:41
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 !
A voir également:

3 réponses

ellana29460 Messages postés 689 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 12 septembre 2015 172
14 févr. 2015 à 03:38
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
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 259
14 févr. 2015 à 12:57
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
ellana29460 Messages postés 689 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 12 septembre 2015 172
25 févr. 2015 à 20:07
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
ellana29460 Messages postés 689 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 12 septembre 2015 172
25 févr. 2015 à 21:41
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