summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormo <mo.khan@gmail.com>2018-06-14 11:16:08 -0600
committermo <mo.khan@gmail.com>2018-06-14 11:16:08 -0600
commita1c8f3871ef97315577a8ab3cfc9772527ec01e7 (patch)
treedee42eb4e69251dc971d081719ae0ccebae3b597 /lib
parent80fd02e6113a23102dceaa94fa1d5a85c1e3a6e1 (diff)
add instructions on how to stream music from soundcloud.
Diffstat (limited to 'lib')
-rw-r--r--lib/ghetto/blaster/cli.rb21
1 files changed, 15 insertions, 6 deletions
diff --git a/lib/ghetto/blaster/cli.rb b/lib/ghetto/blaster/cli.rb
index 3ce926b..16bad17 100644
--- a/lib/ghetto/blaster/cli.rb
+++ b/lib/ghetto/blaster/cli.rb
@@ -4,11 +4,15 @@ require 'net/hippie'
module Ghetto
module Blaster
class CLI < Thor
- class_option :client_id, default: ENV['CLIENT_ID']
+ class_option :client_id, default: ENV['SOUNDCLOUD_CLIENT_ID']
- desc "play", "play music"
- def play
- say client.get(build_uri("/tracks?client_id=#{client_id}")).body
+ desc "play username", "play music by a specific user"
+ def play(username)
+ tracks_for(username).each do |track|
+ stream_url = "#{track[:stream_url]}s/?client_id=#{client_id}"
+ json = JSON.parse(client.get(stream_url).body, symbolize_names: true)
+ say json[json.keys.first]
+ end
end
desc "user username", "fetch user info"
@@ -18,8 +22,7 @@ module Ghetto
desc "tracks username", "fetch tracks for user"
def tracks(username)
- user_id = resolve(username)[:location].split('?')[0].split('/').last
- say client.get(build_uri("/users/#{user_id}/tracks?client_id=#{client_id}")).body
+ say tracks_for(username, parse: false)
end
desc "version", "print version"
@@ -29,6 +32,12 @@ module Ghetto
private
+ def tracks_for(username, parse: true)
+ user_id = resolve(username)[:location].split('?')[0].split('/').last
+ body = client.get(build_uri("/users/#{user_id}/tracks?client_id=#{client_id}")).body
+ parse ? JSON.parse(body, symbolize_names: true) : body
+ end
+
def client
@client ||= Net::Hippie::Client.new
end