Sha256: 6b387e699e9141ab1bd688d43d2abc2b4079179e9c22996e66958089248aaae7
Contents?: true
Size: 1.21 KB
Versions: 3
Compression:
Stored size: 1.21 KB
Contents
# encoding: utf-8 require 'webradio' require 'nokogiri' class Onsen < WebRadio def initialize(params, options) super @cover = "//*[@id='newProgramWrap']//img[1]/@src" unless @cover end def download onsen_download(@label, @url.scan(%r|/([^/]*)/$|).flatten.first) end def dump tag = Pathname(@url).basename.to_s.gsub(%r|[-/]|, '_') html = Nokogiri(URI.open(@url, &:read)) title = html.css('#outLineWrap h1').text return { tag => { 'desc' => title, 'url' => @url, 'label' => tag } } end private def onsen_download(name, program_id) html = Nokogiri(URI.open('http://onsen.ag/', 'User-Agent' => 'iPhone', &:read)) begin serial = html.css("##{program_id}").text.scan(/#(\d+)/).flatten.first mp3_url = html.css('form[target=_self]').select {|form| form.attr('action') =~ %r|/#{program_id}\w+\.mp[34]| }.first.attr('action') rescue NoMethodError raise NotFoundError.new("no radio program in #{program_id}.") end src_file = "#{name}##{serial}#{mp3_url.scan(/\.mp[34]$/).first}" mp3_file = "#{name}##{serial}.mp3" mp3nize(src_file, mp3_file, false) do open(src_file, 'wb:ASCII-8BIT') do |mp3| mp3.write URI.open(mp3_url, 'rb:ASCII-8BIT', &:read) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rget-4.9.2 | lib/onsen.rb |
rget-4.9.1 | lib/onsen.rb |
rget-4.9.0 | lib/onsen.rb |