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 30/12/2011, à 14:18

grobs

[Script à améliorer] Télécharger les favoris d'un compte DeviantART

Bonjour à toutes et à tous.

Ce topic est simplement là pour vous faire partager un script que j'ai fait et que j'utilise depuis maintenant plus d'un an.
Le script en question permet de télécharger toutes les images favorites d'un compte DeviantART.
Le script est utilisable en l'état et fonctionne très bien mais je pense qu'il y a des optimisations à faire.

Voici les idées de modifications à apporter au script :
- Gérer les doublons (pour le moment deux doublons sont des fichiers du même nom, il serait bon de faire un md5 par exemple pour détecter les doublons)
- Faire une interface graphique (que me conseillez-vous d'utiliser ?)
- Gérer des arguments pour le script (pour pouvoir prédéfinir les variables $LIMIT et $deviantID autrement qu'en dur)

Des idées ?

#!/bin/bash
#DeviantART Favorites Downloader
deviantID=$1
LIMIT=50
round=0
nbrOfEmptyResults=0
tmpDirectory="tmp_links"

RED=`tput setaf 1`
GREEN=`tput setaf 2`
YELLOW=`tput setaf 3`
BLUE=`tput setaf 4`
PURPLE=`tput setaf 5`
AZURE=`tput setaf 6`
WHITE=`tput setaf 7`

getLIST () {
#    linkLIST=$(curl --retry-max-time 15 --retry 3 --silent "http://backend.deviantart.com/rss.xml?q=favby:$deviantID&type=deviation&limit=$LIMIT&offset=$round" | grep "fc" | cut -d '"' -f 2)
#    linkLIST=$(curl --retry-max-time 15 --retry 3 --silent "http://backend.deviantart.com/rss.xml?q=favby:$deviantID/40022815&type=deviation&limit=$LIMIT&offset=$round" | grep "fc" | cut -d '"' -f 2)
    linkLIST=$(curl --retry-max-time 15 --retry 3 --silent "http://backend.deviantart.com/rss.xml?q=favby:$deviantID&type=deviation&limit=$LIMIT&offset=$round" | perl -0ne 'print "$1\n" while (/media:content url=\"(.*?)\".*?/igs)' | grep -v "http://www.deviantart.com/download/")
    if [[ -z $linkLIST  ]]
    then
            echo "${PURPLE}No more picture ?${WHITE}"
        nbrOfEmptyResults=`expr $nbrOfEmptyResults + 1`
    else
        for picture_url in $linkLIST
        do
            filename=`echo "$picture_url" | rev | cut -d"/" -f1 | rev`
            if [ ! -h "./$tmpDirectory/$filename" ] && [ ! -f "./$filename" ]
            then
                if [ `echo "$filename" | grep -iE "\.(png|jpe?g|gif|tiff)$" | wc -l` -eq 1 ]
                then
                    echo "Télechargement du fichier ${AZURE}$filename${WHITE}"
                        wget --no-verbose ${picture_url}
                else
                    echo "${RED}File \"$filename\"is not a picture.${WHITE}"
                fi
            else
#                printf "%-60s (%)" "$filename" "[already exists]"
                echo "$filename ${GREEN}[already downloaded]${WHITE}"
            fi
        done
    fi

    round=$(( $round + $LIMIT ))
    if [ $nbrOfEmptyResults -lt 6 ]
    then
        getLIST
    fi
}

############################################################

# On crée le répertoire des liens temporaires
if [ ! -d "$tmpDirectory" ]
then
    mkdir "$tmpDirectory"
fi

# Préparation de l'environnement
for directory in *
do
    if [ -d "$directory" ]
    then
        cd "$directory"

        for file in *
        do
            if [ -f "./$file" ] && [ ! -h "../$tmpDirectory/$file" ]
            then
                # On protège le nom du fichier par le -- qui permet de ne pas interprêter les arguments suivants comme des coptions, même s'ils commencent par - ou par --
                ln -s -- "$file" "../$tmpDirectory/"
            fi
        done

        cd ../
    fi
done

############################################################

getLIST
rm -r "$tmpDirectory"
echo "${BLUE}Round: $round${WHITE}"

Pour utiliser ce script, téléchargez-le sous un nom quelconque (da_downloader.sh par exemple) puis lancez-le de la manière suivante :

./da_downloader.sh LE_NOM_DU_COMPTE

en remplaçant évidemment LE_NOM_DU_COMPTE par un ID DeviantART ("matmoon" par exemple).

PS : merci de faire un retour ici si vous utilisez mon script


"Mieux vaut vérifier que les enceintes sont bien branchées avant de recompiler un noyau". (vieux proverbe de Debianneux)

Hors ligne

#2 Le 25/05/2013, à 11:58

spinoziste

Re : [Script à améliorer] Télécharger les favoris d'un compte DeviantART

Salut super ton script . cool

Chez moi il fonctionne à priori nickel . Il faut juste préalablement installer : curl .

Dernière modification par spinoziste (Le 25/05/2013, à 11:58)


Nous mourrons tous .

Hors ligne