sounddrop 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,11 @@
1
+ module Sounddrop::Exception
2
+
3
+ class FailedRequest < StandardError
4
+ attr_reader :message
5
+
6
+ def initialize(message)
7
+ @message = message
8
+ end
9
+ end
10
+
11
+ end # module Sounddrop::Exception
@@ -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
@@ -0,0 +1,3 @@
1
+ module Sounddrop
2
+ VERSION = "0.0.1"
3
+ end
data/lib/sounddrop.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'soundcloud'
2
+ require 'logbert'
3
+ require 'sounddrop/version'
4
+ require 'sounddrop/exceptions'
5
+ require 'sounddrop/track'
6
+ require 'sounddrop/core'
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: []