douban.fm 0.2.1 → 0.2.2

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.
@@ -83,9 +83,9 @@ class DoubanFMCLI
83
83
  end
84
84
 
85
85
  if options.list
86
- @@douban_fm = DoubanFM::DoubanFM.new(logger)
87
- @@douban_fm.fetch_channels
88
- @@douban_fm.channels['channels'].sort_by { |i| i['channel_id'] }.each do |channel|
86
+ @douban_fm = DoubanFM::DoubanFM.new(logger)
87
+ @douban_fm.fetch_channels
88
+ @douban_fm.channels['channels'].sort_by { |i| i['channel_id'] }.each do |channel|
89
89
  channel_id = channel['channel_id']
90
90
  puts "#{channel_id}.#{' ' * (4 - channel_id.to_s.length)}#{channel['name']}"
91
91
  end
@@ -98,7 +98,7 @@ class DoubanFMCLI
98
98
  end
99
99
 
100
100
  if options.email.nil?
101
- @@douban_fm = DoubanFM::DoubanFM.new(logger)
101
+ @douban_fm = DoubanFM::DoubanFM.new(logger)
102
102
 
103
103
  logger.log('play anonymous playlist')
104
104
  else
@@ -107,13 +107,13 @@ class DoubanFMCLI
107
107
  options.password = ask("Enter password: ") { |q| q.echo = false }
108
108
  end
109
109
 
110
- @@douban_fm = DoubanFM::DoubanFM.new(logger, options.email, options.password)
111
- @@douban_fm.login
110
+ @douban_fm = DoubanFM::DoubanFM.new(logger, options.email, options.password)
111
+ @douban_fm.login
112
112
 
113
113
  logger.log("login as user [#{options.email}]")
114
114
  end
115
115
 
116
- @@douban_fm.select_channel(options.channel)
116
+ @douban_fm.select_channel(options.channel)
117
117
 
118
118
  logger.log("select channel #{options.channel}")
119
119
 
@@ -123,20 +123,20 @@ class DoubanFMCLI
123
123
  begin
124
124
  logger.log('fetch next playlist')
125
125
 
126
- @@douban_fm.fetch_next_playlist
126
+ @douban_fm.fetch_next_playlist
127
127
  rescue
128
128
  logger.log('session expired, relogin')
129
129
 
130
- @@douban_fm.login
130
+ @douban_fm.login
131
131
 
132
132
  logger.log('fetch next playlist')
133
133
 
134
- @@douban_fm.fetch_next_playlist
134
+ @douban_fm.fetch_next_playlist
135
135
  end
136
136
 
137
137
  logger.log('play current playlist')
138
138
 
139
- @@douban_fm.play do |waiting|
139
+ @douban_fm.play do |waiting|
140
140
  play_proc.call(waiting)
141
141
  end
142
142
  end
@@ -158,9 +158,15 @@ class DoubanFMCLI
158
158
  def remote_port=(port)
159
159
  @@remote_port = port
160
160
  end
161
+
162
+ def douban_fm=(fm)
163
+ @@douban_fm = fm
164
+ end
161
165
  end
166
+
162
167
  @@remote_host = nil
163
168
  @@remote_port = nil
169
+ @@douban_fm = nil
164
170
 
165
171
  def do_GET request, response
166
172
  path = request.path[1..-1].split('/')
@@ -178,6 +184,8 @@ class DoubanFMCLI
178
184
  else
179
185
  raise WEBrick::HTTPStatus::NotFound
180
186
  end
187
+ when 'now'
188
+ response.body = JSON.generate({'channel' => @@douban_fm.current_channel})
181
189
  else
182
190
  raise WEBrick::HTTPStatus::NotFound
183
191
  end
@@ -186,6 +194,7 @@ class DoubanFMCLI
186
194
 
187
195
  servletClass.remote_host = options.remote_host
188
196
  servletClass.remote_port = options.remote_port
197
+ servletClass.douban_fm = @douban_fm
189
198
 
190
199
  Thread.new do
191
200
  server = WEBrick::HTTPServer.new(:Port => 3000)
@@ -205,7 +214,7 @@ class DoubanFMCLI
205
214
  # there are a lot more chances to get stack overflow in this mode,
206
215
  # so can't use the proc way
207
216
  while true
208
- @@douban_fm.add_to_mpd(options.remote_host, options.remote_port)
217
+ @douban_fm.add_to_mpd(options.remote_host, options.remote_port)
209
218
  sleep 10
210
219
  end
211
220
  end
@@ -7,7 +7,7 @@ module DoubanFM
7
7
  # DOUBAN_FM_MPD_PLAYLIST = 'douban.fm'
8
8
  MIN_SONGS_IN_DOUBAN_FM_MPD_PLAYLIST = 10
9
9
 
10
- attr_reader :waiting, :channels, :current_playlist
10
+ attr_reader :waiting, :channels, :current_channel
11
11
 
12
12
  def initialize(logger = DummyLogger.new, email = '', password = '')
13
13
  @logger = logger
@@ -61,7 +61,7 @@ module DoubanFM
61
61
 
62
62
  @current_playlist = JSON.parse(res.body)
63
63
 
64
- @logger.log("raw playlist #{current_playlist}")
64
+ @logger.log("raw playlist #{@current_playlist}")
65
65
 
66
66
  unless @current_playlist['err'].nil?
67
67
  raise @current_playlist
@@ -1,3 +1,3 @@
1
1
  module DoubanFM
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: douban.fm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-18 00:00:00.000000000 Z
12
+ date: 2013-01-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby-mpd
16
- requirement: &70103937077020 !ruby/object:Gem::Requirement
16
+ requirement: &70325203484360 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.1.5
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70103937077020
24
+ version_requirements: *70325203484360
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: highline
27
- requirement: &70103937076420 !ruby/object:Gem::Requirement
27
+ requirement: &70325203482940 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - =
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 1.6.15
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70103937076420
35
+ version_requirements: *70325203482940
36
36
  description: douban.fm
37
37
  email:
38
38
  - hxliang1982@gmail.com