class Ruboty::Youtube::Client

Constants

YOUTUBE_URL

Public Class Methods

new(target, mode, query) click to toggle source
# File lib/ruboty/youtube/client.rb, line 11
def initialize(target, mode, query)
  @conn = Faraday.new(url: YOUTUBE_URL, ssl: { verify: false }) do |faraday|
    faraday.request :url_encoded
    faraday.adapter Faraday.default_adapter
  end
  @target = target
  @mode = mode
  @query = query
end

Public Instance Methods

Private Instance Methods

params() click to toggle source
# File lib/ruboty/youtube/client.rb, line 46
def params
  default_params = {
    search_query: @query
  }

  append_params =
    case @target
    when :video
      {
        filters: 'video'
      }
    when :pl
      {
        filters: 'playlist'
      }
    end

  default_params.merge(append_params)
end
parse_response(response) click to toggle source
# File lib/ruboty/youtube/client.rb, line 32
def parse_response(response)
  video_links = Nokogiri::HTML(response).css('.yt-lockup-thumbnail a')
  result = video_links.each_with_object([]) {|video_link, array|
    array << video_link.attribute('href').content
  }.select {|link| link.start_with?('/watch') }

  case @mode
  when :top
    YOUTUBE_URL + result.first
  when :rand
    YOUTUBE_URL + result.sample
  end
end