Salta al contenuto principale
Working from scratch, following simplicity

Uno script bash migliorato per mescolare file e anche i tag MP3

Il programma rimuove gli spazi e alcuni caratteri (come ', " e -) da una cartella di file predefiniti e poi li mescola aggiungendo un numero casuale seguito da un trattino basso. Inoltre per gli MP3 modifica anche i tag ID3 e ha una funzione aggiuntiva per aggiungerli se mancanti, partendo dal nome del file (solo se è rinominato così: nome_album-nome_artista-titolo.mp3 o nome-artista-titolo.mp3).

Grazie ad alcuni utili commenti emersi dal mio script precedente: Come mescolare efficacemente un elenco di file con uno script bash, ho avuto la possibilità di riscriverlo introducendo un nuovo metodo per generare il prefisso casuale e una nuova funzione per mescolare anche i tag ID3 dei file MP3, visto che i lettori musicali moderni ordinano i brani in funzione dei TAG e non considerano più il nome del file.

Per prima cosa vorrei ringraziare Sitaram Chamarty, la sua soluzione con il BASH_REMATCH si è rivelata molo semplice ma al tempo stesso elegante ed efficiente. Ora è molto più veloce e adatta il prefisso automaticamente in base al numero totale dei file presenti (00x se ci sono più di 100 file e così via).

Poi Joe con il suo suggerimento per semplificare il processo di pulizia.

Lo ho sviluppato alcuni mesi fa e dopo alcune revisioni, ho finalmente ritenuto che fosse pronto per la pubblicazione.

Uno script bash migliorato per mescolare file e anche i tag MP3

Requisiti

  • id3v2Ho scelto questo programma perché facile da installare e programmare, ma leggendo qualche discussione in rete probabilmente mid3v2 sarebbe stata una scelta più azzeccata.

Come si usa

Innanzitutto si verifica la sezione SETTINGS dello script e si cambia se necessario:

# SETTINGS:
ext=mp3		# extension of the files to shuffle

In questo caso i file da mescolare sono gli MP3

Dopo l’eventuale modifica, funziona in questo modo:

    ./fileRandomizer.sh -shuffle directory --> to add a random prefix to a directory of mp3
    ./fileRandomizer.sh -clean directory   --> to remove the prefix to a directory of mp3
    ./fileRandomizer.sh -tags directory    --> to add id3 tags to a directory of mp3
                                               from the filename: Album-Artist-Title.mp3

NOTA: il percorso della cartella non è necessario se si opera già all’interno di essa.

Download

Lo si può scaricare da qui:

Esempio

$ ls -a Example/
.                             fldgkr-scikjzho-tfcmpfvg.mp3  kvjfui-kpmmmmdw-frvvfkvr.mp3  vdnnhn-ydondrlz-nuimzjfu.mp3
..                            fytuba-urksaxbg-gpdamiep.mp3  ldxtwg-xsedzjmt-ygccxtym.mp3  vqqjxb-kgtwdpxd-agcykotg.mp3
aqgbfc-xygqxlit-cqcmaxbk.mp3  ibxtvv-moxfcbey-hvcvtnve.mp3  rwfunt-jsjmwrof-fxxyefoy.mp3  xbwhvy-napflydm-oocbrckn.mp3
bmfcgg-unxqktni-hwsrjjoa.mp3  ilulvp-iwippocb-wbzyjked.mp3  rzroiq-azufwutp-vgqahoem.mp3  xfheij-plwlouwx-foqbfusz.mp3
divjyr-uvlfmxdf-sxofuvbf.mp3  iohgdx-koerbnva-osfhsgyq.mp3  sbjrsl-eijzbrbr-fjsrwrhh.mp3
elldzf-oytlqtfq-vneqgafq.mp3  jvbjoe-uarbinej-cyxhfxlt.mp3  txszoi-gjdrpqlm-ytbzmklp.mp3
$ ./fileRandomizer.sh -shuffle Example/
$ ls -a Example/
.                                05-aqgbfc-xygqxlit-cqcmaxbk.mp3  11-divjyr-uvlfmxdf-sxofuvbf.mp3  17-sbjrsl-eijzbrbr-fjsrwrhh.mp3
..                               06-kvjfui-kpmmmmdw-frvvfkvr.mp3  12-ldxtwg-xsedzjmt-ygccxtym.mp3  18-fytuba-urksaxbg-gpdamiep.mp3
01-rwfunt-jsjmwrof-fxxyefoy.mp3  07-txszoi-gjdrpqlm-ytbzmklp.mp3  13-vdnnhn-ydondrlz-nuimzjfu.mp3  19-elldzf-oytlqtfq-vneqgafq.mp3
02-ibxtvv-moxfcbey-hvcvtnve.mp3  08-jvbjoe-uarbinej-cyxhfxlt.mp3  14-xfheij-plwlouwx-foqbfusz.mp3  20-fldgkr-scikjzho-tfcmpfvg.mp3
03-iohgdx-koerbnva-osfhsgyq.mp3  09-rzroiq-azufwutp-vgqahoem.mp3  15-bmfcgg-unxqktni-hwsrjjoa.mp3
04-xbwhvy-napflydm-oocbrckn.mp3  10-vqqjxb-kgtwdpxd-agcykotg.mp3  16-ilulvp-iwippocb-wbzyjked.mp3
$ ./fileRandomizer.sh -clean Example/
$ ls -a Example/
.                             fldgkr-scikjzho-tfcmpfvg.mp3  kvjfui-kpmmmmdw-frvvfkvr.mp3  vdnnhn-ydondrlz-nuimzjfu.mp3
..                            fytuba-urksaxbg-gpdamiep.mp3  ldxtwg-xsedzjmt-ygccxtym.mp3  vqqjxb-kgtwdpxd-agcykotg.mp3
aqgbfc-xygqxlit-cqcmaxbk.mp3  ibxtvv-moxfcbey-hvcvtnve.mp3  rwfunt-jsjmwrof-fxxyefoy.mp3  xbwhvy-napflydm-oocbrckn.mp3
bmfcgg-unxqktni-hwsrjjoa.mp3  ilulvp-iwippocb-wbzyjked.mp3  rzroiq-azufwutp-vgqahoem.mp3  xfheij-plwlouwx-foqbfusz.mp3
divjyr-uvlfmxdf-sxofuvbf.mp3  iohgdx-koerbnva-osfhsgyq.mp3  sbjrsl-eijzbrbr-fjsrwrhh.mp3
elldzf-oytlqtfq-vneqgafq.mp3  jvbjoe-uarbinej-cyxhfxlt.mp3  txszoi-gjdrpqlm-ytbzmklp.mp3
$ ./fileRandomizer.sh -tags Example/
 
1) aqgbfc_album_2-xygqxlit_artist_1-song_cqcmaxbk.mp3 hasn't the tags, they will be added.
 
