[ruby-list:49748] [質問] ruby-mp3infoでタグ情報(テキスト)のエンコーディングを取得したい

From: Takahiro Yamaguchi <Takahiro.Yamaguchi@...>
Date: 2014-01-31 11:36:14 UTC
List: ruby-list #49748
山口と申します。

ruby-mp3info を使い始めたのですが、解決できない内容があるので、以下をご教示い
ただけますでしょうか?

■環境
yama@~$ uname -v
#20-Ubuntu SMP Fri Oct 7 14:50:42 UTC 2011
yama@~$ ruby --version
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]

以下のスクリプトを元に

yama@:~$ cat Question_mp3info.rb
#! /usr/bin/ruby
# -*- coding: utf-8 -*-

file="12 ON MY BEAT.mp3" # 適当なmp3ファイルを指定

require 'rubygems'
require 'mp3info'

Mp3Info.open(file) do |mp3info|
  puts mp3info.tag2.TIT2
  puts mp3info.tag2.TPE1
  puts mp3info.tag2.TALB    
end

実行すると
yama@:~$ ./Question_mp3info.rb
ON MY BEAT
BOOWY
MORAL

12 ON MY BEAT.mp3の ID3ver2のタグ情報 title(TIT2),artist(TPE1),album(TALB)の情報が取得できます。
それぞれがどのようなエンコードになっているかを ruby-mp3infoを利用して
取得し表示したたいめ、調べたい結果、

yama@:~$ gem which mp3info
/var/lib/gems/1.8/gems/ruby-mp3info-0.8.3/lib/mp3info.rb
から呼び出している、
yama@:/var/lib/gems/1.8/gems/ruby-mp3info-0.8.3/lib/mp3info$ ls
./  ../  extension_modules.rb  id3v2.rb

id3v2.rb 中の private のメッソドである decode_tag 中で、
name がTIT2/TPE1/TALBの時の
TEXT_ENCODINGS[encoding_index]
を取得できればいいい事が分かりました。
この値をどのように取得すればよいかご教示いただけないでしょうか?
よろしくお願いします。

以下、decode_tagの該当部分
 ### Read a tag from file and perform UNICODE translation if needed
 def decode_tag(name, raw_value)

   if name =~ /^(T|COM)/
     [...]
       encoding_index = raw_value.getbyte(0) # language encoding (see TEXT_ENCODINGS constant)   
       out = raw_value[1..-1]
     end
     # we need to convert the string in order to match
     # the requested encoding
     if encoding_index && TEXT_ENCODINGS[encoding_index] && out
       if RUBY_1_8
         out = Mp3Info::EncodingHelper.convert_to(out, TEXT_ENCODINGS[encoding_index], "utf-8")
     [...]                  
end

-- 
Takahiro Yamaguchi

In This Thread

Prev Next