TACさんとこの音源を聴きたい #1

いろいろな方からTACさんのとこNike Air Max Billigt Online | Chie Mihara Rea Outlet Online Sverigeの音源が素晴しいと伺っていたのですが、残念ながらストリーミングの形式で置かれているため、NetBSDな僕の環境では簡単に聴けません。
一昨日もアイズカフェでぜひぜひと推薦されたので、そろそろ重い腰を上げて対処してみました。とりあえず以下の手順でファイルを僕のPC上にダウンロードできました。以下、専門用語が多くて難しいかと思いますが、知りたい方は僕までこっそり聞いてください。
さて、TACさんのところからダウンロードした拡張子.asxのファイルの内容を見ると、HTTPでアクセスする場合(HREFのところがいきなりファイル名で始まっている場合)とMMSでアクセスする場合(HREFのところがmms://で始まっている場合)があるようです。
まず、HTTPの場合。この場合はファイル名のところを切り出して、baseURLを補ってあげれば普通にダウンロードできます。あ、ファイル名がなぜかShift-JISのまま入っているので、URLエンコーディングが必要です。適当にスクリプトをでっちあげると以下のようになります。動作には、Rubywgetが必要です。一発ものなので、エラー処理はいい加減です。
ファイルasfhttp.rb

#!/usr/bin/env ruby

require 'open-uri'
require 'uri'

def get_href(uri)
  open(uri, 'r') do |http|
    while line = http.gets
      return $1 if line =~ /HREF="(.*)"/
    end
  end
  raise 'not found HREF.'
end

uri = ARGV.shift
href = get_href(uri)
exec 'wget', "#{File.dirname(uri)}/#{URI.escape(href)}"

実行方法。

$ asfhttp.rb http://uri/to/asx_file.asx

次、MMSの場合。こちらはMMSのプロトコルでアクセスしないといけないので簡単にはいきません。専用のツールを使用します。まず、ASFRecorder download | SourceForge.netからASFRecorderをダウンロードします。続いて、以下のように解凍、コンパイルします。コンパイルにはgccが必要です。

$ unzip path/to/ASFRecorder.zip
$ cd ASFRecorder/source
$ cc asfrecorder.c -o asfrecorder

以下のスクリプトを用意して、
ファイルasfmms.rb

#!/usr/bin/env ruby

require 'open-uri'
require 'uri'

def get_href(uri)
  open(uri, 'r') do |http|
    while line = http.gets
      return $1 if line =~ /HREF="(.*)"/
    end
  end
  raise 'not found HREF.'
end

uri = ARGV.shift
href = get_href(uri)
exec 'asfrecorder', URI.escape(href)

次のように実行します。動作には、Rubyが必要です。

$ asfmms.rb http://uri/to/asx_file.asx

そうそうasfhttp.rb、asfmms.rb、asfrecorderなどの各コマンドには適宜PATHを通してください。そうしないとコマンドが見付からないと怒られます。
参考: http://members.at.infoseek.co.jp/mmaacc/asfrec.html 最近のMACの人はこの辺を見るといいかも知れません。