#!/usr/bin/env bash # MIT License # Copyright (c) 2022 Angel Jumbo # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. generate_thumbnails() { echo "generate thumbnails ..." mkdir -p thumbnails rm -rf thumbnails/* # Count total number of images total_images=$(find ./wallpapers -type f | wc -l) current_image=0 for section_dir in ./wallpapers/*; do section_name="${section_dir##*/}" mkdir -p "thumbnails/$section_name" for img in "$section_dir"/*; do current_image=$((current_image + 1)) local img_filename="${img##*/}" local thumbnail="thumbnails/$section_name/$img_filename" echo "($current_image/$total_images): $img -> $thumbnail" magick "$img" -resize 300x300 "$thumbnail" done done echo "Thumbnail generation complete: $total_images images processed" } write_section_header() { echo "write section header ..." echo "

" >>$3 echo "$2" | tr a-z A-Z >>$3 echo "

" >>$3 } write_img() { echo "write image ..." local img_relative_path=${1#./} local section_name=$(echo "$img_relative_path" | cut -d'/' -f2) local img_filename="${1##*/}" local thumbnail="thumbnails/$section_name/$img_filename" echo " $1" >>$2 } rm *.html touch ./index.html echo " Gruvbox wallpapers

Gruvbox Wallpapers

" >./index.html color=1 maxPerPage=8 declare -a sections generate_thumbnails for subdir in ./wallpapers/*; do section="${subdir##*/}" sections+=("$section") write_section_header $color "$section" ./index.html page=1 img_count=0 subhtml="${section}_page${page}.html" touch ./$subhtml echo "
" >>./index.html echo "
" >>./index.html countImgs=$(find "$subdir" -type f | wc -l) countImgs=$((countImgs - 1)) for i in $(seq 1 $((($countImgs / $maxPerPage) + 1))); do echo "" >>./index.html done echo "
" >>./index.html echo "
" >>./index.html echo "
" >>./$subhtml for wallpaper in ${subdir}/*; do if [ "$img_count" -ge $maxPerPage ]; then echo "
" >>./$subhtml page=$((page + 1)) subhtml="${section}_page${page}.html" touch ./$subhtml echo "
" >>./$subhtml img_count=0 fi write_img "$wallpaper" "./$subhtml" img_count=$((img_count + 1)) done echo "
" >>./$subhtml echo "
" >>./index.html echo "
" >>./index.html color=$((color + 1)) if [ "$color" -eq 8 ]; then color=1 fi done echo "
" >>./index.html echo "" >>./index.html echo " " >>./index.html