Class: AppleMusic::Playlist

Inherits:
Resource show all
Defined in:
lib/apple_music/playlist.rb,
lib/apple_music/playlist/attributes.rb,
lib/apple_music/playlist/relationships.rb

Overview

Defined Under Namespace

Classes: Attributes, Relationships

Constant Summary

Constants inherited from Resource

Resource::RESOURCE_MAP

Instance Attribute Summary

Attributes inherited from Resource

#attributes, #href, #id, #relationships, #type

Class Method Summary collapse

Methods inherited from Resource

build, #initialize

Constructor Details

This class inherits a constructor from AppleMusic::Resource

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class AppleMusic::Resource

Class Method Details

.find(id, **options) ⇒ Object

e.g. AppleMusic::Playlist.find(‘pl.acc464c750b94302b8806e5fcbe56e17’) developer.apple.com/documentation/applemusicapi/get_a_catalog_playlist



9
10
11
12
13
# File 'lib/apple_music/playlist.rb', line 9

def find(id, **options)
  storefront = Storefront.lookup(options.delete(:storefront))
  response = AppleMusic.get("catalog/#{storefront}/playlists/#{id}", options)
  Response.new(response.body).data.first
end

.get_collection_by_ids(ids, **options) ⇒ Object

e.g. AppleMusic::Playlist.get_collection_by_ids([‘pl.acc464c750b94302b8806e5fcbe56e17’, ‘pl.97c6f95b0b884bedbcce117f9ea5d54b’]) developer.apple.com/documentation/applemusicapi/get_multiple_catalog_playlists



24
25
26
27
28
29
# File 'lib/apple_music/playlist.rb', line 24

def get_collection_by_ids(ids, **options)
  ids = ids.is_a?(Array) ? ids.join(',') : ids
  storefront = Storefront.lookup(options.delete(:storefront))
  response = AppleMusic.get("catalog/#{storefront}/playlists", options.merge(ids: ids))
  Response.new(response.body).data
end

.get_relationship(id, relationship_type, **options) ⇒ Object

e.g. AppleMusic::Playlist.get_relationship(‘pl.acc464c750b94302b8806e5fcbe56e17’, :curator) developer.apple.com/documentation/applemusicapi/get_a_catalog_playlist_s_relationship_directly_by_name



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

def get_relationship(id, relationship_type, **options)
  storefront = Storefront.lookup(options.delete(:storefront))
  response = AppleMusic.get("catalog/#{storefront}/playlists/#{id}/#{relationship_type}", options)
  Response.new(response.body).data
end

.list(**options) ⇒ Object

e.g. AppleMusic::Playlist.list(ids: [‘pl.acc464c750b94302b8806e5fcbe56e17’, ‘pl.97c6f95b0b884bedbcce117f9ea5d54b’])

Raises:



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

def list(**options)
  raise ParameterMissing, 'required parameter :ids is missing' unless options[:ids]

  get_collection_by_ids(options.delete(:ids), options)
end

e.g. AppleMusic::Playlist.related_curator(‘pl.acc464c750b94302b8806e5fcbe56e17’)



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

def related_curator(id, **options)
  get_relationship(id, :curator, options).first
end

e.g. AppleMusic::Playlist.related_tracks(‘pl.acc464c750b94302b8806e5fcbe56e17’)



45
46
47
# File 'lib/apple_music/playlist.rb', line 45

def related_tracks(id, **options)
  get_relationship(id, :tracks, options)
end

.search(term, **options) ⇒ Object



49
50
51
# File 'lib/apple_music/playlist.rb', line 49

def search(term, **options)
  AppleMusic.search(**options.merge(term: term, types: :playlists)).playlists
end