Merge branch 'toys' into 'master'

toys/checkmissing: check for missing files in destinations and toys/createindex mime-type update

See merge request ScriptFanix/AtOM!4
This commit is contained in:
Vincent Riquer 2025-01-23 00:07:21 +00:00
commit 2c5854c835
2 changed files with 97 additions and 6 deletions

88
toys/checkmissing Executable file
View File

@ -0,0 +1,88 @@
#!/usr/bin/env bash
# config structures
declare -A \
destinationchannels \
destinationfat32compat \
destinationcopymime \
destinationformat \
destinationfrequency \
destinationid \
destinationloss \
destinationmaxbps \
destinationnormalize \
destinationpath \
destinationquality \
destinationrename \
destinationnoresample \
destinationrenamepath \
destinationskipmime \
|| {
echo "Check your Bash version. You need >= 4.0" >&2
exit $EBASHVERS
}
declare -r \
DOCDIR=./doc \
LIBDIR=./lib \
SHAREDIR=./share
declare -r \
exampleconf=$DOCDIR/example.cfg \
schema=$SHAREDIR/schema.sql \
\
oldIFS="$IFS"
cffile="$HOME/.atom/atom.cfg"
LC_ALL=C
shopt -s extglob
for function in "$LIBDIR"/*/*
do
source "$function"
done
while getopts 'Dr' opt
do
case $opt in
D) (( debug++ )) ;;
r) regen=1 ;;
esac
done
getConfig
openDatabase
echo 'SELECT id,filename FROM destination_files WHERE filename IS NOT NULL;' >&3
echo 'SELECT "AtOM:NoMoreFiles";' >&3
read -u4 filename
until [[ $filename == AtOM:NoMoreFiles ]]
do
files+=("$filename")
read -u4 filename
done
echo 'BEGIN TRANSACTION;' >&3
echo -n "Checking for missing files... "
for filename in "${files[@]}"
do
id=${filename%%::AtOM:SQL:Sep::*}
filename=${filename#*::AtOM:SQL:Sep::}
if ! [ -f "$filename" ]
then
echo -e "\r$filename\033[K"
((regen))&&Update destination_files last_change 0 <<<"id = $id"
echo -n "Checking for missing files... "
(( missing++ ))
fi
progressSpin
done
echo 'COMMIT;' >&3
echo -e "\r${missing:-0} missing files\033[K"
closeDatabase

View File

@ -407,10 +407,13 @@ do
rest="${rest#*::AtOM:SQL:Sep::}" rest="${rest#*::AtOM:SQL:Sep::}"
case $mimetype in case $mimetype in
application/ogg\ opus) type=Opus ;; application/ogg\ opus) type=Opus ;;
audio/ogg\ opus) type=Opus ;;
application/ogg\ vorbis) type=Vorbis ;; application/ogg\ vorbis) type=Vorbis ;;
audio/ogg\ vorbis) type=Vorbis ;;
audio/mp4) type=MPEG4\ Audio;; audio/mp4) type=MPEG4\ Audio;;
audio/mpeg) type=MPEG\ Audio;; audio/mpeg) type=MPEG\ Audio;;
audio/x-flac) type=FLAC ;; audio/x-flac) type=FLAC ;;
audio/flac) type=FLAC ;;
video/mpeg) type=MPEG\ Video;; video/mpeg) type=MPEG\ Video;;
video/webm) type=WebM ;; video/webm) type=WebM ;;
video/x-flv) type=Flash\ Video;; video/x-flv) type=Flash\ Video;;
@ -687,9 +690,9 @@ maxcountlen=${#maxcountlen}
rest="${line#*::AtOM:SQL:Sep::}::AtOM:SQL:Sep::" rest="${line#*::AtOM:SQL:Sep::}::AtOM:SQL:Sep::"
totalsize="${line%%::AtOM:SQL:Sep::*}" totalsize="${line%%::AtOM:SQL:Sep::*}"
for format in \ for format in \
audio/x-flac \ audio/flac \
application/ogg\ vorbis \ audio/ogg\ vorbis \
application/ogg\ opus \ audio/ogg\ opus \
audio/mpeg \ audio/mpeg \
audio/mp4 \ audio/mp4 \
\ \
@ -715,11 +718,11 @@ do
size="${rest%%::AtOM:SQL:Sep::*}" size="${rest%%::AtOM:SQL:Sep::*}"
(( count )) || continue (( count )) || continue
case $format in case $format in
application/ogg\ opus) type=Opus ;; audio/ogg\ opus) type=Opus ;;
application/ogg\ vorbis) type=Vorbis ;; audio/ogg\ vorbis) type=Vorbis ;;
audio/mp4) type=MPEG4\ Audio ;; audio/mp4) type=MPEG4\ Audio ;;
audio/mpeg) type=MPEG\ Audio ;; audio/mpeg) type=MPEG\ Audio ;;
audio/x-flac) type=FLAC ;; audio/flac) type=FLAC ;;
video/mpeg) type=MPEG\ Video ;; video/mpeg) type=MPEG\ Video ;;
video/webm) type=WebM ;; video/webm) type=WebM ;;
video/x-flv) type=Flash\ Video ;; video/x-flv) type=Flash\ Video ;;