mikeplayer 1.1.1 → 1.1.2
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/lib/mikeplayer/play_thread.rb +12 -16
- data/lib/mikeplayer/song.rb +9 -4
- data/lib/mikeplayer/version.rb +1 -1
- data/lib/mikeplayer.rb +21 -12
- data/mikeplayer.gemspec +1 -2
- metadata +5 -22
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 75710f4741268d6bbc3c8708b626733ac02bf3dbbcaf3c8224761ddaea270ca4
|
|
4
|
+
data.tar.gz: 75fff78aa2ebfa4b4a2815a743fca6a923a4f85ee9bddf25f528167b08cdfaf0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8d20411df67b44cd5f25b4aaea1b1ab22e632eaa8505a47c3fbee652e88e75e314e42785e525cfbb97bf71876fdf4300165248d90deb0bfeaf9be1eeba459e06
|
|
7
|
+
data.tar.gz: a2877632fb5b48cb60d1eec6502f8b3d5015384c952852a47d6aace6531690b6adee4d66851e07ec29bf040d3b69139bdd5ca5d95bb4cc20c2d28ae66fbb65c2
|
|
@@ -3,11 +3,12 @@ module MikePlayer
|
|
|
3
3
|
def initialize(volume: 1.0)
|
|
4
4
|
check_system
|
|
5
5
|
|
|
6
|
-
@pid
|
|
7
|
-
@
|
|
8
|
-
@
|
|
9
|
-
@
|
|
10
|
-
@
|
|
6
|
+
@pid = nil
|
|
7
|
+
@wait_thread = nil
|
|
8
|
+
@volume = volume
|
|
9
|
+
@start_t = 0
|
|
10
|
+
@elapsed = 0
|
|
11
|
+
@paused = false
|
|
11
12
|
end
|
|
12
13
|
|
|
13
14
|
def play(file)
|
|
@@ -38,25 +39,19 @@ module MikePlayer
|
|
|
38
39
|
@elapsed += Time.now.to_i - @start_t
|
|
39
40
|
@start_t = 0
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
break unless alive?
|
|
43
|
-
|
|
44
|
-
sleep 0.1
|
|
45
|
-
end
|
|
42
|
+
@wait_thread&.join(1)
|
|
46
43
|
|
|
47
44
|
kill('KILL')
|
|
48
45
|
|
|
49
|
-
|
|
50
|
-
break unless alive?
|
|
51
|
-
|
|
52
|
-
sleep 0.1
|
|
53
|
-
end
|
|
46
|
+
@wait_thread&.join
|
|
54
47
|
|
|
55
48
|
@paused = true
|
|
56
49
|
end
|
|
57
50
|
|
|
58
51
|
def kill(signal)
|
|
59
52
|
Process.kill(signal, @pid) if alive?
|
|
53
|
+
rescue Errno::ESRCH
|
|
54
|
+
nil
|
|
60
55
|
end
|
|
61
56
|
|
|
62
57
|
def alive?
|
|
@@ -117,7 +112,8 @@ module MikePlayer
|
|
|
117
112
|
|
|
118
113
|
stdin, stdother, thread_info = Open3.popen2e(*args)
|
|
119
114
|
|
|
120
|
-
@pid
|
|
115
|
+
@pid = thread_info.pid
|
|
116
|
+
@wait_thread = thread_info
|
|
121
117
|
|
|
122
118
|
10.times do
|
|
123
119
|
break if alive?
|
data/lib/mikeplayer/song.rb
CHANGED
|
@@ -4,12 +4,17 @@ module MikePlayer
|
|
|
4
4
|
|
|
5
5
|
def initialize(filename)
|
|
6
6
|
@filename = filename
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
Mp3Info.open(filename) do |mp3info|
|
|
9
|
+
@artist = mp3info.tag.artist.to_s
|
|
10
|
+
@title = mp3info.tag.title.to_s
|
|
11
|
+
@length = mp3info.length || 0
|
|
12
|
+
end
|
|
8
13
|
end
|
|
9
14
|
|
|
10
15
|
def info
|
|
11
|
-
artist =
|
|
12
|
-
title =
|
|
16
|
+
artist = @artist
|
|
17
|
+
title = @title
|
|
13
18
|
|
|
14
19
|
if (true == artist.empty?) && (true == title.empty?)
|
|
15
20
|
return File.basename(@filename, '.mp3')
|
|
@@ -23,7 +28,7 @@ module MikePlayer
|
|
|
23
28
|
end
|
|
24
29
|
|
|
25
30
|
def length
|
|
26
|
-
return @
|
|
31
|
+
return @length
|
|
27
32
|
end
|
|
28
33
|
|
|
29
34
|
def length_str(elapsed_time)
|
data/lib/mikeplayer/version.rb
CHANGED
data/lib/mikeplayer.rb
CHANGED
|
@@ -27,6 +27,7 @@ module MikePlayer
|
|
|
27
27
|
@timer_start = Time.now if (@minutes > 0)
|
|
28
28
|
@state = STOPPED
|
|
29
29
|
@player = PlayThread.new(volume: @settings.volume)
|
|
30
|
+
@song_mutex = Mutex.new
|
|
30
31
|
|
|
31
32
|
if (true == @settings.list?)
|
|
32
33
|
@songs.map { |song| File.basename(song) }.sort.each {|song| puts "#{File.basename(song)}"}
|
|
@@ -158,27 +159,35 @@ module MikePlayer
|
|
|
158
159
|
end
|
|
159
160
|
|
|
160
161
|
def next_song
|
|
161
|
-
|
|
162
|
+
@song_mutex.synchronize do
|
|
163
|
+
return if changing?
|
|
162
164
|
|
|
163
|
-
|
|
165
|
+
debug('n')
|
|
164
166
|
|
|
165
|
-
|
|
167
|
+
@state = SONG_CHANGE
|
|
168
|
+
|
|
169
|
+
@player.stop
|
|
166
170
|
|
|
167
|
-
|
|
171
|
+
@song_i += 1
|
|
172
|
+
end
|
|
168
173
|
end
|
|
169
174
|
|
|
170
175
|
def previous_song
|
|
171
|
-
|
|
176
|
+
@song_mutex.synchronize do
|
|
177
|
+
return if changing?
|
|
172
178
|
|
|
173
|
-
|
|
179
|
+
debug('p')
|
|
174
180
|
|
|
175
|
-
|
|
176
|
-
@song_i -= 1 if @song_i.positive?
|
|
177
|
-
else
|
|
178
|
-
debug('x')
|
|
179
|
-
end
|
|
181
|
+
@state = SONG_CHANGE
|
|
180
182
|
|
|
181
|
-
|
|
183
|
+
if (@player.elapsed < 10)
|
|
184
|
+
@song_i -= 1 if @song_i.positive?
|
|
185
|
+
else
|
|
186
|
+
debug('x')
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
@player.stop
|
|
190
|
+
end
|
|
182
191
|
end
|
|
183
192
|
|
|
184
193
|
def pause_if_over_time_limit
|
data/mikeplayer.gemspec
CHANGED
|
@@ -34,6 +34,5 @@ Gem::Specification.new do |spec|
|
|
|
34
34
|
spec.add_dependency 'json', '~> 2.5'
|
|
35
35
|
spec.add_dependency 'ruby-mp3info', '~> 0.8'
|
|
36
36
|
spec.add_dependency 'minitest', '~> 5'
|
|
37
|
-
spec.add_development_dependency 'rake', '~>
|
|
38
|
-
spec.add_development_dependency 'byebug', '~> 11'
|
|
37
|
+
spec.add_development_dependency 'rake', '~> 13'
|
|
39
38
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mikeplayer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mike Crockett
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: json
|
|
@@ -58,28 +57,14 @@ dependencies:
|
|
|
58
57
|
requirements:
|
|
59
58
|
- - "~>"
|
|
60
59
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '
|
|
60
|
+
version: '13'
|
|
62
61
|
type: :development
|
|
63
62
|
prerelease: false
|
|
64
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
64
|
requirements:
|
|
66
65
|
- - "~>"
|
|
67
66
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: byebug
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - "~>"
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '11'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - "~>"
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '11'
|
|
67
|
+
version: '13'
|
|
83
68
|
description: |
|
|
84
69
|
Wraps Sox's `play` command, allowing playslists, find, random and time limit.
|
|
85
70
|
Once a song is playing you can:
|
|
@@ -113,7 +98,6 @@ homepage: https://github.com/mmcrockett/mikeplayer
|
|
|
113
98
|
licenses:
|
|
114
99
|
- MIT
|
|
115
100
|
metadata: {}
|
|
116
|
-
post_install_message:
|
|
117
101
|
rdoc_options: []
|
|
118
102
|
require_paths:
|
|
119
103
|
- lib
|
|
@@ -128,8 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
128
112
|
- !ruby/object:Gem::Version
|
|
129
113
|
version: '0'
|
|
130
114
|
requirements: []
|
|
131
|
-
rubygems_version: 3.
|
|
132
|
-
signing_key:
|
|
115
|
+
rubygems_version: 3.6.9
|
|
133
116
|
specification_version: 4
|
|
134
117
|
summary: Wraps Sox's `play` command, allowing playslists, find, random and time limit.
|
|
135
118
|
test_files: []
|