initial scripts
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
#!/bin/bash
|
||||
# Watch this folder for incoming files
|
||||
# Rename each file to a hash of some kind
|
||||
# Put each file into a folder of the old name
|
||||
|
||||
# Check for .known-files which tracks hash history to prevent duplicates
|
||||
# Will create if -f flag is used, otherwise exits to prevent accidental runs
|
||||
if [[ ! -f .known-files ]]; then
|
||||
if [[ "$1" != "-f" ]]; then
|
||||
echo ".known-files not found. Use -f to override."
|
||||
exit 1
|
||||
fi
|
||||
touch .known-files
|
||||
fi
|
||||
|
||||
command -v file >/dev/null 2>&1 || { echo "file command not found"; exit 1; }
|
||||
command -v magick >/dev/null 2>&1 || { echo "imagemagick not found"; exit 1; }
|
||||
command -v dctfilename >/dev/null 2>&1 || { echo "dctfilename not found"; exit 1; }
|
||||
command -v webpmux >/dev/null 2>&1 || { echo "webpmux not found"; exit 1; }
|
||||
command -v gifski >/dev/null 2>&1 || { echo "gifski not found"; exit 1; }
|
||||
|
||||
while true; do
|
||||
for f in *.*; do
|
||||
# Check if we need to skip
|
||||
[ -e "$f" ] || continue
|
||||
[ -e "$f.part" ] && continue
|
||||
[ ${f##*.} == "part" ] && continue
|
||||
[ ${f##*.} == "sh" ] && continue
|
||||
|
||||
# Print some file info, and check file validity
|
||||
FILEINFO=`file $f`
|
||||
echo $FILEINFO
|
||||
if echo "$FILEINFO" | grep -q empty; then
|
||||
continue
|
||||
fi
|
||||
if ! echo "$FILEINFO" | grep -iq "image\|video"; then
|
||||
continue
|
||||
echo "skip"
|
||||
fi
|
||||
|
||||
# Handle webp as a special case, and defer to next iteration
|
||||
if [ ${f##*.} == "webp" ]
|
||||
then
|
||||
if [ `magick identify $f | wc -l` -gt 1 ]
|
||||
then
|
||||
echo "Animated webp. Converting to gif..."
|
||||
TMPDIR=$(mktemp -d)
|
||||
magick "$f" "$TMPDIR/frame-%d.png"
|
||||
DELAYS=$(webpmux -info "$f" | tail -n+6 | awk '{print $7}')
|
||||
FPS=$(echo "$DELAYS" | head -n1 | awk '{printf "%.0f", 1000/$1}')
|
||||
gifski --fps $FPS "$TMPDIR"/frame-*.png -o "${f%.*}.gif"
|
||||
rm -rf "$TMPDIR"
|
||||
rm "$f"
|
||||
continue
|
||||
else
|
||||
echo "Picture webp. Converting to jpg..."
|
||||
magick "$f" "${f%.*}.jpg"
|
||||
rm "$f"
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
# Determine phash and destination folder
|
||||
if command -v dctfilename >/dev/null 2>&1 && ! echo "$FILEINFO" | grep -iq "video"; then
|
||||
NAME=`dctfilename $f`
|
||||
else
|
||||
NAME=`md5sum $f | awk '{print $1}'`
|
||||
fi
|
||||
FOLDER=${f%.*}
|
||||
FOLDER=${FOLDER%\(*}
|
||||
|
||||
# Check if the file's hash already exists in .known-files
|
||||
if grep -F -q $NAME .known-files; then
|
||||
echo "$NAME is a duplicate file"
|
||||
mkdir -p duplicates
|
||||
mv -f $f "duplicates/$NAME.${f##*.}"
|
||||
else
|
||||
# For new files, add hash to .known-files and move to destination folder
|
||||
echo $NAME >> .known-files
|
||||
mkdir -p $FOLDER
|
||||
echo "Moving '$f' to '$FOLDER/$NAME.${f##*.}'"
|
||||
mv -f $f "$FOLDER/$NAME.${f##*.}"
|
||||
fi
|
||||
echo '------'
|
||||
done
|
||||
sleep 1
|
||||
done
|
||||
Reference in New Issue
Block a user