تگ زدن به فایلهای mp3 با ابزار خط فرمان id3v2
چند روز بود داشتم دنبال یه برنامه مناسب برای تگ زدن به آهنگهام میگشتم. این سایتهای ایرانی موزیک مثل ندید پدیدها تمام مشخصات آهنگها رو با آدرس سایتهای خودشون پر میکنن و همه رو تو دردسر میندازن(خدا ببخشتشون). چه فایده که نرمافزارهای قوی پخش موزیک داشته باشی و نتونی موزیکهات رو دسته بندی کنی.
نوشتن اسکریپت برای این کار آسونه. کافیه ۱۲۸ بیت آخر آهنگ رو با یه دستوری مثل این بخونی(به نقل از وبلاگ شاهین).
tag=$(tail -c128 "$file" | tr '\0' ' ') id3=$(head -c10 "$file" | tr '\0' ' ')
اطلاعات id3 این طوری ذخیره میشن(به نقل از ویکیپدیا):
header | 3 | "TAG" |
title | 30 | 30 characters of the title |
artist | 30 | 30 characters of the artist name |
album | 30 | 30 characters of the album name |
year | 4 | A four-digit year |
comment | 28 or 30 | The comment. |
zero-byte | 1 | If a track number is stored, this byte contains a binary 0. |
track | 1 | The number of the track on the album, or 0. Invalid, if previous byte is not a binary 0. |
genre | 1 | Index in a list of genres, or 255 |
با پایتون هم میشه کلی کار با این تگها کرد. اینجا رو ببینید(قسمت ID3 Handling).
اما چون حالشو نداشتم که خودم چیزی بنویسم :) یه جستجو توی مخازن آرچ کردم و به کلی برنامه خوب رسیدم که این کار رو به راحتی برام انجام میدادن.
ali on aliHost in ~
$ yaourt id3
1 extra/id3lib 3.8.3-15 [installed]
Library for reading, writing, and manipulating ID3v1 and ID3v2 tags
2 extra/id3v2 0.1.12-3 [installed]
Utility to edit id3v2 tags
3 extra/libid3tag 0.15.1b-8 [installed]
library for id3 tagging
4 community/id3 0.78-4
Utility to edit id3v1 and id3v2 tags
5 community/kid3 3.1-2
An MP3, Ogg/Vorbis and FLAC tag editor, KDE version
6 community/kid3-qt 3.1-2
An MP3, Ogg/Vorbis and FLAC tag editor, QT version
7 community/mp3info 0.8.5a-5
An MP3 technical info viewer and ID3 1.x tag editor
8 community/mp3unicode 1.2.1-2
A command line utility to convert ID3 tags in mp3 files between different
encodings
9 community/pyid3lib 0.5.1-8
A Python module for editing ID3v2 tags of MP3 audio files
10 aur/andern-svn 41-1 (Out of Date) (2)
a lightweight ID3v2 Tag editor written in python using GTK2
11 aur/cmdpack 1.03-3 (7)
Collection of command line utilities, most for emulation or disk images
(bin2iso, bincomp, brrrip, byteshuf, byteswap, cdpatch, ecm, fakecrc,
hax65816, id3point, pecompat, rels, screamf, subfile, uips, usfv, vb2rip,
wordadd, zerofill)
12 aur/hamsimanager 1.3.2-2 (22)
Hamsi Manager is a file manager,renamer,id3 tagger,information changer
,.... tool.
13 aur/hamsimanager-svn 222-1 (3)
Hamsi Manager is a file manager,renamer,id3 tagger,information changer ,
tool.
14 aur/harmony-git 20120902-1 (0)
A music folder organizer with the help of ID3 tags
15 aur/haskell-taglib 0.1.1-4 (0)
Binding to TagLib (ID3 tag library)
16 aur/id3ed 1.10.4-1 (18)
Interactive command line ID3-Tag editor
17 aur/id3lib-rcc 3.8.3-7 (0)
id3lib with librcc patch
18 aur/id3lib_debian_patches 3.8.3-1 (1)
Open-source, cross-platform software development library for reading,
writing, and manipulating ID3v1 and ID3v2 tags
19 aur/id3shit-git 20100830-1 (1)
Less sucky commandline based id3-editor and renamer
20 aur/id3tag-go 0.1-1 (1)
id3tag is a Go wrapper around C libid3tag library.
21 aur/id3ted 1.0b3-2 (8)
command line id3 tag editor
22 aur/id3tool 1.2a-3 (49)
A command line editor for ID3 tags in MP3 files
23 aur/jampal 02.01.05-1 (1)
mp3 library, advanced ID3V1 and ID3V2 tagger, player.
24 aur/kid3-git 20130324-1 (5)
An MP3, Ogg/Vorbis and FLAC tag editor for KDE.
25 aur/kid3-qt-git 20130325-1 (1)
An MP3, Ogg/Vorbis and FLAC tag editor (without KDE dependencies)
26 aur/ktageditor 0.0.1-1 (1)
KTag Editor is a free open source ID3v tag editor developed in Qt5
framework.
27 aur/lame-extras 3.99.5-1 (16)
Supplementary wrappers for LAME (auenc, lameid3, mlame, and mugeco)
28 aur/lib32-libid3tag 0.15.1b-1 (1)
library for id3 tagging, lib32.
29 aur/mingw-w64-id3lib 3.8.3-1 (0)
Library for reading, writing, and manipulating ID3v1 and ID3v2 tags
(mingw-w64)
30 aur/mp3check 0.8.7-1 (27)
Check mp3 files for consistency plus fix header and id3tag errors
31 aur/mp3gain-foo 1.5.2-1 (12)
mp3gain modified to support id3v2 tags like Foobar2000 (replaygain_track_*)
32 aur/mp3rename 0.6.9-4 (10)
mp3rename renames mp3-files according id3-infos
33 aur/mpd-fork-git 20110901-1 (1)
A fork of mpd with patches(id3v1)
34 aur/mytag 1.2-1 (3)
An tagtool doesn't cut it and neither does any other music tagging program
GTK3 ID3v2.4 compatible.
35 aur/ocaml-mp3id3 0.2.1-1 (1)
OCaml library for reading MP3 tags
36 aur/perl-mp3-find 0.07-1 (0)
Search and sort MP3 files based on their ID3 tags
37 aur/perl-music-tag-mp3 0.4101-1 (3)
Plugin module for Music::Tag to get information from id3 tags
38 aur/php-getid3 1.9.3-1 (1)
A PHP library which allow read song tag (OGG/MP3)
39 aur/qoobar 1.6.5-1 (12)
Qoobar - Audio Tagger for Classical Music. It can - Edit ID3v2.4,
Xiph.org, APE, ASF tags.
40 aur/qtagconvert 2.0.0-3 (4)
Tag editor for mp3 files. Designed to convert codepage for ID3v1 and ID3v2
tags
41 aur/qtagger 1.0.1-3 (7)
Crossplatform simple id3 tag editor base on Qt4 & TagLib.
42 aur/sego3 0.56-1 (4)
tool to control your id3tags
43 aur/trm 0.2.1-2 (0)
چندتاشون رو امتحان کردم تا اینکه رسیدم به id3v2 که یه بستهی تحت خط فرمانه و خیلی خیلی کوچیک ولی کاراست. کار باهاش راحته این طرز استفادشه:
$ id3v2
Usage: id3v2 [OPTION]... [FILE]...
Adds/Modifies/Removes/Views id3v2 tags, modifies/converts/lists id3v1 tags
-h, --help Display this help and exit
-f, --list-frames Display all possible frames for id3v2
-L, --list-genres Lists all id3v1 genres
-v, --version Display version information and exit
-l, --list Lists the tag(s) on the file(s)
-d, --delete-v2 Deletes id3v2 tags
-s, --delete-v1 Deletes id3v1 tags
-D, --delete-all Deletes both id3v1 and id3v2 tags
-C, --convert Converts id3v1 tag to id3v2
-1, --id3v1-only Writes only id3v1 tag
-2, --id3v2-only Writes only id3v2 tag
-r, --remove-frame "FRAMEID" Removes the specified id3v2 frame
-a, --artist "ARTIST" Set the artist information
-A, --album "ALBUM" Set the album title information
-t, --song "SONG" Set the song title information
-c, --comment "DESCRIPTION":"COMMENT":"LANGUAGE"
Set the comment information (both
description and language optional)
-g, --genre num Set the genre number
-y, --year num Set the year
-T, --track num/num Set the track number/(optional) total tracks
You can set the value for any id3v2 frame by using '--' and then frame id
For example:
id3v2 --TIT3 "Monkey!" file.mp3
would set the "Subtitle/Description" frame to "Monkey!".
میتونید یه آهنگ رو بهش بدید و با استفاه از سوئیچهاش تگش بزنید.
اینم روش نصبش:
$ yaourt id3v2
برای توزیع خودتون هم توی مخازنتون بگردید احتمالا پیدا میشه.
برای اینکه تگ زنی رو دستهای انجام بدید آهنگهای مورد نظرتون رو توی یه پوشه بریزید و با یه چیزی مثل این همشونو هم زمان تگ بزنید:
$ for file in *.mp3; do id3v2 -a "Aslani" $file; done
یا
$ for file in *.mp3; do id3v2 -a "Fardmanesh" -A "Hekayat 5 - Ft Shohreh" $file; done
شاید دلتون خواست که یه اسکریپت بنویسین که خودش پوشهها رو براتون بگرده و تمام آهنگها رو همزمان تگ بزنه. برای من که نشد چون اسم آلبومهام هم درست نبودن و پر از اشکال بودن.
خوشبختانه چون بیشتر آهنگهام رو از بیپ تونز تهیه میکنم مشکلی بابت دستهبندی ندارم.
اما اگر آلبومی رو بهصورت فیزیکی بخرم با RhythmBox تگ گذاری میکنم. اصلا به ذهنم نرسیده بود که دنبال یه ابزار خط-فرمانی برای این کار بگردم که کار سریعتر پیش بره.
موفق باشی.