Files
dotfiles/scripts/shell/images-indexer.sh
Matheus Albino e142259896 Some updates
2024-07-02 21:31:48 -03:00

156 lines
3.9 KiB
Bash
Executable File

#!/bin/bash
commands_to_check=(gallery-dl gdl.sh)
commands_not_found=()
for command in ${commands_to_check[@]}; do
if ! command -v "$command" &> /dev/null; then
commands_not_found+=("$command")
fi
done
if [ ${#commands_not_found[@]} -ne 0 ]; then
echo 'The following commands are necessary in order to run the script, but were not found:'
for command in ${commands_not_found[@]}; do
echo " \"$command\""
done
exit 1
fi
cur_dir=`pwd`
furry_commission_ideas_path=/mnt/e/home/documents/data-hoarding/furry-commission-ideas
furry_commission_ideas_urls_filename="urls.txt"
scripts_path=/home/cloud/repos/personal-devboot/scripts/shell
if [ ! -d $furry_commission_ideas_path ]; then
echo "[ERROR] The ideas folder was not found (\"$furry_commission_ideas_path\")"
exit 1
fi
if [ ! -d $scripts_path ]; then
echo "[ERROR] The scripts folder was not found (\"$scripts_path\")"
exit 1
fi
input_media_url() {
read -p "[INFO] Please inform the media's url: " media_url
echo "$media_url"
}
media_url=`input_media_url`
while [ -z "$media_url" ]; do
media_url=`input_media_url`
done
# remove trailing slashes
media_url=`sed 's:/*$::' <<< "$media_url"`
url_regex='(https?)://[-[:alnum:]\+&@#/%?=~_|!:,.;]*[-[:alnum:]\+&@#/%=~_|]'
if [[ ! $media_url =~ $url_regex ]]; then
echo "The URL informed is not valid."
exit 1
fi
cd $furry_commission_ideas_path
existing_folders=($(find * -type d -not -path artists -not -path kinks -not -path ideas))
filtered_existing_folders=()
# removing artists folder depth 2 only
for folder in "${existing_folders[@]}"; do
if [[ ! $folder =~ ^artists/[^/]+$ ]]; then
filtered_existing_folders+=( "$folder" )
fi;
done
existing_folders=("${filtered_existing_folders[@]}")
input_create_folder() {
read -p "[INFO] Please create one: " new_foldername
echo "$new_foldername"
}
selected_folder=''
if [ -z "${existing_folders}" ]; then
echo "[INFO] There are no folders in the 'furry-commission-ideas' folder."
new_foldername=$(input_create_folder)
while [ -z "$new_foldername" ]; do
new_foldername=$(input_create_folder)
done
mkdir --parents "$new_foldername"
selected_folder="$new_foldername"
fi
input_create_folder() {
read -p "[INFO] Please informe a name for the new folder: " new_foldername
echo "$new_foldername"
}
input_select_folder() {
read -p "[INFO] Please inform the desired option: " selected_option
if [ "$selected_option" == 'n' ]; then
selected_folder=`input_create_folder`
while [ -z "$selected_folder" ]; do
selected_folder=`input_create_folder`
done
mkdir --parents "$selected_folder"
else
selected_folder=${existing_folders[$selected_option]}
fi
echo "$selected_folder"
}
if [ -z "$selected_folder" ]; then
printf "\n"
echo "[INFO] Folders:"
for ((i = 0; i < ${#existing_folders[@]}; i++)); do
foldername=${existing_folders[$i]}
echo " $i) $foldername"
done
echo " n) (create a new folder)"
printf "\n"
selected_folder=`input_select_folder`
while [ -z "$selected_folder" ]; do
selected_folder=`input_select_folder`
done
fi
cd $selected_folder
if [ -f "$furry_commission_ideas_urls_filename" ] && grep -qE "$media_url" -i "$furry_commission_ideas_urls_filename"; then
printf "\n"
echo "[INFO] This folder already has the media informed."
echo "[INFO] Exiting..."
exit 0
fi
if ! command_output=$($scripts_path/gdl.sh $media_url); then
exit 1
fi
media_filenames=()
for ((i = 0; i < ${#command_output[@]}; i++)); do
filename=${command_output[$i]}
media_filenames+=$(basename "$filename")
done
for ((i = 0; i < ${#media_filenames[@]}; i++)); do
media_filename=${media_filenames[$i]}
echo "$media_filename: $media_url" >> $furry_commission_ideas_urls_filename
done