[Risolto] [BASH] Problemi con lista file e mp3info

Se avete dubbi o domande sulla programmazione in generale, fatele qui
Rispondi
fermat
Little John
Messaggi: 1053
Iscritto il: 9 maggio 2009, 18:28
Contatta:

[Risolto] [BASH] Problemi con lista file e mp3info

Messaggio da fermat » 22 gennaio 2018, 16:25

ciao!

vorrei cambiare i tag mp3 tramite un programmino da riga di comando: mp3info.

l'ho installato e creato questo piccolo script:

Codice: Seleziona tutto

#!/bin/bash

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

for f in *.mp3
do
    filename=$(basename "$f")
    fname="${f%.*}"
    
    echo $filename
    echo $fname
    mp3info -t $filename
done

IFS=$SAVEIFS
come output ottengo questo:

Codice: Seleziona tutto

$ ./modifica_mp3.sh 
2 times.mp3
2 times
No MP3 files specified!
4 AM.mp3
4 AM
No MP3 files specified!
4 ever with me.mp3
4 ever with me
No MP3 files specified!
4 your love.mp3
4 your love
No MP3 files specified!
se però provo a modificarne uno a mano non ho problemi:

Codice: Seleziona tutto

$ mp3info -t "ccc" 2\ times.mp3 
$ mp3info 2\ times.mp3 
File: 2 times.mp3
Title:   ccc                            Track: 
Artist:  
Album:                                  Year:  
Comment:                                Genre: Dance [3]
mi sapreste dire dove sbaglio nello script??
Ultima modifica di fermat il 22 gennaio 2018, 19:57, modificato 1 volta in totale.

VenereNera
Little John
Messaggi: 954
Iscritto il: 20 dicembre 2012, 19:50

Re: [BASH] Problemi con lista file e mp3info

Messaggio da VenereNera » 22 gennaio 2018, 18:20

Bhè!
In primo luogo non serve impostare IFS, $f è $filename quindi non serve reimpostarla e la sintassi del comando è:

Codice: Seleziona tutto

mp3info [-i] [-t title] [-a artist] [-l album] [-y year] [-c comment] [-n track] [-g genre] file...
quindi se vuoi reimpostare il tag title:

Codice: Seleziona tutto

mp3info -t <tag-che-vuoi> file
Se tu vuoi aggiungere il titolo come tag title:

Codice: Seleziona tutto

mp3info -t "$fname" "$f"
Così facendo verrà inserito anche il numero track nel tag facente parte del titolo stesso (nel tuo esempio sono i numeri nel nome del file). In caso dovrai filtrare ancora (mp3info -t "${fname#*[0-9] }" "$f").

Codice: Seleziona tutto

#!/bin/bash
for f in *.mp3
do
    fname="${f%.*}"
    echo $fname
    mp3info -t "$fname" "$f"
## oppure senza numeri davanti al nome.
# mp3info -t "${fname#*[0-9] }" "$f"
done
exit 0

fermat
Little John
Messaggi: 1053
Iscritto il: 9 maggio 2009, 18:28
Contatta:

Re: [BASH] Problemi con lista file e mp3info

Messaggio da fermat » 22 gennaio 2018, 19:56

non sono proprio esperto di script bash e si vede.

IFS lo avevo messo perchè avevo avuto qualche problema con gli spazi in un tentativo precedente.
sicuramente sbagliavo qualcosa.

funziona tutto alla perfezione.
grazie mille!!

VenereNera
Little John
Messaggi: 954
Iscritto il: 20 dicembre 2012, 19:50

Re: [Risolto] [BASH] Problemi con lista file e mp3info

Messaggio da VenereNera » 22 gennaio 2018, 20:10

In presenza di spazi devi chiudere il nome o la variabile tra virgolette a seconda dei casi.

fermat
Little John
Messaggi: 1053
Iscritto il: 9 maggio 2009, 18:28
Contatta:

Re: [Risolto] [BASH] Problemi con lista file e mp3info

Messaggio da fermat » 22 gennaio 2018, 20:24

VenereNera ha scritto:
22 gennaio 2018, 20:10
In presenza di spazi devi chiudere il nome o la variabile tra virgolette a seconda dei casi.
eh si ho visto.
evidentemente non avevo fatto questa prova nei testi precedenti.
non si fanno questi test di domenica dopo una settimana di lavoro :mrgreen: :mrgreen:

Rispondi