rdio-cli 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +27 -0
- data/lib/rdio.rb +53 -0
- data/lib/rdio/version.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -61,6 +61,31 @@ Like an old gray cat in winter, keepin' close to the wall
|
|
61
61
|
|
62
62
|
```
|
63
63
|
|
64
|
+
### Shows
|
65
|
+
|
66
|
+
Upcoming events are served via [last.fm/api][]
|
67
|
+
|
68
|
+
```
|
69
|
+
~ rdio current
|
70
|
+
Now playing: That Old Time Feeling / Rodney Crowell / This One's for Him: A Tribute to Guy Clark
|
71
|
+
|
72
|
+
~ rdio shows
|
73
|
+
Here are 10 upcoming events for Rodney Crowell
|
74
|
+
Toronto Canada Fri, 22 Mar 2013 20:00:00
|
75
|
+
North Bethesda, MD United States Fri, 29 Mar 2013 19:30:00
|
76
|
+
London United Kingdom Thu, 09 May 2013 20:00:00
|
77
|
+
Birmingham United Kingdom Fri, 10 May 2013 16:16:01
|
78
|
+
Belfast Ireland Sun, 12 May 2013 19:30:00
|
79
|
+
Dublin Ireland Mon, 13 May 2013 20:00:00
|
80
|
+
Brussels Belgium Mon, 20 May 2013 13:20:01
|
81
|
+
Paris France Wed, 22 May 2013 20:00:00
|
82
|
+
København C Denmark Sun, 26 May 2013 20:00:00
|
83
|
+
Berlin Germany Thu, 30 May 2013 00:38:01
|
84
|
+
|
85
|
+
~ rdio shows --artist="Johnny Cash"
|
86
|
+
No upcoming events for Johnny Cash
|
87
|
+
```
|
88
|
+
|
64
89
|
### Full usage help
|
65
90
|
|
66
91
|
```
|
@@ -96,6 +121,7 @@ COMMANDS
|
|
96
121
|
play - Plays the current track
|
97
122
|
previous, prev - Play previous track
|
98
123
|
quit, q - Quit Rdio
|
124
|
+
shows - Show upcoming events for an artist
|
99
125
|
snag - Add the current track or album to your collection
|
100
126
|
toggle - Toggle playback
|
101
127
|
user - Show the current Rdio user
|
@@ -125,3 +151,4 @@ Copyright (c) 2012 Wynn Netherland. See [LICENSE][] for details.
|
|
125
151
|
[node-rdio]: https://github.com/dstokes/rdio-cli
|
126
152
|
[GLI]: https://github.com/davetron5000/gli
|
127
153
|
[makeitpersonal.co]: http://makeitpersonal.co
|
154
|
+
[last.fm/api]: http://www.last.fm/api
|
data/lib/rdio.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: UTF-8
|
1
2
|
require 'gli'
|
2
3
|
require 'yaml'
|
3
4
|
require 'launchy'
|
@@ -46,6 +47,46 @@ module Rdio
|
|
46
47
|
return res.body
|
47
48
|
end
|
48
49
|
|
50
|
+
def self.shows_for(artist, count)
|
51
|
+
uri = URI('http://ws.audioscrobbler.com/2.0')
|
52
|
+
params = { :method => 'artist.getEvents', :artist => artist, :limit => count, :format => 'json', :autocorrect => 1, :api_key => '3c3e4b39c2aedcac5d745c70a898ee76' }
|
53
|
+
uri.query = URI.encode_www_form(params)
|
54
|
+
res = Net::HTTP.get_response(uri)
|
55
|
+
|
56
|
+
json = JSON.parse(res.body)
|
57
|
+
return "Sorry, I’ve never heard of #{artist}" if json['error'] == 6
|
58
|
+
|
59
|
+
events = json['events']['event']
|
60
|
+
events = [events] if events.is_a?(Hash)
|
61
|
+
return "No upcoming events for #{artist}" if !events
|
62
|
+
|
63
|
+
corrected_artist_name = json['events']['@attr']['artist']
|
64
|
+
|
65
|
+
cities = []
|
66
|
+
countries = []
|
67
|
+
events.each do |event|
|
68
|
+
cities << event['venue']['location']['city']
|
69
|
+
countries << event['venue']['location']['country']
|
70
|
+
end
|
71
|
+
|
72
|
+
longest_city = cities.inject { |a, b| a.length > b.length ? a : b }
|
73
|
+
longest_country = countries.inject { |a, b| a.length > b.length ? a : b }
|
74
|
+
|
75
|
+
events.map! do |event|
|
76
|
+
location = event['venue']['location']
|
77
|
+
|
78
|
+
city = location['city']
|
79
|
+
city_spaces = (0..longest_city.length - city.length).map{' '}.join('')
|
80
|
+
|
81
|
+
country = location['country']
|
82
|
+
country_spaces = (0..longest_country.length - country.length).map{' '}.join('')
|
83
|
+
|
84
|
+
"#{city}#{city_spaces} #{country}#{country_spaces} #{event['startDate']} #{event['startTime']}"
|
85
|
+
end
|
86
|
+
|
87
|
+
"Here are #{count} upcoming events for #{corrected_artist_name}\n#{events.join("\n")}\n"
|
88
|
+
end
|
89
|
+
|
49
90
|
def self.rdio_config
|
50
91
|
{
|
51
92
|
:consumer_key => @consumer_key,
|
@@ -229,6 +270,18 @@ module Rdio
|
|
229
270
|
end
|
230
271
|
end
|
231
272
|
|
273
|
+
skips_pre
|
274
|
+
desc 'Show upcoming events for an artist'
|
275
|
+
command :shows do |c|
|
276
|
+
c.flag :artist
|
277
|
+
c.flag :count, :default_value => 10
|
278
|
+
c.action do |global_options,options,args|
|
279
|
+
artist = options[:artist] || bridge.current_artist
|
280
|
+
count = options[:count]
|
281
|
+
say shows_for(artist, count)
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
232
285
|
### Authenticated methods
|
233
286
|
|
234
287
|
desc 'Show the current Rdio user'
|
data/lib/rdio/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdio-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: highline
|