Jak mogę pobrać metadane mp3 w Pythonie?
123
Użyłem eyeD3 pewnego dnia z dużym sukcesem. Odkryłem, że może dodać grafikę do tagu ID3, czego inne moduły, które oglądałem, nie mogły. Będziesz musiał zainstalować za pomocą pip lub pobrać tar i uruchomić python setup.py install
z folderu źródłowego.
Odpowiednie przykłady ze strony internetowej są poniżej.
Odczytywanie zawartości pliku mp3 zawierającego informacje o tagach v1 lub v2:
import eyeD3
tag = eyeD3.Tag()
tag.link("/some/file.mp3")
print tag.getArtist()
print tag.getAlbum()
print tag.getTitle()
Przeczytaj plik mp3 (długość ścieżki, szybkość transmisji itp.) I uzyskaj dostęp do jego tagu:
if eyeD3.isMp3File(f):
audioFile = eyeD3.Mp3AudioFile(f)
tag = audioFile.getTag()
Można wybrać określone wersje tagów:
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.
Lub możesz iterować po surowych klatkach:
tag = eyeD3.Tag()
tag.link("/some/file.mp3")
for frame in tag.frames:
print frame
Po połączeniu tagu z plikiem można go modyfikować i zapisywać:
tag.setArtist(u"Cro-Mags")
tag.setAlbum(u"Age of Quarrel")
tag.update()
Jeśli powiązany tag to v2 i chcesz go zapisać jako v1:
tag.update(eyeD3.ID3_V1_1)
Wczytaj tag i usuń go z pliku:
tag.link("/some/file.mp3")
tag.remove()
tag.update()
Dodaj nowy tag:
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()
import eyed3
(małe litery d).Użyłem mutagen edycji tagów w plikach multimedialnych wcześniej. Zaletą mutagenu jest to, że obsługuje on inne formaty, takie jak mp4, FLAC itp. Napisałem kilka skryptów, które z dużym powodzeniem wykorzystały ten interfejs API.
źródło
TIT2
dla mp3,title
dla ogg,\xa9nam
dla mp4,Title
dla WMA itp. - to jest do bani.Problem
eyed3
polega na tym, że wyrzuciNotImplementedError("Unable to write ID3 v2.2")
zwykłe pliki MP3.Z mojego doświadczenia wynika, że
mutagen
klasaEasyID3
działa bardziej niezawodnie. Przykład:W ten sposób można uzyskać dostęp do wszystkich innych tagów i je zapisać, co będzie służyć większości celów. Więcej informacji znajdziesz w samouczku dotyczącym mutagenu .
źródło
To, czego szukasz, to moduł ID3 . To bardzo proste i zapewni Ci dokładnie to, czego potrzebujesz. Po prostu skopiuj plik ID3.py do katalogu site-packages, a będziesz mógł zrobić coś takiego:
źródło
sprawdź to:
https://github.com/Ciantic/songdetails
Przykład użycia:
Zapisywania zmian:
źródło
Tylko dodatkowe informacje dla was:
zajrzyj do sekcji „Edytory plików MP3 i metadanych” na stronie PythonInMusic .
źródło
Prosty przykład z książki Dive Into Python działa dla mnie dobrze, to jest link do pobrania, przykład to fileinfo.py. Nie wiem, czy jest najlepszy, ale może wykonać podstawową pracę.
Cała książka jest dostępna online tutaj .
źródło
Przejrzałem powyższe odpowiedzi i stwierdziłem, że nie są one dobre dla mojego projektu z powodu problemów licencyjnych z GPL.
I dowiedziałem się, że: PyID3Lib , chociaż ta konkretna data wydania powiązania Pythona jest stara, używa ID3Lib , który sam w sobie jest aktualny.
Warto wspomnieć, że oba są LGPL i są gotowe do użycia.
źródło
najłatwiejszą metodą są szczegóły dotyczące utworów .
do odczytu danych
podobnie do edycji
Nie zapomnij dodać u przed nazwą, dopóki nie poznasz języka chińskiego.
Możesz czytać i edytować zbiorczo za pomocą modułu python glob
dawny.
źródło
Po wypróbowaniu prostej
pip install
trasy dla modułów eyeD3, pytaglib i ID3 zalecanych tutaj stwierdziłem, że ta czwarta opcja była jedyną działającą. Reszta miała błędy importu z brakującymi zależnościami w C ++ lub czymś magicznym lub inną biblioteką, którejpip
brakowało. Więc idź z tym do podstawowego odczytu tagów ID3 (wszystkie wersje):https://pypi.python.org/pypi/tinytag/0.18.0
Lista możliwych atrybutów, które możesz uzyskać za pomocą TinyTag:
Jak reklamowano, był mały i samodzielny.
źródło
Pierwsza odpowiedź, która używa eyed3, jest nieaktualna, więc oto jej zaktualizowana wersja.
Odczytywanie tagów z pliku mp3:
Przykład ze strony do modyfikacji tagów:
Problem, który napotkałem podczas pierwszej próby użycia eyed3, dotyczył błędu importu libmagic, mimo że został zainstalowany. Aby to naprawić, zainstaluj stąd magic-bin whl
źródło
Proponuję mp3-tagger . Najlepsze w tym jest to, że jest rozpowszechniany na licencji MIT i obsługuje wszystkie wymagane atrybuty.
Przykład:
Obsługuje ustawianie, pobieranie, aktualizowanie i usuwanie atrybutów plików mp3.
źródło
Może to zależeć od tego, co chcesz zrobić, oprócz czytania metadanych. Jeśli potrzebujesz tylko bitrate / nazwy itp., I nic więcej, coś lekkiego jest prawdopodobnie najlepsze.
Jeśli manipulujesz przeszłością mp3, PyMedia może być odpowiednia.
Jest ich sporo, cokolwiek otrzymasz, upewnij się i przetestuj to na wielu przykładowych nośnikach. W szczególności istnieje kilka różnych wersji tagów ID3, więc upewnij się, że nie są one zbyt nieaktualne.
Osobiście użyłem tej małej klasy MP3Info z odrobiną szczęścia. Jest jednak dość stary.
http://www.omniscia.org/~vivake/python/MP3Info.py
źródło
Po kilku wstępnych badaniach pomyślałem, że szczegóły dotyczące utworów mogą pasować do mojego przypadku użycia, ale nie obsługują plików .m4b. Mutagen tak. Zauważ, że chociaż niektórzy (rozsądnie) mieli problem z wyświetlaniem przez Mutagena kluczy natywnych dla formatu, które różnią się w zależności od formatu (TIT2 dla mp3, tytuł dla ogg, \ xa9nam dla mp4, tytuł dla WMA itp.), Mutagen.File ( ) ma (nowy?) parametr easy = True, który zapewnia tagi EasyMP3 / EasyID3, które mają spójny, aczkolwiek ograniczony zestaw kluczy. Jak dotąd przeprowadziłem tylko ograniczone testy, ale wspólne klucze, takie jak album, wykonawca, artysta albumu, gatunek, numer utworu, numer płyty itp., Są obecne i identyczne dla plików .mb4 i .mp3, gdy używam easy = True, dzięki czemu bardzo wygodne dla moich celów.
źródło
używając https://github.com/nicfit/eyeD3
źródło
Użyłem tinytag 1.3.1, ponieważ
źródło