Czy istnieje dobre narzędzie wiersza polecenia ID3 dla OS X?

45

Czy ktoś zna narzędzie ID3 wiersza polecenia * z obsługą ID3v2 , które można uruchomić w systemie Mac OS X przy rozsądnym wysiłku? Powinien obsługiwać zarówno czytanie, jak i pisanie tagów.

( * Chcę móc to nazwać np. Z niektórych skryptów Pythona, więc narzędzie GUI nie zadziała).

Narzędzie id3tool jest poza tym dobre, ale nie obsługuje ID3v2 (a zatem nie gra tak dobrze z iTunes). Musiałem go skompilować ze źródła, ale było to dość proste na komputerze Mac z Xcode i narzędziami programistycznymi (w tym zwłaszcza kompilatorem C). W każdym razie szczególnie chciałbym coś z podobnymi opcjami wiersza poleceń jak id3tool. Oto przykład otagowania jednego pliku:

id3tool -t "Song Title" -r Artist -a "Album Name" -c 2 track-02.mp3
Jonik
źródło
pracowałem nad napisaniem czegoś takiego ... w Pythonie są dostępne biblioteki i istnieje narzędzie o nazwie buraki, które z nich korzysta, więc badałem, jak to jest napisane.
Robert S Ciaccio
2
ponadto ... MusicBrainz Picard jest napisany w języku Python i jest oprogramowaniem typu open source, więc prawdopodobnie jest wiele do zdobycia z jego wykorzystania kodu i biblioteki.
Robert S Ciaccio,
Zgadzam się, Picard jest po prostu genialny
Rohan Monga

Odpowiedzi:

48

Jeśli masz zainstalowany Homebrew (wysoce zalecane), możesz po prostu:

brew install id3lib

Ten instaluje kilka narzędzi ID3 wiersza poleceń, w tym id3tag, id3convert, id3cpi id3info. Nie ma potrzeby używania skryptów Python lub Perl; wystarczy użyć zwykłych poleceń powłoki.

Usage: id3tag [OPTIONS]... [FILES]...
   -h         --help            Print help and exit
   -V         --version         Print version and exit
   -1         --v1tag           Render only the id3v1 tag (default=off)
   -2         --v2tag           Render only the id3v2 tag (default=off)
   -aSTRING   --artist=STRING   Set the artist information
   -ASTRING   --album=STRING    Set the album title information
   -sSTRING   --song=STRING     Set the title information
   -cSTRING   --comment=STRING  Set the comment information
   -CSTRING   --desc=STRING     Set the comment description
   -ySTRING   --year=STRING     Set the year
   -tSTRING   --track=STRING    Set the track number
   -TSTRING   --total=STRING    Set the total number of tracks
   -gSHORT    --genre=SHORT     Set the genre
   -w         --warning         Turn on warnings (for debugging) (default=off)
   -n         --notice          Turn on notices (for debugging) (default=off)
huyz
źródło
Czy obsługuje ID3v2?
Jonik
id3lib działa również w innych dystrybucjach, takich jak macports. Mówiąc o, czy jest jakiś sens przejścia z portów na homebrew? Miałem tyle bólu, zmieniając się z fink ...
HiQ CJ,
„Błąd: brak dostępnej formuły dla mid3v2”. Ktoś zainteresowany wniesieniem formuły?
ManuelSchneid3r
3
@Jonik id3lib może pisać i manipulować zarówno ID3v1, jak i ID3v2
jchook
1
Jest również wyposażony w id3v2polecenie „rób wszystko”. Pozwoli ci to zapisać dowolny plik do pliku.
Edward Falk,
14

Tam jest kompatybilny wersja OS X z biblioteki id3lib dostępnego tutaj na GitHub . Twierdzi, że obsługuje zarówno ID3v1, jak i ID3v2.

Jeff Swensen
źródło
1
Dzięki! To w pełni odpowiada na moje pytanie. Był tylko pakiet źródłowy, ale instalacja z tego (na komputerze Mac z narzędzi programistycznych) był całkiem gładki: standardowego uniksowego taryfę configure, makei make install. id3lib składa się z 4 oddzielnych plików binarnych: id3info (do odczytu tagów), id3tag (do pisania tagów), id3convert i id3cp. Wszystko działa dobrze (a iTunes honoruje tagi v2 napisane za pomocą id3tag).
Jonik
@Jonik, czego użyłeś do zawinięcia biblioteki? Jakiś python, który napisałeś?
Robert S Ciaccio
@calavera: Tak, mam proste skrypty, które próbują określić numer utworu lub nazwę na podstawie nazwy pliku (na przykład „Artist - 03 - Track.mp3”), a jeśli go znajdziesz, napisz go również do znacznika ID3.
Jonik
@Jonk: chciałbyś się podzielić? Nie mam dużego doświadczenia z Pythonem, więc coś takiego byłoby świetną zabawą i przedłużeniem ...
Robert S Ciaccio
@calavera: Proszę bardzo . Zastosowanie: add-track-names.py *mp3lub add-track-numbers.py *mp3. Typowe rzeczy (większość kodu) znajdują się w osobnym pliku .py. Nie jestem też programistą w języku Python, więc kod prawdopodobnie jest daleki od „python”. :) Ale wiele się nauczyłem, kiedy to napisałem, i prawdopodobnie łatwo go rozszerzyć, jeśli twoje potrzeby związane z tagowaniem są podobne do moich.
Jonik
5

