Answer-ID
  • Întrebări
  • Tag-uri
  • Categorii
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 akdom
akdom

Accesarea metadatelor mp3 cu Python

Care este cel mai bun mod de a prelua metadatele mp3 în Python? Am vazut un cuplu de cadre acolo, dar eu nu sunt sigur ce ar fi cel mai bun pentru a folosi .... Orice idei?

113 2008-08-12T15:16:00+00:00 15
Programare
metadata
python
mp3
Comentarii la întrebare (0)
Tim Sullivan
12 august 2008 в 7:32
2008-08-12T19:32:05+00:00
Mai mult
Sursă
Editează
#8972

This toolkit may do what you need. I can't say if it's the "best", but really, if it does what you need, that's all that matters, right?

HTH

0
0
Comentarii (0)
PabloG
12 august 2008 в 7:37
2008-08-12T19:37:24+00:00
Mai mult
Sursă
Editează
#8974

Un exemplu simplu din cartea Dive Into Python funcționează bine pentru mine, acest este link-ul de descărcare, exemplul este fileinfo.py. Nu știu dacă este cel mai bun, dar poate face treaba de bază.

Întreaga carte este disponibilă online aici .

0
0
Comentarii (0)
Philip Reynolds
12 august 2008 в 7:37
2008-08-12T19:37:59+00:00
Mai mult
Sursă
Editează
#8976

Acesta poate depinde exact de ceea ce doriți să faceți în plus față de citirea metadatelor. Dacă este doar pur și simplu bitrate/nume etc care aveți nevoie, și nimic altceva, ceva ușor este probabil cel mai bun.

Dacă manipulezi trecutul mp3-ului, PyMedia poate fi potrivit.

Există destul de puține lucruri, indiferent ce faceți, asigurați-vă și testați-le pe o mulțime de materiale de probă. Există câteva versiuni diferite ale etichetelor ID3, în special, deci asigurați-vă că nu este prea depășit.

Personal am folosit această mică clasă MP3Info cu noroc. Este totuși destul de vechi.

http://www.omniscia.org/~vivake/python/MP3Info.py

0
0
Comentarii (0)
Harley Holcombe
13 august 2008 в 4:44
2008-08-13T04:44:26+00:00
Mai mult
Sursă
Editează
#9358

Ceea ce urmăriți este modulul ID3 . Este foarte simplu și vă va oferi exact ceea ce aveți nevoie. Doar copiați fișierul ID3.py în directorul dvs. de pachete de site-uri și veți putea să faceți ceva de genul:

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
0
0
Comentarii (0)
jkp
14 august 2008 в 1:46
2008-08-14T13:46:21+00:00
Mai mult
Sursă
Editează
#10845

Am folosit mutagen pentru a edita etichete în fișiere media înainte. Lucru frumos despre mutagen este că se poate ocupa de alte formate, cum ar fi mp4, FLAC etc. Am scris mai multe scenarii cu mult succes folosind acest API.

0
0
Comentarii (0)
Steven Murawski
26 august 2008 в 9:48
2008-08-26T21:48:49+00:00
Mai mult
Sursă
Editează
#28711

Dacă puteți folosi IronPython, există TagLibSharp. Poate fi folosit din orice limbă .NET .

0
0
Comentarii (0)
Owen
19 septembrie 2008 в 6:30
2008-09-19T18:30:41+00:00
Mai mult
Sursă
Editează
#102285

Am folosit eyeD3 ziua următoare cu mult succes. Am constatat că ar putea adăuga opere de artă la eticheta ID3 pe care celelalte module pe care le-am privit nu au putut. Va trebui să descărcați tarul și să executați python setup.py install din folderul sursă.

Exemple relevante de pe site sunt de mai jos.

Citirea conținutului unui fișier mp3 care conține fie eticheta v1, fie eticheta v2:

 import eyeD3
 tag = eyeD3.Tag()
 tag.link("/some/file.mp3")
 print tag.getArtist()
 print tag.getAlbum()
 print tag.getTitle()

