Sha256: d3e92d1bde63cd106dd5c7b1bdf18833d47e4a8a81576a6a571500c8ce1b210b

Contents?: true

Size: 999 Bytes

Versions: 3

Compression:

Stored size: 999 Bytes

Contents

require 'mechanize'

module RMD
  module Base
    class Playlist
      attr_reader :errors, :link, :songs

      def initialize(link)
        @link = link
        @errors = []
        @songs = []
      end

      def success?
        !!songs && songs.count > 0
      end

      def fetch; end

      private

      def agent
        agent ||= Mechanize.new
      end

      def page
        @page ||= agent.get(link)
      end

      def song_elements
        @song_element ||= page.search(song_css)
      end

      def calculate_progress
        if song_elements.count > 0
          progress_bar = ProgressBar.create(
            starting_at: 0,
            total: song_elements.count,
            format: '%c / %C Songs %B %p%%'
          )

          song_elements.each do |element|
            yield element.attr('href')
            progress_bar.increment
          end
        else
          @errors << 'Can not get song lists from this playlist page.'
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rmd-0.1.2 lib/rmd/base/playlist.rb
rmd-0.1.1 lib/rmd/base/playlist.rb
rmd-0.1.0 lib/rmd/base/playlist.rb