#!/bin/bash # 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 # 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