Citiți un fișier mp3 (lungime piesă, bitrate etc.) și accesați eticheta:

if eyeD3.isMp3File(f):
     audioFile = eyeD3.Mp3AudioFile(f)
     tag = audioFile.getTag()

Pot fi selectate versiuni specifice ale tagurilor:

 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.

Sau aveți posibilitatea să repetați peste cadrele brute:

 tag = eyeD3.Tag()
 tag.link("/some/file.mp3")
 for frame in tag.frames:
    print frame

Odată ce o etichetă este conectată la un fișier, aceasta poate fi modificată și salvată:

 tag.setArtist(u"Cro-Mags")
 tag.setAlbum(u"Age of Quarrel")
 tag.update()

Dacă tag-ul conectat a fost v2 și doriți să-l salvați ca v1:

 tag.update(eyeD3.ID3_V1_1)

Citiți într-o etichetă și eliminați-o din fișier:

 tag.link("/some/file.mp3")
 tag.remove()
 tag.update()

Adăugați o etichetă nouă:

 tag = eyeD3.Tag()
 tag.link('/some/file.mp3')    # no tag in this file, link returned False
 tag.header.setVersion(eyeD3.ID3_V2_3)
 tag.setArtist('Fugazi')
 tag.update()
0
0
Comentarii (0)
Ciantic
20 decembrie 2009 в 10:32
2009-12-20T22:32:11+00:00
Mai mult
Sursă
Editează
#1936720

M-am uitat la răspunsurile de mai sus și am aflat că nu sunt bune pentru proiectul meu din cauza problemelor de licențiere cu GPL.

Și am aflat acest lucru: PyID3Lib , în timp ce data lansării python binding particulară este veche , utilizează ID3Lib , care însăși este actualizată.

Este de remarcat faptul că ambele sunt LGPL și sunt bune pentru a merge.

0
0
Comentarii (0)
Corey Goldberg
30 decembrie 2010 в 4:40
2010-12-30T04:40:52+00:00
Mai mult
Sursă
Editează
#4559380

verificați acest lucru:

https://github.com/Ciantic/songdetails

Exemplu de utilizare:

>>> import songdetails
>>> song = songdetails.scan("data/song.mp3")
>>> print song.duration
0:03:12

Salvarea modificărilor:

>>> import songdetails
>>> song = songdetails.scan("data/commit.mp3")
>>> song.artist = "Great artist"
>>> song.save()
0
0
Comentarii (0)
quabug
8 iulie 2011 в 12:24
2011-07-08T12:24:29+00:00
Mai mult
Sursă
Editează
#6621839

Doar informații suplimentare pentru voi:

aruncați o privire la secțiunea "Editare de chestii MP3 și metadate" în pagina PythonInMusic .

0
0
Comentarii (0)
larryy
13 iulie 2015 в 2:17
2015-07-13T02:17:59+00:00
Mai mult
Sursă
Editează
#31373513

După unele cercetări inițiale, am crezut că detaliile melodiei se potrivesc cu cazul meu de utilizare, dar nu se ocupă de fișierele .m4b. Mutagenul are. Rețineți că, în timp ce unii dintre ei au luat (în mod rezonabil) o problemă cu acoperirea cu chei native a formatului Mutagen, care variază de la format la format (TIT2 pentru mp3, titlu pentru ogg, mpx pentru mp4, Titlu pentru WMA etc.), mutagen.File ) are un parametru (new?) easy = True care oferă etichete EasyMP3/EasyID3, care au un set consistent, deși limitat, de taste. Am făcut doar teste limitate până acum, dar cheile comune, cum ar fi albumul, artistul, albumaristul, genul, tracknumber, discnumber, etc. sunt toate prezente și identice pentru fișierele .mb4 și .mp3 când se utilizează easy = True foarte convenabil pentru scopurile mele.

0
0
Comentarii (0)
Chris Redford
24 ianuarie 2016 в 3:07
2016-01-24T03:07:24+00:00
Mai mult
Sursă
Editează
#34970600

