class Purdie::Services::SoundCloud
Public Class Methods
matcher()
click to toggle source
# File lib/purdie/services/soundcloud.rb, line 59 def self.matcher 'soundcloud.com' end
resolve(url)
click to toggle source
# File lib/purdie/services/soundcloud.rb, line 51 def self.resolve url return [url] unless url =~ /\/sets\// client = ::SoundCloud.new client_id: ENV['SOUNDCLOUD_CLIENT_ID'] client.get('/resolve', url: url).tracks. map { |track| track['permalink_url'] } end
Public Instance Methods
client()
click to toggle source
# File lib/purdie/services/soundcloud.rb, line 8 def client @client ||= ::SoundCloud.new client_id: ENV['SOUNDCLOUD_CLIENT_ID'] end
distill(url)
click to toggle source
# File lib/purdie/services/soundcloud.rb, line 12 def distill url begin track = client.get '/resolve', url: url rescue ArgumentError => ae raise CredentialsException.new self, 'missing' rescue ::SoundCloud::ResponseError => re raise CredentialsException.new self, 'duff' end results = {} results['title'] = track['title'] results['id'] = track['id'] results['url'] = track['permalink_url'] begin description = YAML.load track['description'] if description.class == Hash description.keys.each do |k| results[k] = description[k] end else results['location'] = track['description'] end rescue TypeError => te raise MetadataException.new self, "'#{url}' does not have a location" if te.message == "no implicit conversion of nil into String" end begin results['date'] = "%4d-%02d-%02d" % [ track['release_year'], track['release_month'], track['release_day'] ] rescue TypeError => te raise MetadataException.new self, "'#{url}' does not have a release date" if te.message == "can't convert nil into Integer" end results.attach_license self, track['license'] results end