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