O problemă cu eyed3 este că va arunca NotImplementedError ("Imposibil de scris ID3 v2.2") pentru fișierele MP3 obișnuite.

Din experiența mea, clasa mutagen EasyID3 funcționează mai fiabil. Exemplu:

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()

Toate celelalte etichete pot fi accesate în acest fel și salvate, ceea ce va servi majorității scopurilor. Mai multe informații pot fi găsite în Tutorial despre mutații .

0
0
Comentarii (0)
Abhijeet Deshani
11 august 2016 в 12:05
2016-08-11T12:05:38+00:00
Mai mult
Sursă
Editează
#38891913

cea mai simplă metodă este detalii despre melodii ..

pentru datele citite

import songdetails
song = songdetails.scan("blah.mp3")
if song is not None:
    print song.artist

în mod similar pentru editare

import songdetails
song = songdetails.scan("blah.mp3")
if song is not None:
    song.artist = u"The Great Blah"
    song.save()

Nu uitați să adăugați u înaintea numelui, până când cunoașteți limba chineză.

u poate citi și edita în bloc utilizând modulul python glob

ex.

import glob
songs = glob.glob('*')  //script should be in directory of songs.
for song in songs:
   //do the above work.
0
0
Comentarii (0)
Eli Lopez
8 aprilie 2018 в 6:52
2018-04-08T18:52:20+00:00
Mai mult
Sursă
Editează
#49719777

Primul răspuns care utilizează eyed3 este depășit, deci este o versiune actualizată a acestuia.

Citirea etichetelor dintr-un fișier mp3:

 import eyed3

 audiofile = eyed3.load("some/file.mp3")
 print(audiofile.tag.artist)
 print(audiofile.tag.album)
 print(audiofile.tag.album_artist)
 print(audiofile.tag.title)
 print(audiofile.tag.track_num)

Un exemplu de pe site pentru modificarea etichetelor:

 import eyed3

 audiofile = eyed3.load("some/file.mp3")
 audiofile.tag.artist = u"Integrity"
 audiofile.tag.album = u"Humanity Is The Devil"
 audiofile.tag.album_artist = u"Integrity"
 audiofile.tag.title = u"Hollow"
 audiofile.tag.track_num = 2

An issue I encountered while trying to use eyed3 for the first time had to do with an import error of libmagic even though it was installed. To fix this install the magic-bin whl from here

0
0
Comentarii (0)
Marc Maxson
16 aprilie 2018 в 4:34
2018-04-16T04:34:52+00:00
Mai mult
Sursă
Editează
#49848525

După ce am încercat modul simplu pip install pentru modulele eyeD3, pytaglib și ID3 recomandate aici, am găsit că această opțiune a fost singura care a funcționat. Restul a avut erori de import cu dependente lipsă în C ++ sau ceva magic sau altă bibliotecă care a ratat pip . Deci, mergeți cu acesta pentru citirea de bază a etichetelor ID3 (toate versiunile):

https://pypi.python.org/pypi/tinytag/0.18.0

from tinytag import TinyTag
tag = TinyTag.get('/some/music.mp3')

Lista de atribute posibile pe care le puteți obține cu TinyTag:

tag.album         # album as string
tag.albumartist   # album artist as string
tag.artist        # artist name as string
tag.audio_offset  # number of bytes before audio data begins
tag.bitrate       # bitrate in kBits/s
tag.disc          # disc number
tag.disc_total    # the total number of discs
tag.duration      # duration of the song in seconds
tag.filesize      # file size in bytes
tag.genre         # genre as string
tag.samplerate    # samples per second
tag.title         # title of the song
tag.track         # track number as string
tag.track_total   # total number of tracks as string
tag.year          # year or data as string

Era mic și de sine stătătoare, așa cum se făcea publicitate.

0
0
Comentarii (0)
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
ID
KO
RU
© Answer-ID 2021
Sursă
https://stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire