Czy istnieje sposób na odczytanie tagów mp3 pliku z powłoki? Coś w stylu:
mp3tags MyFile.mp3 author
powinien wypisać znacznik autora pliku mp3.
Czy istnieje sposób na odczytanie tagów mp3 pliku z powłoki? Coś w stylu:
mp3tags MyFile.mp3 author
powinien wypisać znacznik autora pliku mp3.
Odpowiedzi:
Możesz także użyć, ffprobe
który jest częścią ffmpeg
.
sudo apt-get install ffmpeg
ffprobe file.mp3
Jeśli nie chcesz innych informacji, takich jak długość ścieżki itp., Możesz połączyć wyjście z grep:
ffprobe file.mp3 2>&1 | grep -A90 'Metadata:'
Lub w celu uzyskania tylko autora:
ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 file.mp3
Możesz wybrać inne tagi, oddzielając je przecinkami, np format_tags=title,album
.
Chciałem wyszukać słowo kluczowe we wszystkich plikach mp3 w folderze. Folder miał 486 plików, dlatego zainteresowało Cię, które z wymienionych tutaj rozwiązań jest najszybsze. Oto pętla, której użyłem:
# sudo apt-get install ffmpeg lltag eyed3 mp3info id3v2 libimage-exiftool-perl libid3-tools id3tool
keyword='fill_me_in'
getTitleFF() { ffprobe "$1" 2>&1 | sed -E -n 's/^ *title *: (.*)/\1/p'; }
getTitleLL() { lltag --show-tags title "$1" | sed -nE 's/^ TITLE=(.*)/\1/p'; }
getTitleEyed() { eyeD3 2>&1 "$1" | sed -n 's|\x1b\[[0-9;]*mtitle[^:]*: ||p'; }
getTitleInfo() { mp3info -p %t "$1"; }
getTitleId3() { id3v2 -l "$1" | sed -nE 's/^(TIT2 \([^)]*\)|Title *): (.*)/\2/p'; }
getTitleExif() { exiftool -title -b "$1"; }
getTitleId3i() { id3info "$1" | sed -nE 's/^=== TIT2 \([^)]*\): //p'; }
getTitleTool() { id3tool "$1" | sed -n 's|^Song Title:\t||p'; }
for prog in FF LL Eyed Info Id3 Exif Id3i Tool; do
echo "=== getTitle${prog} ==="
time \
for file in *.mp3; do
if "getTitle${prog}" "$file" | grep -q "$keyword"; then
echo "$file"
fi
done
done
Uwagi:
lltag
i mp3info
nie znajduję tytułu, ponieważ pliki, których używałem, miały tagi ID3v2, patrz komentarz @ s-prasanth: Jak czytać tagi mp3 w powłoce?eyeD3
używanie programowe jest problematyczne, ponieważ wykorzystuje kody kolorów (pogrubienie).eyeD3
a także id3v2
(ale tylko w przypadku znaczników ID3 v1) zwracają tytuł i wykonawcę w tym samym wierszu, co dodatkowo komplikuje sytuację; dlatego getTitleEyed
czasami getTitleId3
zwracaj zarówno tytuł, jak i wykonawcę, więc nie kopiuj-wklej tych funkcji.getTitleId3 będzie działał tylko dla tagów ID3 v2, ponieważ id3v2
ma różne formaty dla tagów ID3v1 i ID3v2, tj.
Title : Artist:
vs. ID3v2:
TIT2 (Title/songname/content description):
Jako jedyny program z tych 5 eyeD3
drukuje czerwone ostrzeżenie dla dwóch plików:
Invalid mode/bitrate combination for layer II
No ID3 v1.x/v2.x tag found!
Wydaje się, że te dwa pliki mają tagów ID3v1, ponieważ te dwa pliki są jedynymi, gdzie lltag
i mp3info
może uzyskać tytuł. Zastanawiam się, czy to błąd, eyeD3
ponieważ żaden inny program tutaj wymieniony nie ma problemu z tymi plikami ...
Wyniki (w czasie rzeczywistym):
Program | Version | Time / s
----------+------------+-----------
exiftool | 10.25 | 49.5 ± 0.5
lltag | 0.14.5 | 41 ± 1.0
ffprobe | 3.1.3-1+b3 | 33 ± 0.5
eyeD3 | 0.6.18 | 24 ± 0.5
id3info | 3.8.3 | 4.2 ± 0.1
id3v2 | 0.1.12 | 2.9 ± 0.1
id3tool | 1.2a | 1.7 ± 0.1
mp3info | 0.8.5a | 1.4 ± 0.1
Zwycięzcą jest id3tool
czasowo (mp3info jest szybsze, ale nie działa z ID3 v2).
id3v2
jest również dość szybki, ale getTitleId3
funkcja wymagałaby dostosowania, aby działała również ze znacznikami ID3v1, co w najgorszym przypadku może spowolnić czynnik 2.
id3info
do swojego porównania?
ffmpeg
ma jeszcze jedną zaletę: działa z aac
/ m4a
files. Inne narzędzia nie wydają się (lub czy wiesz inaczej?). Zasugeruję również przeszukanie jego FORMAT
sekcji, aby uniknąć przypadków, w których strumień ma również title
itp ffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'
.:
exiftool
lub ffprobe
. Bardziej wyspecjalizowane narzędzie do tego zadania byłoby metaflac --list
z flac
pakietu. Dla ogg exiftool
również działa, ale jest też vorbiscomment -l
z vorbis-tools
pakietu. Dziwnie vorbiscomment
i metaflac
nie można ich zamieniać, mimo że zarówno FLAC, jak i OGG mają metadane vorbis coment?
Ok, znalazłem program sam. Nazywa się mp3info i jest instalowany przez
sudo apt-get install mp3info
Aby uzyskać pojedyncze tagi mp3 z pliku, trzeba zadzwonić
mp3info -p %a file.mp3
co daje wykonawcę pliku. % A oznacza, że jeden chce uzyskać artystę i istnieją inne klucze do innych tagów.
mp3info
. Możesz zajrzeć id3v2
- może edytować / dodawać v2 i wyświetlać v1 i v2. Jeśli nie podoba ci się sposób wyświetlania tagów, możesz napisać skrypt, który odpowiednio uruchomi id3v2
i przetwarza dane wyjściowe.
-R
flagi z, grep
aby uzyskać określone dane wyjściowe.
Only ID3 versions 1.0 and 1.1 are supported
.
Możesz użyć eyed3 . Najpierw zainstaluj z terminala:
sudo apt-get install eyed3
Następnie uruchomić:
eyeD3 song.mp3
Połącz to z, grep
aby uzyskać określone tagi w jednym wierszu.
eyeD3 song.mp3 | grep artist
(aby usunąć wszystkie tagi mp3, czytaj TUTAJ )
eyeD3
nieeyed3
eyeD3 --plugin display -p "%t% by %a%" *
.
Wolę używać id3v2, po prostu wpisz id3v2 -l somefile.mp3
. Możesz także wyświetlić stronę podręcznika id3v2, aby uzyskać bardziej szczegółowe informacje.
mid3v2
zamiast z powodu braku wsparcia Unicode. Ostatnia aktualizacja id3v2 miała miejsce w 2013 roku .
Możesz wypróbować exiftool (Odczytywanie i zapisywanie meta informacji w plikach).
„ExifTool to niezależna od platformy biblioteka Perla oraz aplikacja wiersza poleceń do odczytu, zapisu i edycji meta informacji w wielu różnych plikach. ExifTool obsługuje wiele różnych formatów metadanych, w tym EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC Profile, Photoshop IRB, FlashPix, AFCP i ID3, a także notatki producentów wielu cyfrowych aparatów Canon, Casio, FLIR, FujiFilm, GE, HP, JVC / Victor, Kodak, Leaf, Minolta / Konica-Minolta, Motorola, Nikon, Nintendo, Olympus / Epson, Panasonic / Leica, Pentax / Asahi, Phase One, Reconyx, Ricoh, Samsung, Sanyo, Sigma / Foveon i Sony. ” - ExifTool autorstwa Phila Harveya
Oto przykład polecenia:
exiftool test.mp3
ExifTool Version Number : 10.00
File Name : test.mp3
Directory : .
File Size : 8.2 MB
File Modification Date/Time : 2016:03:02 21:44:58+01:00
File Access Date/Time : 2016:04:06 21:34:01+02:00
File Inode Change Date/Time : 2016:03:02 21:45:36+01:00
File Permissions : rw-rw-r--
File Type : MP3
File Type Extension : mp3
MIME Type : audio/mpeg
MPEG Audio Version : 1
Audio Layer : 3
Sample Rate : 44100
Channel Mode : Stereo
MS Stereo : Off
Intensity Stereo : Off
Copyright Flag : False
Original Media : False
Emphasis : None
VBR Frames : 9544
VBR Bytes : 8467680
ID3 Size : 115419
Band : Tech N9ne Collabos
Album : Strangeulation (Deluxe Edition)
Composer : Tech N9ne Collabos
Genre : Rap & Hip-Hop
Copyright : 2014 Strange Music, Inc
Title : American Horror Story (feat. Ces Cru)
Artist : Tech N9ne Collabos
Track : 10
Year : 2014
Comment :
Lyrics :
Private : (Binary data 8192 bytes, use -b option to extract)
Picture MIME Type : image/jpeg
Picture Type : Front Cover
Picture Description :
Picture : (Binary data 104371 bytes, use -b option to extract)
Audio Bitrate : 272 kbps
Date/Time Original : 2014
Duration : 0:04:09 (approx)
Sprawdź, lltag
czy szukasz rozwiązania, które obsługuje więcej niż tylko mp3 / ID3.
Zainstaluj z:
sudo apt-get install lltag
aby wyświetlić wszystkie tagi z nim: ( -S
jest na pokaz)
lltag -S somefile.mp3
aby wyświetlić niektóre tagi:
lltag --show-tags artist,album,title,number somefile.mp3
Możesz zacząć od tego screencast i na PRZYGOTOWANIA przewodnika
Zainstaluj:
pip install beets # latest version
apt install beets # repo version
Również:
exiftool -v3 *.mp3
mid3v2
z ( python-mutagen
pakietu) ( zamiastid3v2
, ostatnia aktualizacja była na 2013 !)id3
- Edytor tagów ID3 ( inny niż ten id3 )id3tool
- Edytor wiersza poleceń dla znaczników id3id3ren
- Tagger id3 i zmiana nazwy