ghetto-blaster 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19f2f048850b186e90937b13c3f1ec9fc9957106b09361366971cfd152d8e19b
4
- data.tar.gz: f96b7b40e8de0ad60d0abc4327e9bbe87519417a4515463b5a297b18b756aa9d
3
+ metadata.gz: dd7de75a4e05abc6048bb5ad9e80aad610918531b4dc264423b0969eafdb53de
4
+ data.tar.gz: 7a5b7ce692df4520639df745b4c77e26eb1fa9bb1bd8d92a64d50bea46ec5441
5
5
  SHA512:
6
- metadata.gz: f72bd0196ca6058a77357809645914c66f7f50039f9007b45a5727d2828ea7bf5070e8c7ab0763db47bc2a3cdf1f76b7624e132f9da2c21b1c5c1d45d463d377
7
- data.tar.gz: 7f427c6d7a8281c79ac2d338a39c908b14dc66b892bbe018e536d490069087e73983730a082e07be2f3fa716a0b3651285297588f7818fb51a5b009ad646bc27
6
+ metadata.gz: 2d6bf04b9129834a4a93ee978c54a7a3228c7bd7d5fae3f80ddbe521f9fd293c72fe2399e1388a278e660b6dab3203184fbb1ba95645874fc57a28310d4b623f
7
+ data.tar.gz: e97b69b4059adb6eac629da8e68e1fe169b1b6d88efeb69482f43fe11eea4482f40be83d821600551637cf376af1ce08ab410c75c1ec458a22c73a8828d0a919
data/.gitignore CHANGED
@@ -9,3 +9,4 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+ Gemfile.lock
data/README.md CHANGED
@@ -1,28 +1,20 @@
1
1
  # Ghetto::Blaster
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/ghetto/blaster`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ A command line client for listening to soundcloud in your terminal.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
6
5
 
7
6
  ## Installation
8
7
 
9
- Add this line to your application's Gemfile:
10
-
11
- ```ruby
12
- gem 'ghetto-blaster'
13
- ```
14
-
15
- And then execute:
16
-
17
- $ bundle
18
-
19
- Or install it yourself as:
20
-
21
8
  $ gem install ghetto-blaster
22
9
 
23
10
  ## Usage
24
11
 
25
- TODO: Write usage instructions here
12
+ You will need to lookup your soundcloud client id. There are
13
+ instructions on the internets on how to find this.
14
+
15
+ ```bash
16
+ $ SOUNDCLOUD_CLIENT_ID=x ghetto-blaster play jodieoverland | xargs mplayer
17
+ ```
26
18
 
27
19
  ## Development
28
20
 
@@ -32,7 +24,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
32
24
 
33
25
  ## Contributing
34
26
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/ghetto-blaster.
27
+ Bug reports and pull requests are welcome on GitHub at https://github.com/mokhan/ghetto-blaster.
36
28
 
37
29
  ## License
38
30
 
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'ghetto/blaster/cli'
5
+
6
+ Net::Hippie.logger = Logger.new('/dev/null')
7
+ Ghetto::Blaster::CLI.start(ARGV)
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
+ spec.add_dependency "net-hippie", "~> 0.1"
25
+ spec.add_dependency "thor", "~> 0.20"
24
26
  spec.add_development_dependency "bundler", "~> 1.16"
25
27
  spec.add_development_dependency "rake", "~> 10.0"
26
28
  spec.add_development_dependency "rspec", "~> 3.0"
@@ -0,0 +1,58 @@
1
+ require 'thor'
2
+ require 'net/hippie'
3
+
4
+ module Ghetto
5
+ module Blaster
6
+ class CLI < Thor
7
+ class_option :client_id, default: ENV['SOUNDCLOUD_CLIENT_ID']
8
+
9
+ desc "play username", "play music by a specific user"
10
+ def play(username)
11
+ tracks_for(username).each do |track|
12
+ stream_url = "#{track[:stream_url]}s/?client_id=#{client_id}"
13
+ json = JSON.parse(client.get(stream_url).body, symbolize_names: true)
14
+ say json[json.keys.first]
15
+ end
16
+ end
17
+
18
+ desc "user username", "fetch user info"
19
+ def user(username)
20
+ say client.get(resolve(username)[:location]).body
21
+ end
22
+
23
+ desc "tracks username", "fetch tracks for user"
24
+ def tracks(username)
25
+ say tracks_for(username, parse: false)
26
+ end
27
+
28
+ desc "version", "print version"
29
+ def version
30
+ say Ghetto::Blaster::VERSION
31
+ end
32
+
33
+ private
34
+
35
+ def tracks_for(username, parse: true)
36
+ user_id = resolve(username)[:location].split('?')[0].split('/').last
37
+ body = client.get(build_uri("/users/#{user_id}/tracks?client_id=#{client_id}")).body
38
+ parse ? JSON.parse(body, symbolize_names: true) : body
39
+ end
40
+
41
+ def client
42
+ @client ||= Net::Hippie::Client.new
43
+ end
44
+
45
+ def client_id
46
+ options[:client_id]
47
+ end
48
+
49
+ def build_uri(path)
50
+ URI.join("https://api.soundcloud.com", path)
51
+ end
52
+
53
+ def resolve(username)
54
+ JSON.parse(client.get(build_uri("/resolve?url=https://soundcloud.com/#{username}&client_id=#{client_id}")).body, symbolize_names: true)
55
+ end
56
+ end
57
+ end
58
+ end
@@ -1,5 +1,5 @@
1
1
  module Ghetto
2
2
  module Blaster
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ghetto-blaster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - mo
@@ -10,6 +10,34 @@ bindir: exe
10
10
  cert_chain: []
11
11
  date: 2018-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: net-hippie
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.20'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.20'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: bundler
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -55,7 +83,8 @@ dependencies:
55
83
  description: Play that funky music..
56
84
  email:
57
85
  - mo@mokhan.c
58
- executables: []
86
+ executables:
87
+ - ghetto-blaster
59
88
  extensions: []
60
89
  extra_rdoc_files: []
61
90
  files:
@@ -63,14 +92,15 @@ files:
63
92
  - ".rspec"
64
93
  - ".travis.yml"
65
94
  - Gemfile
66
- - Gemfile.lock
67
95
  - LICENSE.txt
68
96
  - README.md
69
97
  - Rakefile
70
98
  - bin/console
71
99
  - bin/setup
100
+ - exe/ghetto-blaster
72
101
  - ghetto-blaster.gemspec
73
102
  - lib/ghetto/blaster.rb
103
+ - lib/ghetto/blaster/cli.rb
74
104
  - lib/ghetto/blaster/version.rb
75
105
  homepage: https://www.mokhan.ca
76
106
  licenses:
@@ -1,35 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- ghetto-blaster (0.1.0)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- diff-lcs (1.3)
10
- rake (10.5.0)
11
- rspec (3.7.0)
12
- rspec-core (~> 3.7.0)
13
- rspec-expectations (~> 3.7.0)
14
- rspec-mocks (~> 3.7.0)
15
- rspec-core (3.7.1)
16
- rspec-support (~> 3.7.0)
17
- rspec-expectations (3.7.0)
18
- diff-lcs (>= 1.2.0, < 2.0)
19
- rspec-support (~> 3.7.0)
20
- rspec-mocks (3.7.0)
21
- diff-lcs (>= 1.2.0, < 2.0)
22
- rspec-support (~> 3.7.0)
23
- rspec-support (3.7.1)
24
-
25
- PLATFORMS
26
- ruby
27
-
28
- DEPENDENCIES
29
- bundler (~> 1.16)
30
- ghetto-blaster!
31
- rake (~> 10.0)
32
- rspec (~> 3.0)
33
-
34
- BUNDLED WITH
35
- 1.16.1