lib/nanoc/data_sources/deprecated/last_fm.rb in nanoc-3.6.7 vs lib/nanoc/data_sources/deprecated/last_fm.rb in nanoc-3.6.8

- old
+ new

@@ -9,44 +9,46 @@ @items ||= begin require 'json' require 'uri' # Check configuration - if self.config[:username].nil? - raise RuntimeError, "LastFM data source requires a username in the configuration" + if config[:username].nil? + raise 'LastFM data source requires a username in the configuration' end - if self.config[:api_key].nil? - raise RuntimeError, "LastFM data source requires an API key in the configuration" + if config[:api_key].nil? + raise 'LastFM data source requires an API key in the configuration' end # Get data @http_client ||= Nanoc::Extra::CHiCk::Client.new - status, headers, data = *@http_client.get( + _status, _headers, data = *@http_client.get( 'http://ws.audioscrobbler.com/2.0/' + '?method=user.getRecentTracks' + '&format=json' + - '&user=' + URI.escape(self.config[:username]) + - '&api_key=' + URI.escape(self.config[:api_key]) + '&user=' + URI.escape(config[:username]) + + '&api_key=' + URI.escape(config[:api_key]) ) # Parse as JSON parsed_data = JSON.parse(data) raw_items = parsed_data['recenttracks']['track'] # Convert to items raw_items.enum_with_index.map do |raw_item, i| # Get artist data - artist_status, artist_headers, artist_data = *@http_client.get( + _artist_status, _artist_headers, artist_data = *@http_client.get( 'http://ws.audioscrobbler.com/2.0/' + '?method=artist.getInfo' + '&format=json' + ( - raw_item['artist']['mbid'].empty? ? - '&artist=' + URI.escape(raw_item['artist']['#text']) : - '&mbid=' + URI.escape(raw_item['artist']['mbid']) + if raw_item['artist']['mbid'].empty? + '&artist=' + URI.escape(raw_item['artist']['#text']) + else + '&mbid=' + URI.escape(raw_item['artist']['mbid']) + end ) + - '&api_key=' + URI.escape(self.config[:api_key]) + '&api_key=' + URI.escape(config[:api_key]) ) # Parse as JSON parsed_artist_data = JSON.parse(artist_data) raw_artist_info = parsed_artist_data['artist'] @@ -57,13 +59,13 @@ # Handle track dates if raw_item['@attr'] && raw_item['@attr']['nowplaying'] == 'true' track_played_at = Time.now now_playing = true else - played_at = Time.parse(raw_item['date']['#text']) + track_played_at = Time.parse(raw_item['date']['#text']) now_playing = false end - + attributes = { :name => raw_item['name'], :artist => { :name => raw_artist_info['name'], :url => raw_artist_info['url']