Class: Purdie::Services::SoundCloud

Inherits:
Object
  • Object
show all
Includes:
Ingester
Defined in:
lib/purdie/services/soundcloud.rb

Instance Attribute Summary

Attributes included from Ingester

#config, #matcher, #subconfig

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Ingester

#[], #configure, #each, included, #ingest, #initialize, #to_yaml, #write

Class Method Details

.matcherObject



41
42
43
# File 'lib/purdie/services/soundcloud.rb', line 41

def self.matcher
  'soundcloud.com'
end

.resolve(url) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/purdie/services/soundcloud.rb', line 33

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

Instance Method Details

#clientObject



9
10
11
# File 'lib/purdie/services/soundcloud.rb', line 9

def client
  @client ||= ::SoundCloud.new client_id: ENV['SOUNDCLOUD_CLIENT_ID']
end

#distill(url) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/purdie/services/soundcloud.rb', line 13

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['location'] = track['description']
  results['date'] = "%4d-%02d-%02d" % [ track['release_year'], track['release_month'], track['release_day'] ]

  results.attach_license self, track['license']

  results
end