Class: Purdie::Services::SoundCloud
- Inherits:
-
Object
- Object
- Purdie::Services::SoundCloud
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
.matcher ⇒ Object
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
#client ⇒ Object
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
|