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