Thursday, February 10, 2005

ลองแก้ ID3 Tag ของ MP3 ด้วย Perl

เวลาเปิดฟังเพลงไทย MP3 ด้วย iTune (บน Windows XP ญี่ปุ่น) บางทีข้อมูลชื่อเพลงไทย ชื่อนักร้อง ชื่ออัลบั้ม ฯลฯ จะโผล่ขึ้นมาเป็นภาษาญี่ปุ่น อ่านไม่รู้เรื่อง

ทั้งนี้เป็นเพราะว่าข้อมูลใน ID3 Tag (ชื่อเพลงภาษาไทย ฯลฯ) ที่ฝังอยู่ในไฟล์ MP3 ใช้รหัส TIS ไม่ตรงกับ Locale ของเครื่องที่ใช้อยู่ (ญี่ปุ่น) iTune ก็เลยคิดว่ามันเป็นอักษรญี่ปุ่น แสดงผลแบบญี่ปุ่นๆ

วิธีแก้ที่ง่ายที่สุด คือ ไปที่ Control Panel -> Regional Setting แล้วตั้ง Locale เครื่องเป็น Thai จากนั้นก็รีบูท

iTune ก็จะอ่านชื่อเพลงออกได้ถูกต้องเป็นภาษาไทย ตอนนี้ก็เลือกที่เพลง กดเมาส์ปุ่มขวา แล้วเลือก "Convert ID3 Tags" ในเมนูที่ปรากฏ ให้ iTune แปลง Tag เป็นรุ่นล่าสุด (v2.4 ?) ชื่อเพลงเหล่านี้ก็จะเป็น Unicode หมด เปลี่ยน Locale เครื่องกลับเป็นญี่ปุ่นเหมือนเดิมได้

เมื่อ ID3 Tag เป็น Unicode แล้ว ชื่อเพลงภาษาไทยก็จะแสดงผลได้ถูกต้องบน iPOD (ที่แก้ Firmware ใส่ฟอนต์ไทยลงไปแล้ว) อีกด้วย

ทีนี้เกิดอยากทำ Script ให้เปลี่ยน ID3 Tag เอง เพราะมีหลายเพลงที่ชื่อเพลงเขียนมาเป็น "ชื่อเพลง - นักร้อง" จะให้ Script แยกชื่อเพลงกับชื่อนักร้องออกจากกันตรงเครื่องหมาย "-" และใส่ข้อมูลลงในช่องที่เหมาะสมของ ID3 Tag

หลายวันก่อนก็ลองบน Samurai สั่ง apt-cache search id3 เจอโปรแกรม/library สำหรับแก้ไข ID3 Tag เยอะแยะเลย เลือกอันที่เป็น perl คือ libmp3-tag-perl มาลองก่อน

นั่งลองจนเข้าใจวิธีเขียนอ่านข้อมูลต่างๆ และเขียนส่วนที่แปลง TIS->Unicode แล้ว ปรากฏว่าไม่ได้ผลแฮะ เปิดใน iTune หรือ Media Player แล้ว โปรแกรมมันยังเข้าใจว่าเป็นรหัสเดียวกับ Locale เครื่องอยู่ดี

ลองอ่านเอกสาร libmp3-tag-perl ดูดีๆอีกที เขาบอกว่า change_frame("TIT2", 1, encode($song)); ที่ระบุรหัสเป็น UNICODE (1 ตัวกลาง) ยังไม่ซัพพอร์ต

... If there is need to give an encoding parameter and you
would like standard ascii encoding, you can omit the parameter or
set it to 0. Any other encoding is not supported yet, and thus
ignored. ...
ตกลงว่ายังไม่สำเร็จ :)

4 comments:

Oat said...

พี่ครับแล้วมีวิธีแก้ของ Mac หรือเปล่าครับ เพราะ itune ของ mac บางทีก็ไม่แสดงชื่อภาษาไทยครับ

Hui/ฮุ้ย said...

เหมืิอนเคยได้ยินว่า iTune Mac มันไม่รับรู้ Locale ไทย

คงต้องแปลง ID3 ให้เป็น Unicode ด้วย iTune บน Windows หรือโปรแกรมแก้ไข ID3 อื่นๆก่อน แล้วจึงเอาไปเปิดด้วย iTune บน Mac ได้ครับ

poonlap said...

ไปเจอโปรแกรมอันนี้มาเขียนด้วย Mono ไม่รู้ว่าใช้ได้หรือเปล่าครับ.
http://www.gnomefiles.org/app.php?soft_id=503

Hui/ฮุ้ย said...

ต้องลองๆ