mplug163 0.1.0 → 0.1.1

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.
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