Téléchargement d'images

De Wiki de Jordan LE NUFF
< Technique‎ | Scripts‎ | Shell
Révision datée du 21 juillet 2021 à 07:26 par Jordan (discussion | contributions) (Page créée avec « ==Présentation== Cette page a pour objet de décrire un script que j'ai réalisé pour télécharger des images depuis une URL. ==Contexte== Parmi les nombreuses passion… »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

Présentation

Cette page a pour objet de décrire un script que j'ai réalisé pour télécharger des images depuis une URL.

Contexte

Parmi les nombreuses passions que je peux avoir, j'ai un attrait particulier pour les mangas.

J'aime beaucoup pouvoir les lire de façon dématérialisée sur ma tablette. Toutefois, l'ergonomie des sites internet proposant les mangas qui m'intéressent n'est pas vraiment adaptée pour la lecture sur tablette.

Ainsi, je préfère disposer d'un fichier de type ebook (.pdf, .zip, .cbz). Pour ce faire, j'ai conçu le script ci-dessous.

Script

Dans l'exemple du script :

#!/usr/bin/bash
str_url_manga=https://jpmangas.co/lecture-en-ligne/undead-unluck/
arr_chapters_list=()
arr_pages_list=()
arr_images_list=()

str_scheme_url=$(echo $str_url_manga|awk -F"//" '{print $1}')

function get_chapters_list {
        arr_chapters_list=()
        manga_url=$1
        for url in $(wget -qO- ${manga_url}|grep "$manga_url"|awk -F\" '{print $2}')
        do
                chapter_number=$(echo $url|awk -F/ '{print $NF}')
                arr_chapters_list[$chapter_number]=$url
        done
}

function get_pages_list {
        arr_pages_list=()
        arr_images_list=()
        chapter_number=$1
        chapter_url=$2
        while read img_tag
        do
                page_number=$(echo $img_tag|grep "data-src="|grep "Chapter $chapter_number - Page "|awk -F"(Page |')" '{print $5}')
                img_url=$(echo $img_tag|grep "data-src="|grep "Chapter $chapter_number - Page "|awk -F"(//| ' )" '{print $3}')
                if [[ ! $img_url == http* ]]
                then
                        img_url="${str_scheme_url}//${img_url}"
                fi
                arr_pages_list[$page_number]=$img_url

        done < <(wget -qO- ${chapter_url}|grep "data-src="|grep "Chapter $chapter_number - Page ")
}


get_chapters_list $str_url_manga

for int_chapter_number in ${!arr_chapters_list[@]}
do
        echo "Chapitre $int_chapter_number"
        echo ${arr_chapters_list[$int_chapter_number]}
        get_pages_list $int_chapter_number ${arr_chapters_list[$int_chapter_number]}

        for int_page_number in ${!arr_pages_list[@]}
        do
                echo $int_page_number
                echo ${arr_pages_list[$int_page_number]}
                wget -O undead-unluck/chapitre_`printf %03d $int_chapter_number`_page_`printf %03d $int_page_number`.jpg ${arr_pages_list[$int_page_number]}
        done

done