Class: AppleMusic::MusicVideo

Inherits:
Resource
  • Object
show all
Defined in:
lib/apple_music/music_video.rb,
lib/apple_music/music_video/attributes.rb,
lib/apple_music/music_video/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



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

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

.get_collection_by_ids(ids, **options) ⇒ Object

e.g. AppleMusic::MusicVideo.get_collection_by_ids([401135199, 401147268]) developer.apple.com/documentation/applemusicapi/get_multiple_catalog_music_videos_by_id



29
30
31
32
33
34
# File 'lib/apple_music/music_video.rb', line 29

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}/music-videos", options.merge(ids: ids))
  Response.new(response.body).data
end

.get_collection_by_isrc(isrc, **options) ⇒ Object

e.g. AppleMusic::MusicVideo.get_collection_by_isrc(‘GBDCE0900012’) developer.apple.com/documentation/applemusicapi/get_multiple_catalog_music_videos_by_isrc



38
39
40
41
42
43
# File 'lib/apple_music/music_video.rb', line 38

def get_collection_by_isrc(isrc, **options)
  isrc = isrc.is_a?(Array) ? isrc.join(',') : isrc
  storefront = Storefront.lookup(options.delete(:storefront))
  response = AppleMusic.get("catalog/#{storefront}/music-videos", options.merge('filter[isrc]': isrc))
  Response.new(response.body).data
end

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



47
48
49
50
51
# File 'lib/apple_music/music_video.rb', line 47

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

.list(**options) ⇒ Object

e.g. AppleMusic::MusicVideo.list(ids: [401135199, 401147268]) e.g. AppleMusic::MusicVideo.list(isrc: ‘GBDCE0900012’)



17
18
19
20
21
22
23
24
25
# File 'lib/apple_music/music_video.rb', line 17

def list(**options)
  if options[:ids]
    get_collection_by_ids(options.delete(:ids), options)
  elsif options[:isrc]
    get_collection_by_isrc(options.delete(:isrc), options)
  else
    raise ParameterMissing, 'required parameter :ids or :isrc is missing'
  end
end

e.g. AppleMusic::MusicVideo.related_albums(401135199)



54
55
56
# File 'lib/apple_music/music_video.rb', line 54

def related_albums(id, **options)
  get_relationship(id, :albums, options)
end

e.g. AppleMusic::MusicVideo.related_artists(401135199)



59
60
61
# File 'lib/apple_music/music_video.rb', line 59

def related_artists(id, **options)
  get_relationship(id, :artists, options)
end

e.g. AppleMusic::MusicVideo.related_genres(401135199)



64
65
66
# File 'lib/apple_music/music_video.rb', line 64

def related_genres(id, **options)
  get_relationship(id, :genres, options)
end

.search(term, **options) ⇒ Object



68
69
70
# File 'lib/apple_music/music_video.rb', line 68

def search(term, **options)
  AppleMusic.search(**options.merge(term: term, types: 'music-videos')).music_videos
end