Class: Spotify::SDK::Item

Inherits:
Model
  • Object
show all
Defined in:
lib/spotify/sdk/item.rb

Instance Attribute Summary

Attributes inherited from Model

#parent

Instance Method Summary collapse

Methods inherited from Model

alias_attribute, hash_selector, #to_h, #to_json

Constructor Details

#initialize(payload, parent) ⇒ Item

Let’s transform the item object into better for us. Before: { track: …, played_at: …, context: … } After: { track_properties…, played_at: …, context: … }

:nodoc:



12
13
14
15
16
# File 'lib/spotify/sdk/item.rb', line 12

def initialize(payload, parent)
  track      = payload.delete(:track) || payload.delete(:item)
  properties = payload.except(:parent, :device, :repeat_state, :shuffle_state)
  super(track.merge(properties: properties), parent)
end

Instance Method Details

#albumSpotify::SDK::Album

Get the album for this item.

Examples:

@sdk.connect.playback.item.album

Returns:



26
27
28
# File 'lib/spotify/sdk/item.rb', line 26

def album
  Spotify::SDK::Album.new(super, parent)
end

#artistSpotify::SDK::Artist

Get the primary artist/creator for this item.

Examples:

@sdk.connect.playback.item.artist

Returns:



52
53
54
# File 'lib/spotify/sdk/item.rb', line 52

def artist
  artists.first
end

#artistsArray

Get the artists/creators for this item.

Examples:

@sdk.connect.playback.item.artists

Returns:

  • (Array)

    artists A list of artists, wrapped in Spotify::SDK::Artist



38
39
40
41
42
# File 'lib/spotify/sdk/item.rb', line 38

def artists
  super.map do |artist|
    Spotify::SDK::Artist.new(artist, parent)
  end
end

#contextHash

Get the context.

Examples:

@sdk.connect.playback.item.context
@sdk.me.history[0].context

Returns:

  • (Hash)

    context Information about the user’s context.



65
# File 'lib/spotify/sdk/item.rb', line 65

alias_attribute :context, "properties.context"

#durationInteger

Get the duration. Alias to self.duration_ms

Examples:

@sdk.connect.playback.item.duration # => 10331

Returns:

  • (Integer)

    duration_ms In milliseconds, how long the item is.



76
# File 'lib/spotify/sdk/item.rb', line 76

alias_attribute :duration, :duration_ms

#explicit?TrueClass, FalseClass

Is this track explicit? Alias to self.explicit

Examples:

@sdk.connect.playback.item.explicit? # => true

Returns:

  • (TrueClass, FalseClass)

    is_explicit Returns true if item contains explicit content.



87
# File 'lib/spotify/sdk/item.rb', line 87

alias_attribute :explicit?, :explicit

#isrcString

Get the ISRC for this track.

Examples:

@sdk.connect.playback.item.isrc # => "USUM00000000"

Returns:

  • (String)

    isrc The ISRC string for this track.



154
# File 'lib/spotify/sdk/item.rb', line 154

alias_attribute :isrc, "external_ids.isrc"

#local?TrueClass, FalseClass

Is this a local track, not a Spotify track? Alias to self.is_local

Examples:

@sdk.connect.playback.item.local? # => false

Returns:

  • (TrueClass, FalseClass)

    is_local Returns true if item is local to the user.



98
# File 'lib/spotify/sdk/item.rb', line 98

alias_attribute :local?, :is_local

#playable?TrueClass, FalseClass

Is this a playable track? Alias to self.is_playable

Examples:

@sdk.connect.playback.item.playable? # => false

Returns:

  • (TrueClass, FalseClass)

    is_playable Returns true if item is playable.



109
# File 'lib/spotify/sdk/item.rb', line 109

alias_attribute :playable?, :is_playable

#spotify_uriString

Get the Spotify URI for this item. Alias to self.uri

Examples:

@sdk.connect.playback.item.spotify_uri # => "spotify:track:..."

Returns:

  • (String)

    spotify_uri The direct URI to this Spotify resource.



133
# File 'lib/spotify/sdk/item.rb', line 133

alias_attribute :spotify_uri, :uri

#spotify_urlString

Get the Spotify HTTP URL for this item. Alias to self.external_urls

Examples:

@sdk.connect.playback.item.spotify_url # => "https://open.spotify.com/..."

Returns:

  • (String)

    spotify_url The direct HTTP URL to this Spotify resource.



144
# File 'lib/spotify/sdk/item.rb', line 144

alias_attribute :spotify_url, "external_urls.spotify"

#track?TrueClass, FalseClass

Is this a track? Alias to self.type == “track”

Examples:

@sdk.connect.playback.item.track? # => true

Returns:

  • (TrueClass, FalseClass)

    is_track Returns true if item is an music track.



120
121
122
# File 'lib/spotify/sdk/item.rb', line 120

def track?
  type == "track"
end