module VkMusic::Utility::AudiosLoader

Load user or group audios

Public Class Methods

call(agent, client_id, owner_id, up_to) click to toggle source

@param agent [Mechanize] @param client_id [Integer] @param owner_id [Integer] @param up_to [Integer] @return [Playlist?]

# File lib/vk_music/utility/audios_loader.rb, line 13
def call(agent, client_id, owner_id, up_to)
  page = Request::PlaylistSection.new(owner_id, -1, '', 0, client_id).call(agent)
  audios = page.audios
  return if audios.nil? || audios.empty?

  up_to = page.real_size if up_to > page.real_size

  load_till_up_to(audios, agent, client_id, owner_id, up_to)

  Playlist.new(audios, id: -1, owner_id: owner_id, access_hash: '',
                       title: page.title, subtitle: page.subtitle, real_size: page.real_size)
end

Private Class Methods

load_till_up_to(audios, agent, client_id, owner_id, up_to) click to toggle source
# File lib/vk_music/utility/audios_loader.rb, line 28
def load_till_up_to(audios, agent, client_id, owner_id, up_to)
  return audios.slice!(up_to..) if up_to <= audios.size

  rest = PlaylistSectionLoader.call(agent, client_id, owner_id, -1, '', audios.size, up_to - audios.size)
  audios.concat(rest)
end