diff options
| author | mo <mo.khan@gmail.com> | 2018-06-14 11:16:08 -0600 |
|---|---|---|
| committer | mo <mo.khan@gmail.com> | 2018-06-14 11:16:08 -0600 |
| commit | a1c8f3871ef97315577a8ab3cfc9772527ec01e7 (patch) | |
| tree | dee42eb4e69251dc971d081719ae0ccebae3b597 /lib | |
| parent | 80fd02e6113a23102dceaa94fa1d5a85c1e3a6e1 (diff) | |
add instructions on how to stream music from soundcloud.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/ghetto/blaster/cli.rb | 21 |
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 |
