class VkMusic::WebParser::Search

Audio search page parser

Public Instance Methods

audios() click to toggle source

Audios found @return [Array<Audio>]

# File lib/vk_music/web_parser/search.rb, line 9
def audios
  title_index = search_result_blocks.find_index { |node| node.inner_text.include?('Все аудиозаписи') }
  return [] if title_index.nil?

  block = search_result_blocks[title_index + 1]

  Utility::AudioItemsParser.call(block, @client_id)
end
audios_all_path() click to toggle source

Path to page with all results @return [String?]

# File lib/vk_music/web_parser/search.rb, line 20
def audios_all_path
  title = search_result_blocks.find { |node| node.inner_text.include?('Все аудиозаписи') }
  return if title.nil?

  title.at_css('a').attribute('href').value
end
playlists() click to toggle source

Playlists found @return [Array<Playlist>]

# File lib/vk_music/web_parser/search.rb, line 29
def playlists
  title_index = search_result_blocks.find_index { |node| node.inner_text.include?('Альбомы') }
  return [] if title_index.nil?

  block = search_result_blocks[title_index + 1]

  block.css('.audioPlaylists__item').map do |elem|
    Utility::PlaylistNodeParser.call(elem)
  end
end
playlists_all_path() click to toggle source

Path to page with all results @return [String?]

# File lib/vk_music/web_parser/search.rb, line 42
def playlists_all_path
  title = search_result_blocks.find { |node| node.inner_text.include?('Альбомы') }
  return if title.nil?

  title.at_css('a').attribute('href').value
end

Private Instance Methods

search_result_blocks() click to toggle source
# File lib/vk_music/web_parser/search.rb, line 51
def search_result_blocks
  @search_result_blocks ||= node.css('.AudioBlock').children
end