diff --git a/.gitignore b/.gitignore index 8cab2ec..7da8f5a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ webhook.txt tag.txt +*.tmp \ No newline at end of file diff --git a/customscripts/download_file_list b/customscripts/download_file_list index d6d0612..04dcaf9 100644 --- a/customscripts/download_file_list +++ b/customscripts/download_file_list @@ -1,16 +1,53 @@ #!/bin/bash -if [ -z $1 -o ! -f "$2" ]; then +# manually created arrays for file types and extensions +types_arr=('MPEG' 'JPEG' 'PNG' 'GIF' 'WebM' 'RIFF') +exts_arr=('mp4' 'jpg' 'png' 'gif' 'webm' 'webp') +tmp_file="$1/download.tmp" + +# check for existance of $1 or if $2 is a file +if [ -z $1 ] || [ ! -f "$2" ]; then echo "Usage: $0 " echo "ExaMPLE: download_file_list Downloads to_download.txt" exit 1 fi +# create the out dir if not extant if [ ! -d "$1" ]; then echo "Output directory does not exist: $1 Creating" mkdir "$1" fi +# read the input file and loop through it cat "$2" | \ while read line; do - echo "curl -o \"$1/$(basename $line)\" \"$line\"" - done \ No newline at end of file + # download the file to a tmp + echo "Downloading $line to $1" + curl -s -o "$tmp_file" "$line" + + # get the file type + type=$(file "$tmp_file" | awk '{print $2}') + + # md5 hash the file for a deterministic file name + namehash=$(md5sum "$tmp_file" | awk '{print $1}') + + # map the file type to the corresponding extension + count=0 + # loop through types for patch with file type + for item in "${types_arr[@]}"; do + if [[ " ${types_arr[@]} " =~ " ${type} " ]]; then + # if type matches + if [[ "$item" == "$type" ]]; then + # rename the downloaded file + new_name="$1/$namehash.$(echo ${exts_arr[$count]})" + echo "Renaming $tmp_file to $new_name" + mv "$tmp_file" "$new_name" + fi + else + echo "$(basename $line) not a supported format: $type! Deleting" + rm -f "$tmp_file" + fi + + # increment the count regardless + count=$((count + 1)) + done + done \ No newline at end of file