[destination] setup (mandatory parameters)

This commit is contained in:
Vincent Riquer 2013-06-17 13:41:25 +02:00
parent da49eb7086
commit 0176483217
2 changed files with 307 additions and 0 deletions

227
lib/setup/setupDestination Normal file
View File

@ -0,0 +1,227 @@
#!/bin/bash
setupDestination() {
cat <<-EODesc
Format:
vorbis, opus or mp3. Other formats may appear in the future.
EODesc
comeagain() {
read \
-e \
${destinationformat["$destination"]+-i"${destinationformat["$destination"]}"}\
-p 'Format: ' \
value
case "$value" in
'mp3')
destinationformat["$destination"]=mp3
lameneeded=1
;;
'opus')
destinationformat["$destination"]=opus
opusencneeded=1
;;
'vorbis'|'ogg')
destinationformat["$destination"]=vorbis
oggencneeded=1
;;
*)
echo "Unsupported destination format: $value" >&2
comeagain
;;
esac
}
comeagain
cat <<-EODesc
Path (path):
Where to store transcoded files (will be created if it does not
exist).
EODesc
read \
-e \
-p'Path: ' \
${destinationpath["$destination"]+-i"${destinationpath["$destination"]}"}\
destinationpath["$destination"]
case ${destinationformat["$destination"]} in
vorbis)
cat <<-EODesc
Quality (integer):
The quality parameter of oggenc. See man oggenc for more info.
EODesc
expr='^[0-9]*$'
comeagain() {
read \
-p'Quality: ' \
-e \
-i \
${destinationquality["$destination"]:-3}\
value
if ! [[ $value =~ $expr ]]
then
echo "Invalid quality value: $value" >&2
comeagain
fi
}
comeagain
destinationquality["$destination"]=$value
;;
opus)
cat <<-EODesc
Bitrate (kbps, integer):
Set (VBR) bitrate to <bitrate>. Note that while Opus allows for
decimal values, AtOM does not. The reason for this is simple: we do
numeric comparisons, and Bash only manipulates integers.
EODesc
expr='^[0-9]*$'
comeagain() {
read \
-e \
-i \
${destinationquality["$destination"]:-128}\
-p 'Bitrate: '
value
if ! [[ $value =~ $expr ]]
then
echo "Invalid bitrate value: $value" >&2
comeagain
fi
}
comeagain
destinationquality["$destination"]=$value
cat <<-EODesc
Loss (percent, integer):
If you intend to stream the resulting files over an unreliable
protocol, you may want to make use of Opus' Forward Error
Correction algorythm. See the Opus-codec.org website for details.
EODesc
comeagain() {
read \
-e \
-i \
${destinationloss["$destination"]:-0}\
value
if ! [[ $value =~ $expr ]]
then
echo "Invalid loss value: $value" >&2
comeagain
fi
}
comeagain
destinationloss["$destination"]=$value
;;
mp3)
cat <<-EODesc
Bitrate (kbps, integer):
Set (ABR) bitrate to <bitrate>.
EODesc
expr='^[0-9]*$'
comeagain() {
read \
-e \
-i \
${destinationquality["$destination"]:-128}\
value
if ! [[ $value =~ $expr ]]
then
echo "Invalid bitrate value: $value" >&2
comeagain
fi
}
comeagain
destinationquality["$destination"]=$value
cat <<-EODesc
Prevent resampling (boolean):
LAME may decide to encode your file to a lower sampling-rate if you
use a low bitrate. Setting this to yes will append --resample
<original file's rate>, preventing any resampling from happening.
EODesc
case ${destinationnoresample["$destination"]} in
0) initialvalue=n ;;
1) initialvalue=y ;;
*) unset initialvalue ;;
esac
comeagain() {
read \
-e \
${initialvalue+-i $initialvalue}\
-p'Prevent resampling (y/N): ' \
value
case $value in
[yY])
destinationnoresample["$destination"]=1
;;
''|[nN])
destinationnoresample["$destination"]=0
;;
*)
comeagain
;;
esac
}
comeagain
;;
esac
cat <<-EODesc
[Optional parameters]
Now you will have the opportunity to configure "advanced" parameters
for $destination. You may leave any of these fields blank.
EODesc
cat <<-EODesc
Normalize (boolean):
Normalize output files.
EODesc
comeagain() {
:
}
comeagain
cat <<-EODesc
EODesc
comeagain() {
:
}
comeagain
cat <<-EODesc
EODesc
comeagain() {
:
}
comeagain
cat <<-EODesc
EODesc
comeagain() {
:
}
comeagain
cat <<-EODesc
EODesc
comeagain() {
:
}
comeagain
cat <<-EODesc
EODesc
comeagain() {
:
}
comeagain
cat <<-EODesc
EODesc
comeagain() {
:
}
comeagain
cat <<-EODesc
EODesc
comeagain() {
:
}
comeagain
}

View File

@ -0,0 +1,80 @@
#!/bin/bash
setupDestinations() {
cat <<-EODesc
[Destinations]
Finally, we'll setup your destination(s).
EODesc
if (( ${#destinations[@]} ))
then
cat <<-EODesc
[Existing destinations]
We will review your currently configured destinations. Clear the 'Name'
field to remove one.
EODesc
for destination in "${destinations[@]}"
do
cat <<-EODesc
Name (string):
A simple name for this destination. Clear to remove this destination.
EODesc
expr='^[A-z0-9]*$'
comeagain() {
read -p'Name: ' -e -i"$destination" value
if [ -z "$value" ]
then
read \
-p"Really remove destination $destination? [y/N]"
if [[ $REPLY == y ]]
then
removeDestination "$destination"
continue
else
value="$destination"
fi
elif ! [[ $value =~ $expr ]]
then
echo "Invalid name $value." \
'Please use only' \
'alphanumeric characters.' >&2
comeagain
fi
}
comeagain
destination="$value"
setupDestination
done
fi
cat <<-EODesc
[New destinations]
This section will loop until you enter an empty 'Name'.
EODesc
for (( i=0 ; 1 ; i++ ))
do
cat <<-EODesc
Name (string):
A simple name for this destination. Empty string to end this
configuration loop.
EODesc
expr='^[A-z0-9]*$'
comeagain() {
read -p'Name: ' value
[ -z "$value" ] && break
if ! [[ $value =~ $expr ]]
then
echo "Invalid name $value. Please use" \
'only alphanumeric characters.' >&2
comeagain
fi
}
comeagain
destination="$value"
setupDestination
done
}