sounddrop 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/lib/sounddrop/core.rb +54 -0
- data/lib/sounddrop/exceptions.rb +11 -0
- data/lib/sounddrop/track.rb +41 -0
- data/lib/sounddrop/version.rb +3 -0
- data/lib/sounddrop.rb +6 -0
- metadata +121 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MzhkNmQ0OGRkODRhMGNjZDk1ZDQ5Y2Q0NWNjZDJjOTU0ZGNjZjQ0MQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YzA1ZWFjMmY2YWJiODU3ZmVkYjBiZWUzYzAwYWU0NjBhOGNhMjIzNg==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZGQ3ODUwODM5Yjg4MzcwNDA2ZjRiNzdhM2I4ODZiNzE4N2MzY2M5YWMwOWFj
|
10
|
+
N2FiNzdlY2NiYjY4YTJiNzY2MmU3MmU5ZmM0NmI2M2EzNjJhMjYzODE2NTFj
|
11
|
+
N2U1N2Q0ZWJmNGNkZDYwMzBmMTg4OTQ1YTgxZjczZmQ4NTljMTI=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MjRhMDZkOTVhMjJmNjRmN2Q5ZWFjOGM3MTQ3YTlhYmQ4NGMzYTFhYTM2NGQ4
|
14
|
+
NTM4NDFmNmY5MWE1ZTAxZjg4NTI2YTcwN2Q4MWM1MjRkNjg2NjQ1OTg3MDhm
|
15
|
+
ODlhZGQ2YzdlZjJmZjRlMTRlZmJmMWUyZDlkYzVkNmU1OWQxN2Q=
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Sounddrop
|
2
|
+
class Drop
|
3
|
+
|
4
|
+
###########################################################################
|
5
|
+
# Setup #
|
6
|
+
###########################################################################
|
7
|
+
|
8
|
+
attr_reader :client
|
9
|
+
LOG = Logbert[self]
|
10
|
+
|
11
|
+
def initialize(opts={})
|
12
|
+
@CLIENT_ID = opts.fetch(:client_id)
|
13
|
+
@CLIENT_SECRET = opts.fetch(:client_secret)
|
14
|
+
@USERNAME = opts.fetch(:username, nil)
|
15
|
+
@PASSWORD = opts.fetch(:password, nil)
|
16
|
+
@client = get_client
|
17
|
+
end
|
18
|
+
|
19
|
+
# Did the user specify a username?
|
20
|
+
def username?
|
21
|
+
@USERNAME.nil?
|
22
|
+
end
|
23
|
+
|
24
|
+
# Did the user specify a password?
|
25
|
+
def password?
|
26
|
+
@PASSWORD.nil?
|
27
|
+
end
|
28
|
+
|
29
|
+
# Defines a Soundcloud client object
|
30
|
+
def get_client
|
31
|
+
init_opts = {
|
32
|
+
client_id: @CLIENT_ID,
|
33
|
+
client_secret: @CLIENT_SECRET
|
34
|
+
}
|
35
|
+
|
36
|
+
if username? and password?
|
37
|
+
init_opts[:username] = @USERNAME
|
38
|
+
init_opts[:password] = @PASSWORD
|
39
|
+
end
|
40
|
+
|
41
|
+
Soundcloud.new(init_opts)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Returns a Track object with all sorts of useful data with useful getters.
|
45
|
+
# The Track object is where most of the data retrieval occurs.
|
46
|
+
def get_track(url)
|
47
|
+
sc_track = client.get('/resolve', url: url)
|
48
|
+
Sounddrop::Track.new(sc_track, client)
|
49
|
+
end
|
50
|
+
|
51
|
+
private :get_client, :username?, :password?
|
52
|
+
|
53
|
+
end # class Drop
|
54
|
+
end # module Sounddrop
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Sounddrop
|
2
|
+
class Track
|
3
|
+
|
4
|
+
###########################################################################
|
5
|
+
# Setup #
|
6
|
+
###########################################################################
|
7
|
+
|
8
|
+
LOG = Logbert[self]
|
9
|
+
|
10
|
+
def initialize(track_hash, client)
|
11
|
+
@TRACK = track_hash
|
12
|
+
@CLIENT = client
|
13
|
+
end
|
14
|
+
|
15
|
+
# Track id
|
16
|
+
def id
|
17
|
+
@TRACK.id
|
18
|
+
end
|
19
|
+
|
20
|
+
# Track title
|
21
|
+
def title
|
22
|
+
@TRACK.title
|
23
|
+
end
|
24
|
+
|
25
|
+
# Track genre
|
26
|
+
def genre
|
27
|
+
@TRACK.genre
|
28
|
+
end
|
29
|
+
|
30
|
+
# Track media url
|
31
|
+
def media_url
|
32
|
+
begin
|
33
|
+
r = HTTParty.get("https://api.soundcloud.com/i1/tracks/#{id}/streams?client_id=#{@CLIENT.client_id}")
|
34
|
+
r['http_mp3_128_url']
|
35
|
+
rescue Exception => ex
|
36
|
+
raise Sounddrop::Exception::FailedRequest.new(ex)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end # class Track
|
41
|
+
end # module Sounddrop
|
data/lib/sounddrop.rb
ADDED
metadata
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sounddrop
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alex Bezobchuk
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-12-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: soundcloud
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: logbert
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.7'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.7'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bump
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.5'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.5'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.10'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.10'
|
83
|
+
description: A gem that provides audio and track information about a soundcloud song
|
84
|
+
given a URL
|
85
|
+
email:
|
86
|
+
- abezobchuk@gmail.com
|
87
|
+
executables: []
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- lib/sounddrop.rb
|
92
|
+
- lib/sounddrop/core.rb
|
93
|
+
- lib/sounddrop/exceptions.rb
|
94
|
+
- lib/sounddrop/track.rb
|
95
|
+
- lib/sounddrop/version.rb
|
96
|
+
homepage: https://github.com/Alexanderbez/sounddrop
|
97
|
+
licenses:
|
98
|
+
- MIT
|
99
|
+
metadata: {}
|
100
|
+
post_install_message:
|
101
|
+
rdoc_options: []
|
102
|
+
require_paths:
|
103
|
+
- lib
|
104
|
+
- config
|
105
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - ! '>='
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '0'
|
115
|
+
requirements: []
|
116
|
+
rubyforge_project:
|
117
|
+
rubygems_version: 2.4.2
|
118
|
+
signing_key:
|
119
|
+
specification_version: 4
|
120
|
+
summary: Provides audio and track information about a soundcloud song given a URL
|
121
|
+
test_files: []
|