2) aqgbfc_xygqxlit_cqcmaxbk.mp3 hasn't the tags, they will be added.

Do nothing, the "aqgbfc_xygqxlit_cqcmaxbk.mp3" has a wrong format:
only album-artist-title or artist-title is allowed

$ id3v2 -l aqgbfc_album_2-xygqxlit_artist_1-song_cqcmaxbk.mp3 
id3v1 tag info for aqgbfc_album_2-xygqxlit_artist_1-song_cqcmaxbk.mp3:
Title  : song cqcmaxbk                   Artist: xygqxlit artist 1             
Album  : aqgbfc album 2                  Year: 2006, Genre: Unknown (255)
Comment:                                 Track: 1
id3v2 tag info for aqgbfc_album_2-xygqxlit_artist_1-song_cqcmaxbk.mp3:
TYER (Year): 2006
TRCK (Track number/Position in set): 1
TALB (Album/Movie/Show title): aqgbfc album 2
TPE1 (Lead performer(s)/Soloist(s)): xygqxlit artist 1
TIT2 (Title/songname/content description): song cqcmaxbk

$ id3v2 -l aqgbfc_xygqxlit_cqcmaxbk.mp3 
id3v1 tag info for aqgbfc_xygqxlit_cqcmaxbk.mp3:
Title  :                                 Artist:                               
Album  :                                 Year: 2006, Genre: Unknown (255)
Comment:                                 Track: 1
aqgbfc_xygqxlit_cqcmaxbk.mp3: No ID3v2 tag

Aggiungi un commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.

Plain text

  • Nessun tag HTML consentito.
  • Indirizzi web ed indirizzi e-mail diventano automaticamente dei link.
  • Linee e paragrafi vanno a capo automaticamente.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Aggiungi un commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.

Plain text

  • Nessun tag HTML consentito.
  • Indirizzi web ed indirizzi e-mail diventano automaticamente dei link.
  • Linee e paragrafi vanno a capo automaticamente.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Sponsored Links
Pubblicità

Nicola Rainiero

Ingegnere civile specializzato in geotecnica con l'ambizione di facilitare la propria attività lavorativa usando e creando software libero per un sapere condiviso e collettivo. Mi occupo anche di energie rinnovabili ed in particolare di geotermia a bassa entalpia. Sono da sempre appassionato di web design e modellazione 3D.