Class: Niconico::Live::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/niconico/live/client.rb,
lib/niconico/live/client/search_result.rb,
lib/niconico/live/client/search_filters.rb

Defined Under Namespace

Modules: SearchFilters Classes: SearchResult

Instance Method Summary collapse

Constructor Details

#initialize(agent) ⇒ Client

Returns a new instance of Client.



12
13
14
15
# File 'lib/niconico/live/client.rb', line 12

def initialize(agent)
  @agent = agent
  @api = API.new(agent)
end

Instance Method Details

#remove_timeshifts(ids) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/niconico/live/client.rb', line 17

def remove_timeshifts(ids)
  post_body = "delete=timeshift&confirm=#{Util::fetch_token(@agent)}"
  if ids.size == 0
    return
  end
  ids.each do |id|
    id = Util::normalize_id(id, with_lv: false)
    # mechanize doesn't support multiple values for the same key in query.
    post_body += "&vid%5B%5D=#{id}"
  end
  @agent.post(
    'http://live.nicovideo.jp/my.php',
    post_body,
    'Content-Type' => 'application/x-www-form-urlencoded'
  )
end

#search(keyword, filters = []) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/niconico/live/client.rb', line 34

def search(keyword, filters = [])
  filter = filters.join('+')
  page = @agent.get(
    'http://live.nicovideo.jp/search',
    track: '',
    sort: 'recent',
    date: '',
    kind: '',
    keyword: keyword,
    filter: filter
  )
  results_dom = page.at('.result_list')
  items = results_dom.css('.result_item')
  search_results = items.map do |item|
    title_dom = item.at('.search_stream_title a')
    next nil unless title_dom
    id = title_dom.attr(:href).scan(/lv[\d]+/).first
    title = title_dom.text.strip
    description = item.at('.search_stream_description').text.strip
    SearchResult.new(id, title, description)
  end
  search_results.compact
end