mplug163 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5143da5494049d78f55d76a98a1b91b79655c641
4
- data.tar.gz: 4694b7e9a9316f81ff7e90c834679cc8ac7c7410
3
+ metadata.gz: 74c850695c2de63dc5ac9391709ead803c5014b4
4
+ data.tar.gz: c70748299cddc82dada1423a2f1d6a276ea91780
5
5
  SHA512:
6
- metadata.gz: fb56f92dea87f05ac93efca90321ebd325f2d4c257904a18c0e15ca3d31dfde7455d4ec433cd80de737b3136458478a84a48bc8d147810ee39e8c6e299fdb1e9
7
- data.tar.gz: 72c48c42edc713db334409dfbe2cc4999554bc1338da24860a08281f04296f218bed5af08d84f44e39b4330ff4d0ece19394db41f18f15754fe190a1304e54d6
6
+ metadata.gz: 192868550cb7aa2e5022ce9b77c00158597fa2988298157dcc79f368d2c24fe9ee6f10770dc253cd738d9384181372bba2fecec81d58dac61127132bd7f7ac01
7
+ data.tar.gz: dd8d3cc2a8af14adc75783a23b73a7565f18e662b8e93f549d5a92abd22212fe72f9566bab9ec0cf0d387ee2ec8a952095c15eda67242cfa92d90ad03d3d7582
data/.gitignore CHANGED
@@ -12,3 +12,4 @@
12
12
  *.o
13
13
  *.a
14
14
  mkmf.log
15
+ *.gem
data/README.md CHANGED
@@ -1,22 +1,48 @@
1
1
  # Mplug163
2
2
 
