Pagina 1 di 1
[RISOLTO] Semplice bash script interattivo
Inviato: gio 4 ago 2022, 20:32
da Burroughs
Un saluto a tutti voi.
A casa ho un server multimediale su cui è in esecuzione Roon, un OS Linux-based che si occupa di indicizzare il contenuto di librerie multimediali caricate su NAS, dischi rigidi e supporti vari.
Ho scoperto che esiste la possibilità di interrogarlo da riga di comando.
In pratica basta lanciare un comando del genere:
Codice: Seleziona tutto
roon -a "nome dell'artista" -A titolo del brano/album
Mi piacerebbe lanciare da terminale uno script bash interattivo che mi consentisse, come potrete ben capire, prima di specificare il nome dell'artista, poi, contestualmente, il titolo del brano o dell'album ricercato.
In pratica una roba basata su
read varname.
Che cosa mi consigliate per riuscire nell’impresa???
Re: Semplice bash script interattivo
Inviato: ven 5 ago 2022, 0:41
da joe
Del tipo qualcosa che ti stampa:
Inserisci artista:
> hendrix <invio>
Inserisci brano/album:
> hey joe/hendrix experience <invio>
???
Re: Semplice bash script interattivo
Inviato: ven 5 ago 2022, 9:04
da Burroughs
Esatto, partendo dal comando di cui sopra, prima il nome dell'artista, poi il titolo del brano/album.
Re: Semplice bash script interattivo
Inviato: ven 5 ago 2022, 19:53
da joe
Mah, così a naso mi sembra abbastanza banale... non testato però:
Codice: Seleziona tutto
#!/bin/bash
echo "Inserisci Artista"
read art
echo "Inserisci Titolo del Brano"
read bra
echo "Inserisci Album"
read alb
# Ok or hai 3 variabili che passi al comando roon
# devi proteggere gli spazi che contengono
# quotandole opportunamente
comando = "roon -a ""$art"" -A ""$bra"/"$alb"
# ricontrolla bene le virgolette...
echo "eseguo comando seguente:"
echo "$comando"
echo
echo "<Invio> per conferma, <CTRL+C> per uscire"
roon -a "$art" -A "$bra"/"$alb"
una cosa del genere insomma...
PS OT:
Siccome devo estrarre delle tracce da un CD audio.
Sto usando "cdparanoia -B", ma sputa fuori errori relativi a scsi read error...
Ci sono alternative a quel software che avete usato da poco, io sono secoli che non faccio più quell'operazione di rippin'.
Forse era cdabc l'alternativa.
Re: [RISOLTO] Semplice bash script interattivo
Inviato: ven 5 ago 2022, 22:24
da Burroughs
Grazie, Joe, ho giochicchiato un po' con le virgolette, adesso funziona tutto alla grande.
Per la cronaca, lo script pilota l'esecuzione dei brani su un Naim Mu-so Qb senza passare né dal telecomando né dall'app nativa.
Per quanto concerne il ripping, premetto che è un'operazione che anch'io effettuo ogni morte di Papa, comunque sì,
cdabc resta sempre il coltellino svizzerino.
Su Github ho trovato questo script, che ti giro, che consente anche di rippare tracce audio presenti su DVD/Blu-ray.
Ancora grazie...
Codice: Seleziona tutto
#!/bin/sh
#
media_type=0
case "$1" in
cdda)
media_type=10
;;
dvd)
media_type=20
;;
bluray)
media_type=30
;;
esac
is_audio_cd=99
is_dvd=0
is_bluray=0
if [ "$media_type" -eq 0 ]; then
is_audio_cd=$(cdda2wav -J -H -D /dev/sr0 2&>/dev/stdout | grep
'disk has no audio tracks' | wc -c)
fi
if [ "$is_audio_cd" -le 1 -o "$media_type" -eq 10 ]; then
echo "That's an audio CD!"
abcde -N
exitcode="$?"
chmod 0770 -R /mnt/servervol/ripomatic/Musik/
exit "$exitcode"
else
echo "That's not an audio CD!"
fi
if [ "$media_type" -eq 0 ]; then
is_dvd=$(dvd+rw-mediainfo /dev/sr0 | grep "DVD-ROM book" | wc -c)
fi
if [ "$is_dvd" -gt 1 -o "$media_type" -eq 20 ]; then
echo "That's a DVD!"
is_video_dvd=$(mplayer -identify -frames 0 /dev/sr0 2>&1 | grep
VIDEO: | grep MPEG2 | wc -c)
if [ "$is_video_dvd" -le 1 ]; then
is_video_dvd=$(ffmpeg -i /dev/sr0 2>&1 | grep
dvd_nav_packet | wc -c)
if [ "$is_video_dvd" -le 1 ]; then
echo "Uuh... I can't tell if it is a video DVD..."
is_video_dvd=$(ls /mnt/sr0/VIDEO_TS | wc -l)
if [ "$is_video_dvd" -gt 0 ]; then
echo "But it seems to have the files for a
video DVD, so... I'll try my best! >:3"
is_video_dvd="99"
else
echo "That's not a video DVD!"
fi
fi
fi
fi
if [ "$is_video_dvd" -gt 1 ]; then
echo "That's a video DVD!"
targetdir="/mnt/servervol/ripomatic/Video/$(date +%s)-dvd"
mkdir -p "$targetdir"
makemkvcon --decrypt --minlength=600 mkv disc:0 all "$targetdir"
chmod 0777 "$targetdir"
exit $?
else
echo "That's not a video DVD!"
fi
if [ "$media_type" -eq 30 ]; then
s_bluray=$(dvd+rw-mediainfo /dev/sr0 2>&1 | grep BD-ROM | wc -c)
fi
if [ "$is_bluray" -gt 1 -o "$media_type" -eq 30 ]; then
echo "That's a Blu-ray!"
if [ -d /mnt/sr0/BDMV ]; then
echo "That's a Blu-ray video disc!"
targetdir="/mnt/servervol/ripomatic/Video/$(date
+%s)-bluray"
mkdir -p "$targetdir"
makemkvcon --decrypt --minlength=600 mkv disc:0 all
"$targetdir"
chmod 0777 "$targetdir"
exit $?
else
echo "But it's not a Blu-ray video disc!"
fi
else
echo "That's not a Blu-ray!"
fi
echo "Sorry, I don't know what to do with this thing... :("
exit 1