mikeplayer 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/MikePlayer.rb +1 -0
- data/lib/mikeplayer/playlist.rb +9 -24
- data/lib/mikeplayer/settings.rb +5 -0
- data/lib/mikeplayer/song.rb +1 -1
- data/lib/mikeplayer/version.rb +1 -1
- data/lib/mikeplayer.rb +22 -16
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6447a8b4d80be57938640f4beaa73d51e158b71a5616e4fd7867f87a1a25a792
|
4
|
+
data.tar.gz: 30b3252b18975ab2e62f8bd07d2a6021902b86c8819e7789f959cb196ddb9ae5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a93ea2bef948f0bc1fec7ae071b3549448366c5333b22182de34dd01b52b3bee5073bf06fdd0f6f5b6df709d2aaaae8b9b39d0b0730eb886748a6dd75774e6fb
|
7
|
+
data.tar.gz: 0a72819b5c7a56dd3658ed2e6b0c9872c2afb2c4885ec4f2b06f5b84c40dcddf47b22878aac7820c232592dce3a95a64fe67db698f1487c764a6fab4df4aef52
|
data/bin/MikePlayer.rb
CHANGED
@@ -21,6 +21,7 @@ OptionParser.new do |opt|
|
|
21
21
|
opt.on('-l', '--list', 'List songs in playlist.') { |o| options[:list] = true; }
|
22
22
|
opt.on('-d', '--directory name', 'Directory to find mp3s.') { |o| options[:directory] = o }
|
23
23
|
opt.on('-t', '--time minutes', 'Limit time to number of minutes.') { |o| options[:minutes] = o }
|
24
|
+
opt.on('-x', '--debug', 'Turn on debug.') { |o| options[:debug] = true }
|
24
25
|
end.parse!
|
25
26
|
|
26
27
|
MikePlayer::Player.new(options, ARGV).play
|
data/lib/mikeplayer/playlist.rb
CHANGED
@@ -5,12 +5,11 @@ module MikePlayer
|
|
5
5
|
def initialize(filename)
|
6
6
|
@filename = filename
|
7
7
|
@songs = []
|
8
|
-
@song_i = 0
|
9
8
|
@length = 0
|
10
9
|
|
11
10
|
load_songs
|
12
11
|
|
13
|
-
@loaded_song_count =
|
12
|
+
@loaded_song_count = self.size
|
14
13
|
end
|
15
14
|
|
16
15
|
def <<(song)
|
@@ -44,22 +43,8 @@ module MikePlayer
|
|
44
43
|
return self
|
45
44
|
end
|
46
45
|
|
47
|
-
def
|
48
|
-
return @songs[
|
49
|
-
end
|
50
|
-
|
51
|
-
def next
|
52
|
-
@song_i += 1
|
53
|
-
|
54
|
-
return self.current
|
55
|
-
end
|
56
|
-
|
57
|
-
def previous
|
58
|
-
@song_i -= 1
|
59
|
-
|
60
|
-
@song_i = 0 if @song_i < 0
|
61
|
-
|
62
|
-
return self.current
|
46
|
+
def get(i)
|
47
|
+
return @songs[i]
|
63
48
|
end
|
64
49
|
|
65
50
|
def shuffle!
|
@@ -79,17 +64,17 @@ module MikePlayer
|
|
79
64
|
end
|
80
65
|
|
81
66
|
def info
|
82
|
-
return "#{self.name} loaded #{@loaded_song_count} songs with length #{Song.as_duration_str(@length)}, added #{
|
67
|
+
return "#{self.name} loaded #{@loaded_song_count} songs with length #{Song.as_duration_str(@length)}, added #{self.size - @loaded_song_count}"
|
83
68
|
end
|
84
69
|
|
85
|
-
def
|
86
|
-
song_i_str = "#{
|
70
|
+
def song_info(i)
|
71
|
+
song_i_str = "#{i + 1}".rjust(self.size.to_s.size)
|
87
72
|
|
88
|
-
return "Playing (#{song_i_str}/#{
|
73
|
+
return "Playing (#{song_i_str}/#{self.size}): #{get(i).info}".freeze
|
89
74
|
end
|
90
75
|
|
91
|
-
def
|
92
|
-
return @
|
76
|
+
def size
|
77
|
+
return @songs.size
|
93
78
|
end
|
94
79
|
|
95
80
|
private
|
data/lib/mikeplayer/settings.rb
CHANGED
@@ -16,6 +16,7 @@ module MikePlayer
|
|
16
16
|
@music_dir = options[:directory] || File.join(@home, DEFAULT_DIRECTORY)
|
17
17
|
@settings_dir = options[:settings] || File.join(@home, SETTINGS_DIRECTORY)
|
18
18
|
@minutes = options[:minutes].to_i
|
19
|
+
@debug = options[:debug]
|
19
20
|
@random = options[:random].to_i
|
20
21
|
|
21
22
|
if (false == Dir.exist?(@settings_dir))
|
@@ -35,6 +36,10 @@ module MikePlayer
|
|
35
36
|
return 0 < @random
|
36
37
|
end
|
37
38
|
|
39
|
+
def debug?
|
40
|
+
return (true == @debug)
|
41
|
+
end
|
42
|
+
|
38
43
|
def overwrite?
|
39
44
|
return true == @overwrite
|
40
45
|
end
|
data/lib/mikeplayer/song.rb
CHANGED
data/lib/mikeplayer/version.rb
CHANGED
data/lib/mikeplayer.rb
CHANGED
@@ -10,7 +10,8 @@ require 'mikeplayer/song'
|
|
10
10
|
|
11
11
|
module MikePlayer
|
12
12
|
class Player
|
13
|
-
PAUSE_INDICATOR = "
|
13
|
+
PAUSE_INDICATOR = "||".freeze
|
14
|
+
INDICATOR_SIZE = 4
|
14
15
|
SLEEP_SETTING = 0.5
|
15
16
|
STOPPED = :stopped
|
16
17
|
PLAYING = :playing
|
@@ -50,19 +51,21 @@ module MikePlayer
|
|
50
51
|
puts "Mike Player v#{MikePlayer::VERSION}"
|
51
52
|
puts "Playlist #{@playlist.info}\n"
|
52
53
|
|
53
|
-
if @playlist.
|
54
|
+
if (0 == @playlist.size)
|
54
55
|
puts "No songs in playlist."
|
55
56
|
|
56
57
|
exit 1
|
57
58
|
end
|
58
59
|
|
59
60
|
@thread = Thread.new do
|
61
|
+
@song_i = 0
|
60
62
|
display_width = 0
|
61
63
|
|
62
|
-
while (
|
63
|
-
song = @playlist.
|
64
|
+
while (@song_i < @playlist.size)
|
65
|
+
song = @playlist.get(@song_i)
|
64
66
|
@song_start = Time.now
|
65
|
-
|
67
|
+
@pause_time = nil
|
68
|
+
info_prefix = "\r#{@playlist.song_info(@song_i)}".freeze
|
66
69
|
|
67
70
|
stdin, stdother, thread_info = Open3.popen2e('play', '--no-show-progress', '--volume', @settings.volume, song.filename)
|
68
71
|
|
@@ -75,10 +78,10 @@ module MikePlayer
|
|
75
78
|
pause_if_over_time_limit
|
76
79
|
|
77
80
|
if (true == playing?)
|
78
|
-
indicator = "#{'>' * (playing_time %
|
81
|
+
indicator = "#{'>' * (playing_time % INDICATOR_SIZE)}".ljust(INDICATOR_SIZE)
|
79
82
|
info_changed = true
|
80
83
|
elsif (true == paused?) && (PAUSE_INDICATOR != indicator)
|
81
|
-
indicator = PAUSE_INDICATOR
|
84
|
+
indicator = PAUSE_INDICATOR.ljust(INDICATOR_SIZE)
|
82
85
|
info_changed = true
|
83
86
|
end
|
84
87
|
|
@@ -109,8 +112,8 @@ module MikePlayer
|
|
109
112
|
|
110
113
|
@pid = nil
|
111
114
|
|
112
|
-
if (true == playing?)
|
113
|
-
next_song
|
115
|
+
if (true == playing?) && (playing_time >= (song.length - 1))
|
116
|
+
next_song
|
114
117
|
end
|
115
118
|
end
|
116
119
|
|
@@ -198,10 +201,6 @@ module MikePlayer
|
|
198
201
|
end
|
199
202
|
|
200
203
|
def stop_song
|
201
|
-
if (true == paused?)
|
202
|
-
kill("CONT")
|
203
|
-
end
|
204
|
-
|
205
204
|
kill("INT")
|
206
205
|
|
207
206
|
sleep 0.2
|
@@ -211,7 +210,6 @@ module MikePlayer
|
|
211
210
|
end
|
212
211
|
|
213
212
|
@state = STOPPED
|
214
|
-
@pid = nil
|
215
213
|
end
|
216
214
|
|
217
215
|
def pid_alive?(pid = @pid)
|
@@ -223,16 +221,20 @@ module MikePlayer
|
|
223
221
|
end
|
224
222
|
|
225
223
|
def next_song
|
224
|
+
debug('n')
|
226
225
|
stop_song
|
227
226
|
|
228
|
-
@
|
227
|
+
@song_i += 1
|
229
228
|
end
|
230
229
|
|
231
230
|
def previous_song
|
231
|
+
debug('p')
|
232
232
|
stop_song
|
233
233
|
|
234
234
|
if (playing_time < 10)
|
235
|
-
@
|
235
|
+
@song_i -= 1 unless @song_i <= 0
|
236
|
+
else
|
237
|
+
debug('x')
|
236
238
|
end
|
237
239
|
end
|
238
240
|
|
@@ -271,5 +273,9 @@ module MikePlayer
|
|
271
273
|
return (@minutes - ((Time.now - @timer_start).to_i / 60).to_i)
|
272
274
|
end
|
273
275
|
end
|
276
|
+
|
277
|
+
def debug(str)
|
278
|
+
print(str) if @settings.debug?
|
279
|
+
end
|
274
280
|
end
|
275
281
|
end
|