ネットラジオ取得スクリプト

いつも聞いてるネットラジオを取得するスクリプトbashからrubyに書き換えてみた。

#!/usr/bin/ruby -Ku

require 'open-uri'
require 'hpricot'
require "rexml/document"

downDir = "ダウンロードするディレクトリ"

def get_mms_uri()
  html = Hpricot(open("対象のURI").read)
  array = Array.new

  (html/:a).each do |link|
    URI.extract(link[:href]).grep(/asx/) do |asx|
      array.push(asx)
    end
  end
  
  asx = nil

  open(array.shift) do |xmlfile|
    asx = REXML::Document.new(xmlfile)
  end

  return asx.elements['/ASX/ENTRY/REF'].to_s.slice(/mms:..*\.wm[av]/)
end

def get_mms(uri, dir)
  filename = uri.split(/\//).pop
  if File.exist?("#{dir}/#{filename}") then
    sleep(60 * 30) # 60秒 x 30 = 30 min
    puts "sleep 30 min"
    get_mms(uri, dir)
  else
    `mimms -q "#{uri}"  "#{dir}/#{filename}"`
  end
end

get_mms(get_mms_uri,downDir)