3
- A local music player based on Netease music.
3
+ Mplug163, built with Ruby 2.1, is a command line music player that wirelessly plugs in Netease music(http://music.163.com).
4
4
 
5
- ## Requirements
5
+ ## Installation
6
6
 
7
- ```bash
8
- brew install mpg123
9
- ```
7
+ My MacBook Pro is running Mavericks(10.9), Mplug163 runs smoothly with Ruby 2.1.
10
8
 
11
- ## Installation
9
+ You're lucky if you use Mac OS X. Just follow:
12
10
 
13
- ```ruby
14
- gem install mplug163
15
11
  ```
12
+ $ brew install mpg123
13
+ $ gem install mplug163
14
+ ```
15
+
16
+ After finishing the installation, open your terminal and input `mplug163`. Music's coming!
17
+
18
+ Sorry, I do not test Mplug163 in Linux. If you try it in Linux and catch some problem, please issue me. Thanks!
19
+
20
+ ## Shortcuts
21
+
22
+ | Key | Explanation | 中文释义 |
23
+ | :---|:---------------------|:--------------|
24
+ | j | Down | 向下 |
25
+ | k | Up | 向上 |
26
+ | h | Back | 后退 |
27
+ | l | Forward | 前进 |
28
+ | [ | Prev Song | 上一首歌曲 |
29
+ | ] | Next Song | 上一首歌曲 |
30
+ | ' ' | Play / Pause | 播放 / 暂停 |
31
+ | u | Prev Page | 上一页列表 |
32
+ | d | Next Page | 下一页列表 |
33
+ | f | Search | 搜索 |
34
+ | m | Main Menu | 主菜单 |
35
+ | p | Present Playlist | 当前播放列表 |
36
+ | a | Add | 添加歌曲到打碟 |
37
+ | z | DJ List | 打碟列表 |
38
+ | s | Star Song | 收藏歌曲 |
39
+ | c | Collection | 收藏歌曲列表 |
40
+ | r | Remove Present Entry | 删除当前曲目 |
41
+ | q | Quit | 退出 |
16
42
 
17
- ## Usage
43
+ ## Attention
18
44
 
19
- Open your terminal and input `mplug163`. Music's coming!
45
+ Mplug163 will make a new directory `~/.mplug163` and touch a file to store user's data for the first time.
20
46
 
21
47
  ## Big Thanks
22
48
 
@@ -32,7 +58,7 @@ MIT License.
32
58
 
33
59
  ## Contributing
34
60
 
35
- 1. Fork it ( https://github.com/[my-github-username]/mplug163/fork )
61
+ 1. Fork it ( https://github.com/rippleyui/mplug163/fork )
36
62
  2. Create your feature branch (`git checkout -b my-new-feature`)
37
63
  3. Commit your changes (`git commit -am 'Add some feature'`)
38
64
  4. Push to the branch (`git push origin my-new-feature`)
@@ -2,24 +2,24 @@ require 'curses'
2
2
  require 'json'
3
3
 
4
4
  SHORTCUT = [
5
- ['j', 'Down ', '下移'],
6
- ['k', 'Up ', '上移'],
7
- ['h', 'Back ', '后退'],
8
- ['l', 'Forward ', '前进'],
9
- ['u', 'Prev page ', '上一页'],
10
- ['d', 'Next page ', '下一页'],
11
- ['f', 'Search ', '快速搜索'],
12
- ['[', 'Prev song ', '上一曲'],
13
- [']', 'Next song ', '下一曲'],
14
- [' ', 'Play/Pause', '播放/暂停'],
15
- ['m', 'Menu ', '主菜单'],
16
- ['p', 'Present ', '当前播放列表'],
17
- ['a', 'Add ', '添加曲目到打碟'],
18
- ['z', 'DJ list ', '打碟列表'],
19
- ['s', 'Star ', '添加到收藏'],
20
- ['c', 'Collection', '收藏列表'],
21
- ['r', 'Remove ', '删除当前条目'],
22
- ['q', 'Quit ', '退出']
5
+ ['j', 'Down ', '向下'],
6
+ ['k', 'Up ', '向上'],
7
+ ['h', 'Back ', '后退'],
8
+ ['l', 'Forward ', '前进'],
9
+ ['[', 'Prev song ', '上一首歌曲'],
10
+ [']', 'Next song ', '下一首歌曲'],
11
+ [' ', 'Play / Pause', '播放 / 暂停'],
12
+ ['u', 'Prev page ', '上一页列表'],
13
+ ['d', 'Next page ', '下一页列表'],
14
+ ['f', 'Search ', '搜索'],
15
+ ['m', 'Menu ', '主菜单'],
16
+ ['p', 'Present ', '当前播放列表'],
17
+ ['a', 'Add ', '添加歌曲到打碟'],
18
+ ['z', 'DJ list ', '打碟列表'],
19
+ ['s', 'Star ', '收藏歌曲'],
20
+ ['c', 'Collection ', '收藏歌曲列表'],
21
+ ['r', 'Remove ', '删除当前曲目'],
22
+ ['q', 'Quit ', '退出']
23
23
  ]
24
24
 
25
25
  class Menu
@@ -34,13 +34,13 @@ class Ui
34
34
  SCREEN_TOP = 0
35
35
  SCREEN_LEFT = 0
36
36
 
37
- PLAYER_X = 10
37
+ PLAYER_X = 8
38
38
  PLAYER_TITLE_Y = 4
39
39
  PLAYER_STATUS_Y = 5
40
40
  PLAYER_CONTENT_Y = 7
41
41
  PLAYER_INFO_Y = 19
42
42
 
43
- PLAYER_NOTE_X = PLAYER_X - 6
43
+ PLAYER_NOTE_X = PLAYER_X - 2
44
44
  PLAYER_POINTER_X = PLAYER_X - 3
45
45
 
46
46
  def initialize
@@ -61,12 +61,13 @@ class Ui
61
61
 
62
62
  def build_playinfo(song_name, artist, album_name, pause=false)
63
63
  if pause
64
- putstr(@screen, PLAYER_STATUS_Y, PLAYER_NOTE_X, 'z Zzz', Curses.color_pair(3))
64
+ putstr(@screen, PLAYER_STATUS_Y, PLAYER_NOTE_X, '', Curses.color_pair(3))
65
65
  else
66
- putstr(@screen, PLAYER_STATUS_Y, PLAYER_NOTE_X, '♫ ♪ ♫ ', Curses.color_pair(3))
66
+ putstr(@screen, PLAYER_STATUS_Y, PLAYER_NOTE_X, '', Curses.color_pair(3))
67
67
  end
68
68
 
69
- song_info = "#{song_name} - #{artist} <#{album_name}>"
69
+ info = "#{song_name} - #{artist}"
70
+ song_info = pretty_format(info, 0, 50)
70
71
  putstr(@screen, PLAYER_STATUS_Y, PLAYER_X, song_info, Curses.color_pair(4))
71
72
  @screen.refresh
72
73
  end
@@ -82,31 +83,31 @@ class Ui
82
83
  putstr(@screen, PLAYER_TITLE_Y, PLAYER_X, title, Curses.color_pair(1))
83
84
 
84
85
  if datalist.size == 0
85
- putstr(@screen, PLAYER_CONTENT_Y, PLAYER_X, '还没有内容 - -||')
86
+ putstr(@screen, PLAYER_CONTENT_Y, PLAYER_X, '没有内容 Orz')
86
87
  else
87
88
  case datatype
88
89
  when 'main'
89
90
  (offset...[datalist.length, offset+step].min).each do |i|
90
91
  if i == index
91
- line_info = "-> #{i}.#{datalist[i]}"
92
+ line_info = " #{i}. #{datalist[i]}"
92
93
  putstr(@screen, i-offset+PLAYER_CONTENT_Y, PLAYER_POINTER_X, line_info, Curses.color_pair(2))
93
94
  else
94
- line_info = "#{i}.#{datalist[i]}"
95
+ line_info = "#{i}. #{datalist[i]}"
95
96
  putstr(@screen, i-offset+PLAYER_CONTENT_Y, PLAYER_X, line_info)
96
97
  end
97
98
  end
98
99
 
99
- putstr(@screen, PLAYER_INFO_Y, PLAYER_X, 'Mplug163 built by Ripple Yui', Curses.color_pair(3))
100
+ putstr(@screen, PLAYER_INFO_Y, PLAYER_X, 'Crafted with by Ripple Yui', Curses.color_pair(3))
100
101
 
101
102
  when 'songs'
102
103
  (offset...[datalist.length, offset+step].min).each do |i|
103
104
  if i == index
104
- info = "-> #{i}.#{datalist[i]['song_name']} - #{datalist[i]['artist']} <#{datalist[i]['album_name']}>"
105
- line_info = pretty_format(info, 0, 63)
105
+ info = " #{i}. #{datalist[i]['song_name']} - #{datalist[i]['artist']} - #{datalist[i]['album_name']}"
106
+ line_info = pretty_format(info, 0, 52)
106
107
  putstr(@screen, i-offset+PLAYER_CONTENT_Y, PLAYER_POINTER_X, line_info, Curses.color_pair(2))
107
108
  else
108
- info = "#{i}.#{datalist[i]['song_name']} - #{datalist[i]['artist']} <#{datalist[i]['album_name']}>"
109
- line_info = pretty_format(info, 0, 60)
109
+ info = "#{i}. #{datalist[i]['song_name']} - #{datalist[i]['artist']} - #{datalist[i]['album_name']}"
110
+ line_info = pretty_format(info, 0, 50)
110
111
  putstr(@screen, i-offset+PLAYER_CONTENT_Y, PLAYER_X, line_info)
111
112
  end
112
113
  end
@@ -114,10 +115,10 @@ class Ui
114
115
  when 'artists'
115
116
  (offset...[datalist.length, offset+step].min).each do |i|
116
117
  if i == index
117
- line_info = "-> #{i}.#{datalist[i]['artists_name']} - #{datalist[i]['artist']} #{datalist[i]['alias']}"
118
+ line_info = " #{i}. #{datalist[i]['artists_name']} - #{datalist[i]['artist']} #{datalist[i]['alias']}"
118
119
  putstr(@screen, i-offset+PLAYER_CONTENT_Y, PLAYER_POINTER_X, line_info, Curses.color_pair(2))
119
120
  else
120
- line_info = "#{i}.#{datalist[i]['artists_name']} - #{datalist[i]['artist']} #{datalist[i]['alias']}"
121
+ line_info = "#{i}. #{datalist[i]['artists_name']} - #{datalist[i]['artist']} #{datalist[i]['alias']}"
121
122
  putstr(@screen, i-offset+PLAYER_CONTENT_Y, PLAYER_X, line_info)
122
123
  end
123
124
  end
@@ -125,10 +126,10 @@ class Ui
125
126
  when 'albums'
126
127
  (offset...[datalist.length, offset+step].min).each do |i|
127
128
  if i == index
128
- line_info = "-> #{i}.#{datalist[i]['albums_name']} - #{datalist[i]['artists_name']}"
129
+ line_info = " #{i}. #{datalist[i]['albums_name']} - #{datalist[i]['artists_name']}"
129
130
  putstr(@screen, i-offset+PLAYER_CONTENT_Y, PLAYER_POINTER_X, line_info, Curses.color_pair(2))
130
131
  else
131
- line_info = "#{i}.#{datalist[i]['albums_name']} - #{datalist[i]['artists_name']}"
132
+ line_info = "#{i}. #{datalist[i]['albums_name']} - #{datalist[i]['artists_name']}"
132
133
  putstr(@screen, i-offset+PLAYER_CONTENT_Y, PLAYER_X, line_info)
133
134
  end
134
135
  end
@@ -136,10 +137,10 @@ class Ui
136
137
  when 'playlists'
137
138
  (offset...[datalist.length, offset+step].min).each do |i|
138
139
  if i == index
139
- line_info = "-> #{i}.#{datalist[i]['playlists_name']} - #{datalist[i]['creator_name']}"
140
+ line_info = " #{i}. #{datalist[i]['playlists_name']} - #{datalist[i]['creator_name']}"
140
141
  putstr(@screen, i-offset+PLAYER_CONTENT_Y, PLAYER_POINTER_X, line_info, Curses.color_pair(2))
141
142
  else
142
- line_info = "#{i}.#{datalist[i]['playlists_name']} - #{datalist[i]['creator_name']}"
143
+ line_info = "#{i}. #{datalist[i]['playlists_name']} - #{datalist[i]['creator_name']}"
143
144
  putstr(@screen, i-offset+PLAYER_CONTENT_Y, PLAYER_X, line_info)
144
145
  end
145
146
  end
@@ -147,17 +148,17 @@ class Ui
147
148
  when 'djchannels'
148
149
  (offset...[datalist.length, offset+step].min).each do |i|
149
150
  if i == index
150
- line_info = "-> #{i}.#{datalist[i][0]['song_name']}"
151
+ line_info = " #{i}. #{datalist[i][0]['song_name']}"
151
152
  putstr(@screen, i-offset+PLAYER_CONTENT_Y, PLAYER_POINTER_X, line_info, Curses.color_pair(2))
152
153
  else
153
- line_info = "#{i}.#{datalist[i][0]['song_name']}"
154
+ line_info = "#{i}. #{datalist[i][0]['song_name']}"
154
155
  putstr(@screen, i-offset+PLAYER_CONTENT_Y, PLAYER_X, line_info)
155
156
  end
156
157
  end
157
158
 
158
159
  when 'help'
159
160
  (offset...[datalist.length, offset+step].min).each do |i|
160
- line_info = "#{i}.#{datalist[i][0]} #{datalist[i][1]} #{datalist[i][2]}"
161
+ line_info = "#{i}. #{datalist[i][0]} #{datalist[i][1]} #{datalist[i][2]}"
161
162
  putstr(@screen, i-offset+PLAYER_CONTENT_Y, PLAYER_X, line_info)
162
163
  end
163
164
  end
@@ -227,18 +228,18 @@ class Ui
227
228
 
228
229
  def build_search_menu
229
230
  clear_to_bottom(@screen, PLAYER_CONTENT_Y, SCREEN_HEIGHT)
230
- putstr(@screen, PLAYER_CONTENT_Y, PLAYER_X, '选择搜索类型:', Curses.color_pair(1))
231
+ putstr(@screen, PLAYER_CONTENT_Y, PLAYER_X, '选择搜索类型:', Curses.color_pair(1))
231
232
  putstr(@screen, PLAYER_CONTENT_Y + 1, PLAYER_X, '[1] 歌曲')
232
233
  putstr(@screen, PLAYER_CONTENT_Y + 2, PLAYER_X, '[2] 艺术家')
233
234
  putstr(@screen, PLAYER_CONTENT_Y + 3, PLAYER_X, '[3] 专辑')
234
235
  putstr(@screen, PLAYER_CONTENT_Y + 4, PLAYER_X, '[4] 网易精选集')
235
- putstr(@screen, PLAYER_CONTENT_Y + 6, PLAYER_X, '请键入对应数字:', Curses.color_pair(2))
236
+ putstr(@screen, PLAYER_CONTENT_Y + 6, PLAYER_X, '请键入对应数字:', Curses.color_pair(2))
236
237
  @screen.refresh
237
238
  x = @screen.getch
238
239
  end
239
240
 
240
241
  def build_login
241
- params = get_param('请输入登录信息: (e.g. foobar@163.com foobar)')
242
+ params = get_param('请输入登录信息:(e.g. foobar@163.com foobar)')
242
243
  account = params.split(' ')
243
244
  return build_login if account.size != 2
244
245
 
@@ -253,10 +254,10 @@ class Ui
253
254
 
254
255
  def build_login_error
255
256
  clear_to_bottom(@screen, PLAYER_CONTENT_Y, SCREEN_HEIGHT)
256
- putstr(@screen, PLAYER_CONTENT_Y + 1, PLAYER_X, 'oh,登录信息好像不对 (O_O)#', Curses.color_pair(1))
257
+ putstr(@screen, PLAYER_CONTENT_Y + 1, PLAYER_X, 'oh,信息好像不对……', Curses.color_pair(2))
257
258
  putstr(@screen, PLAYER_CONTENT_Y + 2, PLAYER_X, '[1] 再试一次')
258
259
  putstr(@screen, PLAYER_CONTENT_Y + 3, PLAYER_X, '[2] 稍后再试')
259
- putstr(@screen, PLAYER_CONTENT_Y + 5, PLAYER_X, '请键入对应数字:', Curses.color_pair(2))
260
+ putstr(@screen, PLAYER_CONTENT_Y + 5, PLAYER_X, '请键入对应数字:', Curses.color_pair(2))
260
261
  @screen.refresh
261
262
  x = @screen.getch
262
263
  end
@@ -1,3 +1,3 @@
1
1
  module Mplug163
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mplug163
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ripple Yui
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-23 00:00:00.000000000 Z
11
+ date: 2014-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler