Vorrei eseguire la scansione di file musicali e di lettura/scrittura dei metadati utilizzando Elixir (tutto questo progetto è di imparare Elixir - quindi per favore non mi dica di usare Python). A quanto ho capito, ho due possibilità: chiamare un'utilità di sistema o (poiché non esistono librerie in Erlang o Elixir di cui sono a conoscenza) scrivere una libreria di elisir. Per i file m4a, faccio una chiamata di sistema a MP4Box e scrive un file xml su disco. Poi leggo il file, lo analizzo e carica i dati in un database.Come leggere e scrivere tag ID3v1 e ID3v2 in Elixir
def parse(file_name) do
System.cmd("MP4Box", ["-diso",file_name])
Ainur.XmlParser.parse(xml_file_name(file_name))
|> get_tags
end
Molto lento, soprattutto per migliaia di file. E voglio che venga eseguito all'avvio ogni volta per verificare la presenza di file modificati/nuovi.
Ora sto cercando di fare lo stesso per il mp3 con tag ID3. Ho provato libid3-tools su Ubuntu e ho trovato solo i tag id3v1. eyeD3 ha trovato solo tag id3v2. I miei mp3 hanno entrambi, quindi ho bisogno di assicurarmi che ci siano gli stessi (suppongo che potrei cancellare i tag id3v1, ma sono stato portato a credere che i tag id3v1 siano necessari sulle apparecchiature legacy).
Esistono librerie Erlang o elisir per i metadati musica? In caso contrario, le chiamate di sistema alle utility ubuntu sono la scelta migliore (eventuali consigli su quali)?
Oppure è necessario scrivere una libreria per ottenere prestazioni ragionevoli? In tal caso, esiste una libreria esistente in un linguaggio funzionale che potrei provare a portare?
o è possibile chiamare una libreria scritta in un'altra lingua direttamente da Elixir (senza la chiamata di sistema)?
, possibile questo collega si contribuisce a: http://benjamintan.io/blog/2014/06/10/elixir-bit-syntax-and-id3/ http://www.citizen428.net/blog/2010/09/04/erlang-bit-syntax-and-id3 –
Sì, questi link sono ottimi perché mostrano quanto sia potente la sintassi dei bit di Elixir. Non c'è bisogno di una libreria esterna. –
Sì, hai ragione. Ho usato il link qui sopra come modello per leggere i tag id3v1 ed era abbastanza semplice. Esito ad attaccare i tag id3v2 o mp4 perché sono più complessi. Penso che Elixir sia una gioia da usare e che funzionerebbe bene per questo, ma ho una conoscenza limitata di questi formati (temo il progetto parallelo in continua espansione). Penso che prima guarderò l'Elixir NIF/Ports menzionato da Paweł qui sotto. Qualche idea su dove trovare maggiori informazioni? –