Qual è il modo migliore per recuperare i metadati mp3 in python? Ho visto un paio di quadri là fuori, ma non sono sicuro su quale sarebbe il migliore da usare ... Qualche idea?Accesso a mp3 Meta-Data con Python
risposta
This toolkit può fare quello che ti serve. Non posso dire se è il "migliore", ma in realtà, se fa quello che ti serve, è tutto ciò che conta, giusto?
HTH
Può dipendere esattamente da ciò che si desidera fare oltre alla lettura dei metadati. Se è semplicemente il bitrate/nome ecc. Di cui hai bisogno, e nient'altro, qualcosa di leggero è probabilmente il migliore.
Se stai manipolando il passato di mp3 che PyMedia potrebbe essere adatto.
Ci sono un bel po ', qualunque cosa si ottenga, assicurarsi e testare su un sacco di media di esempio. Ci sono alcune versioni differenti dei tag ID3 in particolare, quindi assicurati che non sia troppo obsoleto.
Personalmente ho usato questa piccola classe MP3Info con un po 'di fortuna. È piuttosto vecchio però.
quello che cercate è il modulo ID3. È molto semplice e ti darà esattamente ciò di cui hai bisogno. Basta copiare il file ID3.py nella directory site-packages e sarete in grado di fare qualcosa di simile al seguente:
from ID3 import *
try:
id3info = ID3('file.mp3')
print id3info
# Change the tags
id3info['TITLE'] = "Green Eggs and Ham"
id3info['ARTIST'] = "Dr. Seuss"
for k, v in id3info.items():
print k, ":", v
except InvalidTagError, message:
print "Invalid ID3 tag:", message
Solo una nota. Questo modulo è molto vecchio (2002) e non supporta V2 dei tag ID3 –
ho usato mutagen per modificare i tag nei file multimediali prima. La cosa bella del mutageno è che può gestire altri formati, come mp4, FLAC, ecc. Ho scritto diversi script con molto successo usando questa API.
http://code.google.com/p/quodlibet/ – zgoda
http://code.google.com/p/mutagen/ - Si noti inoltre che Mutagen è GPL, quindi è no-no per la maggior parte dei progetti. – Ciantic
Mutagen è bello, ma mi manca un modo uniforme per ottenere l'artista, il genere del titolo ecc. - si finisce per conoscere i vari tasti, che dipendono dal formato. 'TIT2' per mp3,' title' per ogg, '\ xa9nam' per mp4,' Title' per WMA ecc. - questo fa schifo. –
Se è possibile utilizzare IronPython, esiste TagLibSharp. It can be used from any .NET language.
Ho utilizzato eyeD3 l'altro giorno con molto successo. Ho scoperto che poteva aggiungere grafica al tag ID3 che gli altri moduli che ho visto non potevano. Dovrai scaricare il tar ed eseguire python setup.py install
dalla cartella di origine.
Esempi rilevanti dal sito Web sono di seguito.
Leggendo il contenuto di un file mp3 contenenti sia v1 o tag v2 info:
import eyeD3
tag = eyeD3.Tag()
tag.link("/some/file.mp3")
print tag.getArtist()
print tag.getAlbum()
print tag.getTitle()
leggere un file mp3 (durata del brano, il bitrate, etc.) E l'accesso è tag:
if eyeD3.isMp3File(f):
audioFile = eyeD3.Mp3AudioFile(f)
tag = audioFile.getTag()
versioni specifiche dei tag possono essere selezionati:
tag.link("/some/file.mp3", eyeD3.ID3_V2)
tag.link("/some/file.mp3", eyeD3.ID3_V1)
tag.link("/some/file.mp3", eyeD3.ID3_ANY_VERSION) # The default.
Oppure è possibile scorrere i fotogrammi prime:
tag = eyeD3.Tag()
tag.link("/some/file.mp3")
for frame in tag.frames:
print frame
Una volta che un tag è correlato a un file può essere modificato e salvato:
tag.setArtist(u"Cro-Mags")
tag.setAlbum(u"Age of Quarrel")
tag.update()
Se il tag collegato in era v2 e vi piacerebbe salvarlo come V1:
tag.update(eyeD3.ID3_V1_1)
Leggi in un tag e rimuoverlo dal file:
tag.link("/some/file.mp3")
tag.remove()
tag.update()
Aggiungi un nuovo tag:
eyeD3 è anche ** GPL ** ... quindi se come me hai intenzione di usarlo sul tuo programma devi rilasciare il tuo programma come un programma gratuito anche ... dannalo con queste persone, perché non possono rilasciare sotto LGPL? – Ciantic
@Ciantic: i tag ID3 sono estremamente semplici, perché non creare autonomamente una libreria e rilasciarla sotto BSD? Inoltre, * questo popolo * non ti possiede nulla in primo luogo. Guarda qui http://diveintopython.org/object%5Foriented%5Fframework/index.html – voyager
@voyager, i tag ID3v1 sono semplici, i tag ID3v2 sono complicati da morire ... E ora ho creato il wrapper BSD per pytagger http: // github.com/Ciantic/songdetails Non l'ho ancora etichettato come rilasciato, ma funziona. – Ciantic
Ho guardato le risposte di cui sopra e ho scoperto che non sono buone per il mio progetto a causa di problemi di licenza con GPL.
E ho scoperto questo: PyID3Lib, mentre vincolante quel particolare pitone data di uscita è vecchio, utilizza il ID3Lib, che è essa stessa fino ad oggi.
Da notare che entrambi sono LGPL e sono a posto.
controllare questo fuori:
https://github.com/Ciantic/songdetails
Esempio di utilizzo:
>>> import songdetails
>>> song = songdetails.scan("data/song.mp3")
>>> print song.duration
0:03:12
cambiamenti di risparmio:
>>> import songdetails
>>> song = songdetails.scan("data/commit.mp3")
>>> song.artist = "Great artist"
>>> song.save()
Basta ulteriori informazioni a voi ragazzi:
dai un'occhiata alla sezione "Archivio MP3 e editor di metadati" nella pagina di PythonInMusic.
Dopo alcune ricerche iniziali ho pensato che i dettagli della song potrebbero adattarsi al mio caso d'uso, ma non gestisce i file m4b. Il mutageno sì. Si noti che mentre alcuni hanno (ragionevolmente) preso problema con la superficie di Mutagen delle chiavi native del formato, che variano da formato a formato (TIT2 per mp3, titolo per ogg, \ xa9nam per mp4, Titolo per WMA ecc.), Mutagen.File () ha un (nuovo?) facile = parametro True che fornisce i tag EasyMP3/EasyID3, che hanno un insieme coerente, sebbene limitato, di chiavi. Ho fatto solo test limitati finora, ma i tasti comuni, come album, artista, albumartist, genere, numero di traccia, discnumber, ecc. Sono tutti presenti e identici per i file .mb4 e .mp3 quando si utilizza easy = True, rendendolo molto comodo per i miei scopi.
Un problema con eyed3
è che esso genera NotImplementedError("Unable to write ID3 v2.2")
per i file MP3 comuni.
In base alla mia esperienza, la classe mutagen
EasyID3
funziona in modo più affidabile.Esempio:
from mutagen.easyid3 import EasyID3
audio = EasyID3("example.mp3")
audio['title'] = u"Example Title"
audio['artist'] = u"Me"
audio['album'] = u"My album"
audio['composer'] = u"" # clear
audio.save()
Tutti gli altri tag può essere letta in questo modo e salvato, che servirà la maggior parte degli scopi. Maggiori informazioni possono essere trovate nel Mutagen Tutorial.
metodo più semplice è songdetails ..
per i dati di lettura
import songdetails
song = songdetails.scan("blah.mp3")
if song is not None:
print song.artist
simile per la modifica
import songdetails
song = songdetails.scan("blah.mp3")
if song is not None:
song.artist = u"The Great Blah"
song.save()
Non dimenticare di aggiungere u prima del nome finché non si sa la lingua cinese .
u può leggere e modificare in massa utilizzando il modulo glob python
es.
import glob
songs = glob.glob('*') // script should be in directory of songs.
for song in songs:
// do the above work.
- 1. Accesso ai dati musicali MP3 usando Python
- 2. Mp3 parsing in Python
- 3. Riproduzione di file MP3 con Python
- 4. Accesso senza browser a LinkedIn con Python
- 5. Leggi MP3 in Python 3
- 6. Python MP3 ID3 Tag Editor
- 7. Accesso a OrientDB da Python
- 8. Accesso multithread a Python bytearra
- 9. WCF MetaData non funzionante
- 10. riprodurre mp3 con monotouch
- 11. Ottenere MetaData da MPMoviePlayerController
- 12. Accesso a Python in un sito Web con modulo javascript
- 13. Accesso dizionario Python
- 14. Accesso a un mysql XAMPP tramite Python
- 15. .metadata \ .log errore in eclissi
- 16. pyspeech (python) - Trascrivi i file mp3?
- 17. Accesso a un traceback Python dall'API C
- 18. Fai mp3 PHP seekable
- 19. Open Source strumento Metadata Management
- 20. MediaElementAudioSource uscite zeri a causa di restrizioni di accesso CORS di file mp3 locale
- 21. Accesso a MQ con JMS
- 22. Accesso a due file con impostazioni diverse
- 23. iOS mp3 diviso stereo a mono aac
- 24. Accesso NTLM Python
- 25. Aggiungi codec mp3 a qt-project
- 26. Libreria Python per dividere e unire file mp3
- 27. Riproduzione e controllo di file mp3 in Python?
- 28. Impossibile convertire .mp3 in .m4a utilizzando ffmpeg
- 29. Riproduzione di file MP3 con iPhone SDK
- 30. Posso servire file MP3 con PHP?
Questo esempio è un po 'obsolete ora, sia in termini di versione pitone e in termini di ID3 versione ... – Bex
entrambi i collegamenti non sono più di lavoro. (So che la risposta è di 9 anni) Se stai cercando il libro online "Dive into Python", ecco il corrente [link] (http://www.diveintopython.net/) –