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 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: []