Téléchargement d'images
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 :
- le manga à télécharger est Undead Unluck
- le site internet hébergeant le manga est https://jpmangas.co/
- l'URL du manga est donc https://jpmangas.co/lecture-en-ligne/undead-unluck/
#!/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