Files
general-scripts-and-system-…/customscripts/download_file_list
T

57 lines
1.7 KiB
Bash

#!/bin/bash
# manually created arrays for file types and extensions
## notes: from twitter downloader mp4 files show as ISO?
types_arr=('MPEG' 'ISO' 'JPEG' 'PNG' 'GIF' 'WebM' 'RIFF')
exts_arr=('mp4' '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 <output_directory> <file_list>"
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
# get default basename of downloaded file
file_basename=$(basename "$line")
# download the file to a tmp
echo "Downloading $line to $1/$file_basename"
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 -e "\tRenaming $file_basename to $new_name\n"
mv "$tmp_file" "$new_name"
fi
else
echo -e "\n$file_basename not a supported format: $(file $tmp_file)! Deleting\n"
rm -f "$tmp_file"
fi
# increment the count regardless
count=$((count + 1))
done
done