MP3ファイルの作成

プレイやん用にCDからMP3ファイルを抽出してみた。
とりあえずcdparanoia(cdparanoia-3.0.9.8nb2)とgogo(gogo-2.39.1)をインストールする。そのままでは面倒なので、以下のスクリプトをmp3extというファイル名で保存する。

#!/usr/bin/env ruby
# -*- ruby -*-
# $Id: mp3ext,v 1.2 2005/04/23 21:40:26 s-tanaka Exp $
#

cdparanoia = '/usr/pkg/bin/cdparanoia'
gogo = '/usr/pkg/bin/gogo'

if ARGV.size < 3
  puts 'mp3ext [filename prefix] [begin track no.] [end track no.]'
  exit
end

prefix = ARGV.shift
begno = ARGV.shift.to_i
endno = ARGV.shift.to_i

begno.upto(endno) do |i|
  filename = "#{prefix}_%02d.mp3" % i
  pid = fork do
    IO.popen('-', 'w') do |io|
      if io
        # parent
        STDOUT.close
        io.dup
        exec(cdparanoia, i.to_s, '-')
      else
        # child
        exec(gogo, 'stdin', filename, '-silent')
      end
    end
  end
  Process.waitpid(pid)
end

実行例。

$ sudo mp3ext album_name 1 15

このスクリプトでは、テンポラリファイルを作らずパイプ経由でデータの受渡しを行っている。シェルを使わずに直接execしてるからちょっと読みにくいな。これはまぁ仕方ないか。
しかし、MP3ファイルの作成なんて最近の人はGrip経由でやるのが普通かも知れず。