Created
November 3, 2012 09:22
-
-
Save PoZitron/4006718 to your computer and use it in GitHub Desktop.
Bath cue processing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# переменные # | |
SLEEP_TIME=1 # пауза между запуском программы | |
BYTES_COUNT=10 # сколько байт начала и конца файла читаем | |
PROGRAMM="flacon" # программа которой передаём cue-файл | |
## | |
# цветной вывод | |
red=$(tput setf 4) | |
green=$(tput setf 2) | |
yellow=$(tput setf 6) | |
reset=$(tput sgr0) | |
toend=$(tput hpa $(tput cols))$(tput cub 6) | |
status_error="${red}[ERROR]${reset}" | |
status_ok="${green}[OK]${reset}" | |
status_warn="${yellow}[WARN]${reset}" | |
## | |
path="." | |
if [ ! -z "$1" ] | |
then | |
path="$1" | |
if [ ! -d "$path" ] | |
then | |
echo "Указанный путь не существует" | |
exit 1 | |
fi | |
fi | |
files=`find $path -type f -name *.cue` | |
ORIG_IFS=$IFS | |
IFS=$'\n' | |
for file in $files | |
do | |
audio_file=$(dirname "$file")/`grep "FILE" "$file" | cut -d\" -f2` | |
if [ ! -f $audio_file ] | |
then | |
if [ -f ${audio_file/%.wav/.flac} ]; then audio_file=${audio_file/%.wav/.flac}; fi | |
if [ -f ${audio_file/%.wav/.ape} ]; then audio_file=${audio_file/%.wav/.ape}; fi | |
fi | |
if [ ! -f $audio_file ] | |
then | |
printf "$status_error %s:\n" $file | |
printf "%s: аудио-файл не существует\n" $(basename $audio_file) | |
continue | |
fi | |
if [ ! -z "$(echo "$audio_processed" | grep -wF "$audio_file")" ] | |
then | |
printf "$status_warn %s:\n" $file | |
printf "%s: аудио-файл уже обработан и будет пропущен в этот раз \n" $(basename $audio_file) | |
continue | |
fi | |
if [ -z $(head -c $BYTES_COUNT "$audio_file") ] || [ -z $(tail -c $BYTES_COUNT "$audio_file") ] | |
then | |
printf "$status_warn %s:\n" $file | |
printf "%s: аудио-файл скорее всего недокачан и будет пропущен\n" $(basename $audio_file) | |
continue | |
fi | |
audio_processed="$audio_processed"$'\n'"$audio_file" | |
printf "$status_ok $file\n" | |
nohup $PROGRAMM $file >/dev/null 2>/dev/null & | |
sleep $SLEEP_TIME | |
done | |
IFS=$ORIG_IFS | |
exit 0 | |
# Author: PoZitron | |
# Описание: | |
# Скрипт ищет cue-файл в заданной (если запускать с параметром) или в текущей | |
# директории (если запускать без параметров), находит соотвутствующий | |
# аудио-файл (flac, ape), проверяет что он полностью закачен (читает первые и | |
# последнии N байт файла и смотрит чтобы это были не нули) и только после | |
# этого запускает программу-декодировщик (flacon) с указаным cue-файлом. | |
# После небольшой паузы скрипт продолжит перебирать cue-файлы в директории | |
# до тех пор, пока не переберёт все. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment