class Niconize::Program
Attributes
lv[R]
vid[R]
Public Class Methods
new(client, lv)
click to toggle source
# File lib/niconize/program.rb, line 7 def initialize(client, lv) @client = client @agent = client.agent @lv = lv @vid = lv.sub(/^lv/, '') end
Public Instance Methods
reserve()
click to toggle source
# File lib/niconize/program.rb, line 14 def reserve raise TimeshiftError, 'This nicolive is already reserved' if reserved? data = { 'mode' => 'regist', 'vid' => vid, 'token' => ulck, '_' => '' } @agent.post(Niconize::Client::URL[:reserve], data) end
Private Instance Methods
live_page()
click to toggle source
# File lib/niconize/program.rb, line 33 def live_page @live_page ||= @agent.get("http://live.nicovideo.jp/watch/#{lv}") end
reserved?()
click to toggle source
# File lib/niconize/program.rb, line 29 def reserved? !!@client.reserved_programs.map { |program| program.vid }.include?(vid) end
token()
click to toggle source
# File lib/niconize/program.rb, line 37 def token live_page.search('a.watching_reservation')[0]['onclick'].scan(/'(.*?)'/)[1][0] end
ulck()
click to toggle source
# File lib/niconize/program.rb, line 41 def ulck query = { 'mode' => 'watch_num', 'vid' => vid, 'token' => token } response = @agent.get(Niconize::Client::URL[:reserve], query) raise TimeshiftError, 'It is the limit of the number of your reservation' unless response.at('div.reserve') response.at('div.reserve').inner_html.scan(/ulck_[0-9]+/)[0] end