Moduł Pythona Mutagen jest dostarczany z narzędziem ID3 wiersza polecenia o nazwie mid3v2 zastępującym id3lib.
Z dokumentacji użytkowania:

Możesz ustawić wartość dla dowolnej ramki ID3v2, używając „-”, a następnie ID ramki.
Na przykład:
mid3v2 - TIT3 „Monkey!” file.mp3 ustawi ramkę „Subtitle / Description” na „Monkey!”.

kraymer
źródło
Mutagen może być zainstalowany sudo pip install mutagenpo zainstalowaniu PIP sudo easy_install pip.
Lri,
można uruchomić bezpośrednio sudo easy_install mutagenza
user1259710
4

Możesz wypróbować id3v2 . Jest oparty na id3lib, o którym wspomniał Huyz, ale wydaje się być lepszym narzędziem wiersza poleceń niż te z id3lib. Z łatwością zrzuca tagi ID3V2 z plików MP3 wyprodukowanych przez iTunes, ale nie pliki M4A produkowane przez iTunes (jak w przypadku Apple Lossless).

Jeśli potrzebujesz plików M4A, inną opcją jest ffmpeg . Jego narzędzie wiersza polecenia ffprobe drukuje metadane w plikach i wierzę, że możesz pisać metadane za pomocą ffmpeg. Działa z plikami MP3 i M4A wyprodukowanymi przez iTunes. ffprobe może nie wyświetlać wszystkich metadanych; mp4v2 to kolejna dobra opcja.

Wszystkie trzy programy można łatwo zainstalować za pomocą Homebrew. W tej chwili (styczeń 2012) ffmpeg wymaga gcc do kompilacji, więc brew install --use-gcc ffmpeg.

Nelson
źródło
dzięki za sugestię mp4v2 dla m4a! działa jak urok, podczas gdy id3v2 nie :(
Ilias Karim
mp4v2 jest jedynym, który edytował tagi w sposób zgodny z iTunes (macOS 10.13, iTunes 12.7).
void-pointer
2

Ten stary wątek w Mac OS X Hints wygląda na dobry początek. Pochodzi z 2003 roku, więc nie jestem pewien, czy narzędzie, o którym mówią, jest nadal rozwijane. Być może będziesz musiał go skompilować samodzielnie.

Ben Wyatt
źródło
2

Zawsze jest AppleScript. Nie jestem wielkim fanem tego, ale iTunes jest skryptowalny i możesz nim manipulować wszystkimi tagami mp3. Możesz wywołać Applescript z wiersza poleceń za pomocą osascript.

eric
źródło
2

Ta strona: http://dougscripts.com/itunes/ ma wiele dobrych skryptów wiersza poleceń i narzędzi, które nakładają się na iTunes, aby robić rzeczy z biblioteką muzyczną. Niektóre z nich mogą robić, co chcesz. Niektóre narzędzia są bezpłatne, a niektóre są licencjonowane.

Chris Quenelle
źródło
2

ponieważ nie masz problemów z cli i Pythonem, mogę polecić niektóre moduły Perla na CPAN. Pliki MP3 :: Tag (oraz MP3 :: Tag :: ID3v1 i :: ID3v2 i :: Utils), MP3 :: Info, MP3 :: ID3Lib są dostępne do odczytu i manipulowania tagami ID3.

Jeśli wejdziesz na search.cpan.org i szukasz „MP3”, znajdziesz świat * opcji!

(* Gdzie „świat” to mały, ograniczony zestaw opcji ...)

gWaldo
źródło
1
CLI i Python tak, ale moduły Perla na CPAN ... nie tyle :-) (Jeśli możesz użyć również tych w Pythonie, nie wiedziałem o tym. A może miałeś na myśli pisanie Perla?) Osobiście mam to już rozwiązane , ale może jest to pomocne dla innych.
Jonik
2

Mając różne problemy typu „przerwanie pułapki” z id3v2, odkryłem eyeD3 , który jest modułem Pythona również istniejącym jako narzędzie wiersza poleceń. Wydaje się, że został zaktualizowany bardziej niż niektóre inne programy wspomniane powyżej.

bryn
źródło