صفر و یک - برنامه نویسی - لینوکس

دست نوشته های شخصی من در مورد نرم افزار، سیستم عامل و برنامه نویسی لینوکس

صفر و یک - برنامه نویسی - لینوکس

دست نوشته های شخصی من در مورد نرم افزار، سیستم عامل و برنامه نویسی لینوکس

لیدورا یک وبلاگ تخصصی برنامه نویسی یا لینوکس نیست. بیشتر محلیه برای ثبت چیزهایی که قراره بیشتر از یه بار خونده بشن. اگه به درد شما هم خورد که زکات دانش ما پرداخت شده، شکر.

آخرین نظرات

نویسندگان

تگ زدن به فایل‌های mp3 با ابزار خط فرمان id3v2

يكشنبه, ۶ مهر ۱۳۹۳، ۱۲:۰۳ ب.ظ

تگ زدن به آهنگ‌ها با 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 تگ گذاری می‌کنم. اصلا به ذهنم نرسیده بود که دنبال یه ابزار خط-فرمانی برای این کار بگردم که کار سریع‌تر پیش بره.

موفق باشی.
پاسخ:
ممنون عارف جان.

خوشحالم که به دردت خورد.
۱۲ مهر ۹۳ ، ۱۵:۲۶ میلاد صبح‌خیز
ابزار kid3 که واسه kde نوشته شده هم برنامه خوبیه واسه مدیریت TAGهای موزیک‌هاتون
پاسخ:
ممنون بابت معرفی

این ابزارها توی میزکارهایی بجز KDE به خاطر وابستگی‌هاشون حجم دانلود زیادی دارن.

Packages (53): attica-0.4.2-1  attica-qt5-5.2.0-2  gamin-0.1.10-8
               grantlee-qt4-0.5.1-1  kactivities-frameworks-5.2.0-4
               karchive-5.2.0-2  kauth-5.2.0-3  kbookmarks-5.2.0-3
               kcmutils-5.2.0-3  kcodecs-5.2.0-3  kcompletion-5.2.0-3
               kconfig-5.2.0-3  kconfigwidgets-5.2.0-3
               kcoreaddons-5.2.0-3  kcrash-5.2.0-2  kdbusaddons-5.2.0-3
               kdebase-runtime-4.14.1-1  kdeclarative-5.2.0-3
               kdelibs-4.14.1-1  kglobalaccel-5.2.0-3
               kguiaddons-5.2.0-2  ki18n-5.2.0-3  kiconthemes-5.2.0-3
               kio-5.2.0-3  kitemviews-5.2.0-3  kjobwidgets-5.2.0-3
               knotifications-5.2.0-3  kservice-5.2.0-3
               ktextwidgets-5.2.0-3  kwallet-5.2.0-2
               kwidgetsaddons-5.2.0-3  kwindowsystem-5.2.0-3
               kxmlgui-5.2.0-3  libdbusmenu-qt-0.9.2-3
               libdbusmenu-qt5-0.9.3+14.10.20140619-1
               libkactivities4-4.13.3-1  libqzeitgeist-0.8.0-4
               libssh-0.6.3-1  oxygen-icons-4.14.1-1
               phonon-qt4-4.8.0-1  phonon-qt4-gstreamer-4.8.0-2
               phonon-qt5-4.8.0-1  phonon-qt5-gstreamer-4.8.0-2
               polkit-qt4-0.112-1  polkit-qt5-0.112-1  qca-2.0.3-5
               qt5-svg-5.3.2-1  qt5-x11extras-5.3.2-1  qtwebkit-2.3.4-1
               solid-5.2.0-3  sonnet-5.2.0-3  strigi-0.7.8-5
               kid3-3.1-3

Total Download Size:    72.62 MiB
Total Installed Size:   224.04 MiB

kid3-qt بدون وابستگی به kde نوشته شده، البته به qt وابستگی داره
تفاوت id3 و id3v2 چیه؟! و اینکه کدومشوم کامل‌تره؟
پاسخ:
محمد جان تفاوت‌های زیادی دارند اما پایه تفاوت‌ها توی اندازه فیلدها و تعدادشونه. مثلا ورژن ۲ از url پشتیبانی می‌کنه یا توی ورژن ۲.۳ می‌تونید برای هر فیلد چند مقدار تعریف کنید. ورژن ۲.۴ از UTF-8 پشتیبانی می‌کنه و الی آخر.
اطلاعات کامل رو از اینجا بگیرید.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی