douban.fm 0.2.8 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -181,6 +181,8 @@ class DoubanFMCLI
181
181
 
182
182
  def do_GET request, response
183
183
  path = request.path[1..-1].split('/')
184
+ puts "======" + path[0].to_s
185
+ puts "lkj" if path[0].nil?
184
186
  case path[0]
185
187
  when 'channels'
186
188
  @@douban_fm.fetch_channels
@@ -197,6 +199,9 @@ class DoubanFMCLI
197
199
  end
198
200
  when 'now'
199
201
  response.body = JSON.generate({'channel' => @@douban_fm.current_channel})
202
+ when 'index', nil
203
+ html_path = File.expand_path('../../index.html', __FILE__)
204
+ response.body = File.readlines(html_path).join('')
200
205
  else
201
206
  raise WEBrick::HTTPStatus::NotFound
202
207
  end
@@ -0,0 +1,165 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>douban.fm channels</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <meta name="description" content="douban.fm channels">
8
+ <meta name="author" content="@honnix,@jihao">
9
+
10
+ <!-- CSS -->
11
+ <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css" rel="stylesheet">
12
+ <style type="text/css">
13
+
14
+ /* Sticky footer styles
15
+ -------------------------------------------------- */
16
+
17
+ html,
18
+ body {
19
+ height: 100%;
20
+ /* The html and body elements cannot have any padding or margin. */
21
+ font-family: "Microsoft YaHei" ! important;
22
+ text-align: center;
23
+ }
24
+
25
+ /* Wrapper for page content to push down footer */
26
+ #wrap {
27
+ min-height: 100%;
28
+ height: auto !important;
29
+ height: 100%;
30
+ /* Negative indent footer by it's height */
31
+ margin: 0 auto -60px;
32
+ }
33
+
34
+ /* Set the fixed height of the footer here */
35
+ #push,
36
+ #footer {
37
+ height: 60px;
38
+ }
39
+ #footer {
40
+ background-color: #f5f5f5;
41
+ }
42
+
43
+ /* Lastly, apply responsive CSS fixes as necessary */
44
+ @media (max-width: 767px) {
45
+ #footer {
46
+ margin-left: -20px;
47
+ margin-right: -20px;
48
+ padding-left: 20px;
49
+ padding-right: 20px;
50
+ }
51
+ }
52
+
53
+ /* Custom page CSS
54
+ -------------------------------------------------- */
55
+ /* Not required for template or sticky footer method. */
56
+
57
+ .container {
58
+ width: auto;
59
+ max-width: 680px;
60
+ }
61
+ .container .credit {
62
+ margin: 20px 0;
63
+ }
64
+ .music {
65
+ display: inline-block;
66
+ padding: 2px 2px;
67
+ }
68
+ </style>
69
+ <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap-responsive.css" rel="stylesheet">
70
+
71
+ <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
72
+ <!--[if lt IE 9]>
73
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
74
+ <![endif]-->
75
+
76
+ <!-- Fav and touch icons, you might need specify the following images -->
77
+ <!--
78
+ <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
79
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
80
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
81
+ <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
82
+ <link rel="shortcut icon" href="../assets/ico/favicon.png">
83
+ -->
84
+ </head>
85
+
86
+ <body>
87
+
88
+
89
+ <!-- Part 1: Wrap all page content here -->
90
+ <div id="wrap">
91
+
92
+ <!-- Begin page content -->
93
+ <div class="container">
94
+ <div class="page-header">
95
+ <h1>douban.fm channels</h1>
96
+ </div>
97
+ <div class="body">
98
+ <a id="now" class="btn btn-large btn-success" data-loading-text="loading ..." data-complete-text="" href=""><i class="icon-play"></i><i class="icon-music"></i> </a>
99
+ <hr>
100
+ <div class="channels">
101
+
102
+ </div>
103
+ </div>
104
+ </div>
105
+
106
+ <div id="push"></div>
107
+ </div>
108
+
109
+ <div id="footer">
110
+ <div class="container">
111
+ <p class="muted credit">Present by <a href="http://honnix.com">honnix</a>.</p>
112
+ </div>
113
+ </div>
114
+
115
+ <!-- Le javascript
116
+ ================================================== -->
117
+ <!-- Placed at the end of the document so the pages load faster -->
118
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
119
+ <script src="http://twitter.github.com/bootstrap/assets/js/bootstrap-button.js"></script>
120
+ <script type="text/javascript">
121
+ $(function(){
122
+ $('a#now').button('loading');
123
+ // load current play channel
124
+ $.getJSON("/now", function(data) {
125
+ var now_id = data['channel'];
126
+ var now_name;
127
+ if (now_id === -1)
128
+ now_name = "乱放"
129
+
130
+ // load all the channels
131
+ $.getJSON('/channels', function(data) {
132
+ var items = [];
133
+ data = data['channels']
134
+
135
+ $.each(data, function(index, val) {
136
+ if(val['channel_id'] == now_id)
137
+ now_name = val['name'];
138
+
139
+ items.push('<div class="music"><a class="btn channel" href="#" id="channel_'+val['channel_id']+'"><i class="icon-music"></i> '+val['name']+'</a></div>');
140
+ });
141
+ items.push('<div class="music"><a class="btn channel" href="#" id="channel_-1"><i class="icon-music"></i>乱放</a></div>');
142
+
143
+ $('div.channels').html(items.join(''));
144
+ $('a#now').button('reset');
145
+ $('a#now').html($('a#now').html()+now_name);
146
+ }); // end of getJSON
147
+
148
+ });
149
+
150
+ // bind click event to channel buttons
151
+ $('body').on('click','a.btn.channel',function(event){
152
+ $('a#now').button('loading');
153
+ event.preventDefault();
154
+ var channel = $(this).attr('id').substr(8);
155
+ // switch channel
156
+ $.get("/channel/"+channel, function(data) {
157
+ window.location.href = window.location.href;
158
+ });
159
+ });
160
+
161
+ }); // end of document.ready
162
+
163
+ </script>
164
+ </body>
165
+ </html>
@@ -1,3 +1,3 @@
1
1
  module DoubanFM
2
- VERSION = '0.2.8'
2
+ VERSION = '0.3.0'
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.8
4
+ version: 0.3.0
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-23 00:00:00.000000000 Z
12
+ date: 2013-01-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby-mpd
16
- requirement: &70121394052760 !ruby/object:Gem::Requirement
16
+ requirement: &70287836247780 !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: *70121394052760
24
+ version_requirements: *70287836247780
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: highline
27
- requirement: &70121394052040 !ruby/object:Gem::Requirement
27
+ requirement: &70287836247140 !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: *70121394052040
35
+ version_requirements: *70287836247140
36
36
  description: douban.fm
37
37
  email:
38
38
  - hxliang1982@gmail.com
@@ -48,6 +48,7 @@ files:
48
48
  - Rakefile
49
49
  - bin/douban.fm
50
50
  - douban.fm.gemspec
51
+ - index.html
51
52
  - lib/douban.fm.rb
52
53
  - lib/douban.fm/douban_fm.rb
53
54
  - lib/douban.fm/logger.rb