class Pandora::Song
Constants
- ALL_AUDIO_FORMATS
- DEFAULT_AUDIO_FORMATS
Attributes
album[R]
album_art_url[R]
album_explorer_url[R]
album_url[R]
allow_feedback[R]
amazon_album_asin[R]
amazon_album_digital_asin[R]
amazon_album_url[R]
amazon_song_digital_asin[R]
artist[R]
artist_explorer_url[R]
artist_url[R]
audio_url[R]
audio_urls[R]
gain[R]
itunes_song_url[R]
rating[R]
song_explorer_url[R]
title[R]
token[R]
url[R]
Public Class Methods
new(station, data, audio_formats)
click to toggle source
# File lib/pandora/song.rb, line 26 def initialize(station, data, audio_formats) @station = station load_from_data(data, audio_formats) end
Public Instance Methods
id()
click to toggle source
# File lib/pandora/song.rb, line 31 def id load_explorer_data unless @id @id end
Private Instance Methods
load_explorer_data()
click to toggle source
Unfortunately the Tuner API track JSON doesn’t include the musicId, a track identifier that’s constant among different user sessions. However, we can fetch it via the Song’s Explorer XML URL.
# File lib/pandora/song.rb, line 74 def load_explorer_data document = Nokogiri::XML(Faraday.get(@song_explorer_url).body) @id = document.search('songExplorer').first['musicId'] end
load_from_data(data, audio_formats)
click to toggle source
# File lib/pandora/song.rb, line 39 def load_from_data(data, audio_formats) @title = data['songName'] @token = data['trackToken'] @artist = data['artistName'] @album = data['albumName'] @album_art_url = data['albumArtUrl'] @rating = data['songRating'] @gain = data['trackGain'] @allow_feedback = data['allowFeedback'] @url = data['songDetailUrl'] @album_url = data['albumDetailUrl'] @artist_url = data['artistDetailUrl'] @amazon_album_asin = data['amazonAlbumAsin'] @amazon_album_digital_asin = data['amazonAlbumDigitalAsin'] @amazon_song_digital_asin = data['amazonSongDigitalAsin'] @amazon_album_url = data['amazonAlbumUrl'] @itunes_song_url = data['itunesSongUrl'] @song_explorer_url = data['songExplorerUrl'] @album_explorer_url = data['albumExplorerUrl'] @artist_explorer_url = data['artistDetailUrl'] @audio_url = data['audioUrl'] @audio_urls = if (additional_audio_urls = data['additionalAudioUrl']) Hash[audio_formats.zip(additional_audio_urls)] else {} end end