From bfa7ac2f102c3dac49e13f68a2acd9dcfbdbbde0 Mon Sep 17 00:00:00 2001 From: Vincent Riquer Date: Thu, 23 Jan 2025 00:07:20 +0000 Subject: [PATCH] toys/checkmissing: check for missing files in destinations and toys/createindex mime-type update --- toys/checkmissing | 88 +++++++++++++++++++++++++++++++++++++++++++++++ toys/createindex | 15 ++++---- 2 files changed, 97 insertions(+), 6 deletions(-) create mode 100755 toys/checkmissing diff --git a/toys/checkmissing b/toys/checkmissing new file mode 100755 index 0000000..4fb0771 --- /dev/null +++ b/toys/checkmissing @@ -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 diff --git a/toys/createindex b/toys/createindex index 9f2a0a7..6a7ddc0 100755 --- a/toys/createindex +++ b/toys/createindex @@ -407,10 +407,13 @@ do rest="${rest#*::AtOM:SQL:Sep::}" case $mimetype 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/mpeg) type=MPEG\ Audio;; audio/x-flac) type=FLAC ;; + audio/flac) type=FLAC ;; video/mpeg) type=MPEG\ Video;; video/webm) type=WebM ;; video/x-flv) type=Flash\ Video;; @@ -687,9 +690,9 @@ maxcountlen=${#maxcountlen} rest="${line#*::AtOM:SQL:Sep::}::AtOM:SQL:Sep::" totalsize="${line%%::AtOM:SQL:Sep::*}" for format in \ - audio/x-flac \ - application/ogg\ vorbis \ - application/ogg\ opus \ + audio/flac \ + audio/ogg\ vorbis \ + audio/ogg\ opus \ audio/mpeg \ audio/mp4 \ \ @@ -715,11 +718,11 @@ do size="${rest%%::AtOM:SQL:Sep::*}" (( count )) || continue case $format in - application/ogg\ opus) type=Opus ;; - application/ogg\ vorbis) type=Vorbis ;; + audio/ogg\ opus) type=Opus ;; + audio/ogg\ vorbis) type=Vorbis ;; audio/mp4) type=MPEG4\ Audio ;; audio/mpeg) type=MPEG\ Audio ;; - audio/x-flac) type=FLAC ;; + audio/flac) type=FLAC ;; video/mpeg) type=MPEG\ Video ;; video/webm) type=WebM ;; video/x-flv) type=Flash\ Video ;;