[RISOLTO] Semplice bash script interattivo

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1055
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

[RISOLTO] Semplice bash script interattivo

Messaggio 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???
Ultima modifica di Burroughs il ven 5 ago 2022, 22:16, modificato 1 volta in totale.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3634
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Semplice bash script interattivo

Messaggio da joe »

Del tipo qualcosa che ti stampa:

Inserisci artista:
> hendrix <invio>

Inserisci brano/album:
> hey joe/hendrix experience <invio>

???

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1055
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: Semplice bash script interattivo

Messaggio da Burroughs »

Esatto, partendo dal comando di cui sopra, prima il nome dell'artista, poi il titolo del brano/album.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3634
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Semplice bash script interattivo

Messaggio 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.

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1055
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: [RISOLTO] Semplice bash script interattivo

Messaggio 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
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Rispondi