class Ruboty::Niconico::Actions::Niconico

Constants

NICOVIDEO_SEARCH_API_URL

Public Class Methods

new(query, mode) click to toggle source
# File lib/ruboty/niconico/actions/niconico.rb, line 7
def initialize(query, mode)
  @query = query
  @mode = mode
end

Public Instance Methods

post() click to toggle source
# File lib/ruboty/niconico/actions/niconico.rb, line 12
def post
  case @mode
  when :top
    video_url(response.first)
  when :rand
    video_url(response.sample)
  end
end

Private Instance Methods

api_url() click to toggle source
# File lib/ruboty/niconico/actions/niconico.rb, line 48
def api_url
  NICOVIDEO_SEARCH_API_URL
end
connection() click to toggle source
# File lib/ruboty/niconico/actions/niconico.rb, line 40
def connection
  Faraday.new do |connection|
    connection.request  :url_encoded
    connection.adapter  :net_http
    connection.response :json
  end
end
params() click to toggle source
# File lib/ruboty/niconico/actions/niconico.rb, line 52
def params
  {
    query: @query,
    service: ["video"],
    search: ["title"],
    join: ["cmsid"],
    sort_by: "view_counter",
    size: 100,
    issuer: "ruboty-niconico"
  }
end
response() click to toggle source
# File lib/ruboty/niconico/actions/niconico.rb, line 27
def response
  uri = URI.parse(api_url)
  response = Net::HTTP.start(uri.host) do |http|
    http.open_timeout = 5
    http.read_timeout = 10
    http.post(uri.path, params.to_json)
  end
  response.body.scan(/\{"_rowid":.+?,"cmsid":".+?"\}/).map do | value |
    /\"cmsid\":\"(?<cmsid>.+)\"/ =~ value
    cmsid
  end
end
video_url(cmsid) click to toggle source
# File lib/ruboty/niconico/actions/niconico.rb, line 23
def video_url(cmsid)
  cmsid ? 'http://www.nicovideo.jp/watch/%s' % cmsid : nil
end