playa 0.0.11 → 0.0.12
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 +4 -4
- data/Gemfile +4 -0
- data/README.md +2 -2
- data/lib/playa.rb +20 -5
- data/lib/playa/controller.rb +46 -10
- data/lib/playa/helpers.rb +22 -0
- data/lib/playa/views/help_view.rb +11 -0
- data/lib/playa/views/playlist_view.rb +71 -4
- data/lib/playa/views/progress_view.rb +6 -9
- data/lib/playa/views/startup_view.rb +23 -0
- data/lib/playa/views/status_view.rb +1 -1
- data/playa.gemspec +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61b17361d49a438953990aef19248ce27bdeda1c
|
4
|
+
data.tar.gz: 4bd50d9e494bfa86021b47b24a955bcba9e5b9ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51ea45f264d1273c7368f6c53144ab0adc7911017fdccbf26ae4c81ad62bd7071d82c544f86f75278446dca66c7a0e6edbfca5a86370ab65894b816ed1f90817
|
7
|
+
data.tar.gz: 6484d655d7d6eeac01ab527205e8eca41192f25ae13b739c16cb335f4a3f7adb90c6f649b01f0ad017910ffd03d3662092a96b03aa146755ce308de968c8dcc7
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -40,7 +40,7 @@ or, specify a directory to play from:
|
|
40
40
|
|
41
41
|
## Contributing
|
42
42
|
|
43
|
-
1. Fork it (
|
43
|
+
1. Fork it ( http://github.com/gavinlaking/playa/fork )
|
44
44
|
2. Clone it
|
45
45
|
3. `bundle`
|
46
46
|
4. `rake` or `bundle exec guard`
|
@@ -48,4 +48,4 @@ or, specify a directory to play from:
|
|
48
48
|
6. Write some tests, write some code, have some fun
|
49
49
|
7. Commit your changes (`git commit -am 'Add some feature'`)
|
50
50
|
8. Push to the branch (`git push origin my-new-feature`)
|
51
|
-
9. Create a new
|
51
|
+
9. Create a new pull request
|
data/lib/playa.rb
CHANGED
@@ -10,12 +10,22 @@ module Playa
|
|
10
10
|
class Application
|
11
11
|
include Vedeu
|
12
12
|
|
13
|
-
|
13
|
+
interface 'help' do
|
14
|
+
centred true
|
15
|
+
colour foreground: '#ffffff', background: '#000000'
|
16
|
+
cursor false
|
17
|
+
group 'help'
|
18
|
+
height 9
|
19
|
+
width 60
|
20
|
+
end
|
21
|
+
|
22
|
+
interface 'playlist' do
|
14
23
|
colour foreground: '#afd700', background: '#000000'
|
15
24
|
cursor false
|
16
25
|
width 60
|
17
26
|
height 5
|
18
27
|
centred true
|
28
|
+
group 'player'
|
19
29
|
end
|
20
30
|
|
21
31
|
interface 'progress' do
|
@@ -23,10 +33,11 @@ module Playa
|
|
23
33
|
cursor false
|
24
34
|
width 60
|
25
35
|
height 1
|
26
|
-
y playlist.north(2)
|
27
|
-
x playlist.left
|
36
|
+
y use('playlist').north(2)
|
37
|
+
x use('playlist').left
|
28
38
|
centred false
|
29
39
|
delay 1.0
|
40
|
+
group 'player'
|
30
41
|
end
|
31
42
|
|
32
43
|
interface 'status' do
|
@@ -34,15 +45,19 @@ module Playa
|
|
34
45
|
cursor false
|
35
46
|
width 60
|
36
47
|
height 1
|
37
|
-
y playlist.south(1)
|
38
|
-
x playlist.left
|
48
|
+
y use('playlist').south(1)
|
49
|
+
x use('playlist').left
|
39
50
|
centred false
|
51
|
+
group 'player'
|
40
52
|
end
|
41
53
|
|
42
54
|
def self.start(args = [])
|
43
55
|
Controller.new(args)
|
44
56
|
|
45
57
|
Vedeu::Launcher.new(args).execute!
|
58
|
+
rescue Errno::EMFILE
|
59
|
+
puts "Playa does not support this number of files."
|
60
|
+
puts "Please see https://github.com/gavinlaking/playa/issues/11"
|
46
61
|
end
|
47
62
|
end
|
48
63
|
end
|
data/lib/playa/controller.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
require 'playa/views/help_view'
|
1
2
|
require 'playa/views/playlist_view'
|
2
3
|
require 'playa/views/progress_view'
|
3
4
|
require 'playa/views/status_view'
|
5
|
+
require 'playa/views/startup_view'
|
4
6
|
|
5
7
|
module Playa
|
6
8
|
class Controller
|
@@ -9,6 +11,36 @@ module Playa
|
|
9
11
|
def initialize(args = [])
|
10
12
|
@player = Player.new
|
11
13
|
|
14
|
+
event :_initialize_ do
|
15
|
+
trigger(:show_startup)
|
16
|
+
end
|
17
|
+
|
18
|
+
event :show_startup do
|
19
|
+
trigger(:_clear_)
|
20
|
+
|
21
|
+
StartupView.render
|
22
|
+
|
23
|
+
trigger(:_refresh_group_player_)
|
24
|
+
end
|
25
|
+
|
26
|
+
event :show_help do
|
27
|
+
trigger(:_clear_)
|
28
|
+
|
29
|
+
HelpView.render
|
30
|
+
|
31
|
+
trigger(:_refresh_help_)
|
32
|
+
end
|
33
|
+
|
34
|
+
event :show_player do
|
35
|
+
trigger(:_clear_)
|
36
|
+
|
37
|
+
PlaylistView.render(menu)
|
38
|
+
StatusView.render
|
39
|
+
ProgressView.render(@player)
|
40
|
+
|
41
|
+
trigger(:_refresh_group_player_)
|
42
|
+
end
|
43
|
+
|
12
44
|
event :update do
|
13
45
|
PlaylistView.render(menu)
|
14
46
|
trigger(:_refresh_playlist_)
|
@@ -32,26 +64,30 @@ module Playa
|
|
32
64
|
|
33
65
|
event :key do |key|
|
34
66
|
case key
|
35
|
-
when :left then trigger(:rewind)
|
36
|
-
when :right then trigger(:forward)
|
67
|
+
when :left, 'h' then trigger(:rewind)
|
68
|
+
when :right, 'l' then trigger(:forward)
|
37
69
|
when ' ' then trigger(:toggle)
|
38
|
-
when :up
|
39
|
-
|
40
|
-
|
70
|
+
when :up, 'k' then
|
71
|
+
trigger(:menu_prev)
|
72
|
+
trigger(:update)
|
73
|
+
when :down, 'j' then
|
74
|
+
trigger(:menu_next)
|
75
|
+
trigger(:update)
|
76
|
+
when '?' then trigger(:show_help)
|
77
|
+
when 'p', 's' then trigger(:show_player)
|
78
|
+
when 'q' then trigger(:_exit_)
|
41
79
|
when :enter
|
42
80
|
trigger(:menu_select)
|
43
81
|
trigger(:select, menu.current_item)
|
82
|
+
trigger(:update)
|
44
83
|
end
|
45
|
-
trigger(:update)
|
46
84
|
end
|
47
85
|
|
48
86
|
@player.events.on(:position_change) { trigger(:progress_update) }
|
49
87
|
@player.events.on(:complete) { trigger(:complete) }
|
50
88
|
|
51
|
-
@args
|
52
|
-
|
53
|
-
@status_view = StatusView.render
|
54
|
-
@progress_view = ProgressView.render(@player)
|
89
|
+
@args = args
|
90
|
+
trigger(:show_startup)
|
55
91
|
end
|
56
92
|
|
57
93
|
private
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Playa
|
2
|
+
module Helpers
|
3
|
+
def duration(track)
|
4
|
+
human(track.duration.ceil)
|
5
|
+
end
|
6
|
+
|
7
|
+
def remaining(track, player)
|
8
|
+
human((track.duration - player.counter).floor)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def human(seconds)
|
14
|
+
mm, ss = seconds.divmod(60)
|
15
|
+
hh, mm = mm.divmod(60)
|
16
|
+
mins = mm.to_s.rjust(2, '0')
|
17
|
+
secs = ss.to_s.rjust(2, '0')
|
18
|
+
|
19
|
+
[mins, secs].join(":")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -1,23 +1,90 @@
|
|
1
|
+
require 'playa/helpers'
|
2
|
+
|
1
3
|
module Playa
|
2
4
|
class PlaylistView < Vedeu::View
|
5
|
+
include Playa::Helpers
|
6
|
+
|
3
7
|
def output
|
4
8
|
view 'playlist' do
|
5
9
|
self.object.view.each do |sel, cur, item|
|
6
10
|
if sel && cur
|
7
|
-
line
|
11
|
+
line do
|
12
|
+
stream do
|
13
|
+
width title_width(item)
|
14
|
+
text "\u{25B6}> #{item.title}"
|
15
|
+
end
|
16
|
+
|
17
|
+
stream do
|
18
|
+
width timer_width(item)
|
19
|
+
text "#{timer(item)}"
|
20
|
+
align :right
|
21
|
+
end
|
22
|
+
end
|
8
23
|
|
9
24
|
elsif cur
|
10
|
-
line
|
25
|
+
line do
|
26
|
+
stream do
|
27
|
+
width title_width(item)
|
28
|
+
text " > #{item.title}"
|
29
|
+
end
|
30
|
+
|
31
|
+
stream do
|
32
|
+
width timer_width(item)
|
33
|
+
text "#{timer(item)}"
|
34
|
+
align :right
|
35
|
+
end
|
36
|
+
end
|
11
37
|
|
12
38
|
elsif sel
|
13
|
-
line
|
39
|
+
line do
|
40
|
+
stream do
|
41
|
+
width title_width(item)
|
42
|
+
text "\u{25B6} #{item.title}"
|
43
|
+
end
|
44
|
+
|
45
|
+
stream do
|
46
|
+
width timer_width(item)
|
47
|
+
text "#{timer(item)}"
|
48
|
+
align :right
|
49
|
+
end
|
50
|
+
end
|
14
51
|
|
15
52
|
else
|
16
|
-
line
|
53
|
+
line do
|
54
|
+
stream do
|
55
|
+
width title_width(item)
|
56
|
+
text " #{item.title}"
|
57
|
+
end
|
58
|
+
|
59
|
+
stream do
|
60
|
+
width timer_width(item)
|
61
|
+
text "#{timer(item)}"
|
62
|
+
align :right
|
63
|
+
end
|
64
|
+
end
|
17
65
|
|
18
66
|
end
|
19
67
|
end
|
20
68
|
end
|
21
69
|
end
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
def title_width(item)
|
74
|
+
view_width - timer_width(item) - 1
|
75
|
+
end
|
76
|
+
|
77
|
+
def timer_width(item)
|
78
|
+
timer(item).size + 1
|
79
|
+
end
|
80
|
+
|
81
|
+
def timer(item)
|
82
|
+
duration(item)
|
83
|
+
end
|
84
|
+
|
85
|
+
def view_width
|
86
|
+
@_width ||= Vedeu.use('playlist').width
|
87
|
+
end
|
88
|
+
|
22
89
|
end
|
23
90
|
end
|
@@ -1,5 +1,9 @@
|
|
1
|
+
require 'playa/helpers'
|
2
|
+
|
1
3
|
module Playa
|
2
4
|
class ProgressView < Vedeu::View
|
5
|
+
include Playa::Helpers
|
6
|
+
|
3
7
|
def output
|
4
8
|
if object.track
|
5
9
|
track_loaded
|
@@ -53,18 +57,11 @@ module Playa
|
|
53
57
|
end
|
54
58
|
|
55
59
|
def timer
|
56
|
-
remaining
|
57
|
-
mm, ss = remaining.divmod(60)
|
58
|
-
hh, mm = mm.divmod(60)
|
59
|
-
mins = mm.to_s.rjust(2, '0')
|
60
|
-
secs = ss.to_s.rjust(2, '0')
|
61
|
-
|
62
|
-
[mins, secs].join(":")
|
60
|
+
remaining(object.track, object)
|
63
61
|
end
|
64
62
|
|
65
|
-
# TODO: playa knows too much here...
|
66
63
|
def view_width
|
67
|
-
@_width ||= Vedeu.
|
64
|
+
@_width ||= Vedeu.use('progress').width
|
68
65
|
end
|
69
66
|
end
|
70
67
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Playa
|
2
|
+
class StartupView < Vedeu::View
|
3
|
+
def output
|
4
|
+
views do
|
5
|
+
view 'progress' do
|
6
|
+
line do
|
7
|
+
text 'Welcome to Playa.'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
view 'playlist' do
|
11
|
+
line do
|
12
|
+
text 'An mp3 player in your console.'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
view 'status' do
|
16
|
+
line do
|
17
|
+
text 'Press `s` to begin.'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/playa.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'playa'
|
7
|
-
spec.version = '0.0.
|
7
|
+
spec.version = '0.0.12'
|
8
8
|
spec.authors = ['Gavin Laking']
|
9
9
|
spec.email = ['gavinlaking@gmail.com']
|
10
10
|
spec.summary = 'Plays mp3s from a directory.'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Laking
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-08-
|
11
|
+
date: 2014-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -196,11 +196,14 @@ files:
|
|
196
196
|
- bin/playa
|
197
197
|
- lib/playa.rb
|
198
198
|
- lib/playa/controller.rb
|
199
|
+
- lib/playa/helpers.rb
|
199
200
|
- lib/playa/player.rb
|
200
201
|
- lib/playa/track.rb
|
201
202
|
- lib/playa/track_collection.rb
|
203
|
+
- lib/playa/views/help_view.rb
|
202
204
|
- lib/playa/views/playlist_view.rb
|
203
205
|
- lib/playa/views/progress_view.rb
|
206
|
+
- lib/playa/views/startup_view.rb
|
204
207
|
- lib/playa/views/status_view.rb
|
205
208
|
- playa.gemspec
|
206
209
|
- screenshot.png
|