السلام عليكم
احتجت لطريقة استخراج معلومات ملفات الـmp3، هناك عدد من المكتبات الجاهزة التي تساعدك باستخراج معلومات ملفات الـmp3 الا أنه بعد البحث والتدقيق وجدت أنه لايلزم فعلياً استخدام مكتبة خارجية بل يمكنك عمله بنفسك إذا كان مشروعك صغير.
تُخزن معلومات ملفات الـmp3 كالعنوان والألبوم في حاوية تسمى ID3 وهناك إصدارين رئيسية لها: ID3v1 و ID3v2، الإصدار ID3v1 له نوعين: البسيط والمطور، هذا الأخير يمكن من إضافة صورة في ملف الـmp3، أما الإصدار ID3v2 له عدد من الإصدارات الفرعية ربما أهم ميزاته أنه يمكن من تحديد الترميز المستخدم في تخزين البيانات ويدعم استخدام الترميز الموحد unicode في التسمية الا أنه لايزال محدود الإستخدام. سيقتصر الحديث هنا على الإصدار ID3v1 البسيط وهو الشائع وعلى عكس ID3v1، يتواجد ID3v2 في مقدمة ملف الـmp3.
قبل البدء يلزم التنبية أن ID3 "ليست معيار" ثابت تتبناه جهة ويلزم به الجميع وفيه بعض المشاكل في تصميمه؛ لذا قد يسبب هذا مشاكل أحياناً في التوافقية. أيضاً أحياناً البيانات المخزنة قد لاتكون صحيحة، مثلاً قد تجد اسم الفنان عنوان موقع |:.
تتواجد بنية ID3v1 في الـ128 بايت الأخيرة في ملف الـmp3، لو نظرت لملف mp3 في أحد محررات الـhex مثل برنامج Hex Workshop سترى التالي:![]()
صيغة نصية:
00742728 54 41 47 54 65 6E 64 65 72 TAGTender 00742731 20 46 6F 72 63 65 00 00 00 Force... 0074273A 00 00 00 00 00 00 00 00 00 ......... 00742743 00 00 00 00 00 00 4B 6F 74 ......Kot 0074274C 6F 00 00 00 00 00 00 00 00 o........ 00742755 00 00 00 00 00 00 00 00 00 ......... 0074275E 00 00 00 00 00 00 00 00 00 ......... 00742767 42 65 73 74 20 48 69 74 73 Best Hits 00742770 00 00 00 00 00 00 00 00 00 ......... 00742779 00 00 00 00 00 00 00 00 00 ......... 00742782 00 00 00 32 30 30 32 00 00 ...2002.. 0074278B 00 00 00 00 00 00 00 00 00 ......... 00742794 00 00 00 00 00 00 00 00 00 ......... 0074279D 00 00 00 00 00 00 00 00 00 ......... 007427A6 0E 0C ..
يمكنك تمييز بنية ID3v1 عن طريق الوسم TAG والذي يشير لبداية بنية ID3v1، ولها التركيب التالي:
- البايتات من 0 إلى 3 يحتوي الكلمة TAG وتشير لبداية البنية (اللون البرتقالي).
- يليها 30 بايت تضمّ عنوان الأغنية (اللون الأحمر).
- ثم 30 بايت لإسم الفنان (اللون الكحلي).
- ثم 30 بايت لعنوان الألبوم (اللون الأصفر).
- ثم 4 بايتات للسنة (اللون السماوي).
- يتبعها 28 أو 30 بايت للتعليق (اللون الأسود)، التعليق قد يكون أي شيء مثل "نسخة أصلية"، "نسخة راديو". 7. يتبع التعليق بايت واحد صفر.
- البايت قبل الأخير يشير لترتيب التسجيل على الشريط track number (اللون الأبيض).
- البايت الأخير يشير لنوع الأغنية مثل بلوز، هاوس، هب-هوب (اللون الزيتي).
ملاحظات:
- يخزن العنوان، واسم الفنان، وعنوان الألبوم، والسنة على شكل رموز آسكي، وإذا كان العنوان مثلاً أقل من 30 فتُملأ المساحة الزائدة بأصفار NULL أو مسافات.
- التعليق قد يشغل 28 إلى 30 بايت متبوع بصفر.
- ترتيب التسجيل و نوع الأغنية هما آخر بايتين، إقرأها من الأخير لأن حجم التعليق غير محدد كما أشرت. وتخزن على شكل رقم، مثلاً في المثال رقم التسجيل 0x0E أي أنه التسجيل الرابع عشر. بالنسبة لنوع الأغنية 0x0C - 12 فيعني Other، هذه قائمة بالأرقام ومعانيها.
كما قلت أن هذا ليس معيار فقط لاتطابق هذه الأرقام دوماً، أيضاً هذه أول 148 بينما يسع حجم المتغير لـ108 نوع آخر.
هذا تطبيق لقراءة معلومات الملف باستخدام بايثون mp3metadata.
بالتوفيق
