class YoutubeParser::Channels::VideosSection
Public Instance Methods
info()
click to toggle source
# File lib/youtube_parser/channels/videos_section.rb, line 8 def info { video_ids: video_ids, playlist_id: playlist_id } end
Private Instance Methods
json()
click to toggle source
# File lib/youtube_parser/channels/videos_section.rb, line 48 def json @json ||= client.get("#{options.channel_url}/videos") end
playlist_id()
click to toggle source
# File lib/youtube_parser/channels/videos_section.rb, line 33 def playlist_id return @playlist_id if @playlist_id section = sections.detect { |s| s.dig(*keys.playlist_id) } @playlist_id = section&.dig(*keys.playlist_id) end
scrape_video_ids(videos)
click to toggle source
# File lib/youtube_parser/channels/videos_section.rb, line 40 def scrape_video_ids(videos) videos.map { |video| video.dig(*keys.video_ids) }.compact end
sections()
click to toggle source
# File lib/youtube_parser/channels/videos_section.rb, line 44 def sections @sections ||= json.dig(*keys.section_tabs) || [] end
video_ids()
click to toggle source
# File lib/youtube_parser/channels/videos_section.rb, line 17 def video_ids return @video_ids if @video_ids&.any? sections.each do |section| videos = section.dig(*keys.video_section_tabs) || section.dig(*keys.second_video_section) next unless videos.is_a? Array @video_ids = scrape_video_ids videos return @video_ids if @video_ids.any? end [] end