Class: Hypem::Playlist

Inherits:
Object
  • Object
show all
Defined in:
lib/hypem/playlist.rb

Constant Summary collapse

[%s(3day),:lastweek,:noremix,:artists,:twitter]
GENERIC_METHODS =
[:blog, :search, :artist, :feed, :loved, :obsessed]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type, arg, page = nil) ⇒ Playlist

Returns a new instance of Playlist.



7
8
9
10
11
12
13
# File 'lib/hypem/playlist.rb', line 7

def initialize(type,arg,page=nil)
  page = 1 if page.nil?
  @type = type
  @arg = arg
  @page = page
  @path = "/playlist/#{@type}/#{@arg}"
end

Instance Attribute Details

#extendedObject (readonly)

Returns the value of attribute extended.



5
6
7
# File 'lib/hypem/playlist.rb', line 5

def extended
  @extended
end

#pathObject

Returns the value of attribute path.



4
5
6
# File 'lib/hypem/playlist.rb', line 4

def path
  @path
end

#tracksObject

Returns the value of attribute tracks.



4
5
6
# File 'lib/hypem/playlist.rb', line 4

def tracks
  @tracks
end

Class Method Details

.friends_favorites(user, page = nil) ⇒ Object



54
55
56
# File 'lib/hypem/playlist.rb', line 54

def self.friends_favorites(user,page=nil)
  Playlist.new(:people,user,page)
end

.friends_history(user, page = nil) ⇒ Object



50
51
52
# File 'lib/hypem/playlist.rb', line 50

def self.friends_history(user,page=nil)
  Playlist.new(:people_history,user,page)
end

.latest(filter = :all, page = nil) ⇒ Object

Raises:

  • (ArgumentError)


39
40
41
42
# File 'lib/hypem/playlist.rb', line 39

def self.latest(filter=:all,page=nil)
  raise ArgumentError unless [:all, :noremix, :remix, :fresh].include? filter
  Playlist.new(:latest,filter,page).get
end

.new_from_tracks(tracks) ⇒ Object



34
35
36
37
# File 'lib/hypem/playlist.rb', line 34

def self.new_from_tracks(tracks)
  track_params = tracks.map(&:id).join(',')
  Playlist.new('set',track_params).tap { |p| p.tracks = tracks }
end

Raises:

  • (ArgumentError)


44
45
46
47
48
# File 'lib/hypem/playlist.rb', line 44

def self.popular(arg=POPULAR_ARGS.first,page=nil)
  arg = arg.to_sym if arg.is_a? String
  raise ArgumentError unless POPULAR_ARGS.include?(arg)
  Playlist.new(:popular,arg,page).tap(&:get)
end

.tags(list, page) ⇒ Object



58
59
60
61
# File 'lib/hypem/playlist.rb', line 58

def self.tags(list,page)
  list = list.join(',') if list.is_a? Array
  Playlist.new(:tags,list,page)
end

Instance Method Details

#getObject



15
16
17
18
19
20
# File 'lib/hypem/playlist.rb', line 15

def get
  response = Request.get_data(path)
  @tracks ||= []
  response.each{|v| tracks << Track.new(v)}
  self
end

#next_pageObject



22
23
24
# File 'lib/hypem/playlist.rb', line 22

def next_page
  Playlist.new(@type,@arg,@page+1).get
end

#page(num) ⇒ Object



30
31
32
# File 'lib/hypem/playlist.rb', line 30

def page(num)
  Playlist.new(@type,@arg,num).get
end

#prev_pageObject



26
27
28
# File 'lib/hypem/playlist.rb', line 26

def prev_page
  Playlist.new(@type,@arg,@page-1).get
end