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
search()
click to toggle source
# File lib/ruboty/youtube/client.rb, line 21 def search response = @conn.get {|req| req.url '/results', params }.body parse_response(response) rescue nil end
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