mikeplayer 1.1.0 → 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 +21 -19
- 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?
|
|
@@ -88,11 +83,17 @@ module MikePlayer
|
|
|
88
83
|
end
|
|
89
84
|
|
|
90
85
|
def self.cmd_exist?(cmd)
|
|
91
|
-
if
|
|
92
|
-
|
|
86
|
+
if @test_cmd.nil?
|
|
87
|
+
if system('command')
|
|
88
|
+
@test_cmd = 'command -v'
|
|
89
|
+
elsif system('bash -c "command"')
|
|
90
|
+
@test_cmd = 'bash -c "command -v"'
|
|
91
|
+
else
|
|
92
|
+
raise "Missing 'command' command, which is used to test compatibility."
|
|
93
|
+
end
|
|
93
94
|
end
|
|
94
95
|
|
|
95
|
-
if (true != system("
|
|
96
|
+
if (true != system("#{@test_cmd} #{cmd} >/dev/null 2>&1"))
|
|
96
97
|
return false
|
|
97
98
|
end
|
|
98
99
|
|
|
@@ -111,7 +112,8 @@ module MikePlayer
|
|
|
111
112
|
|
|
112
113
|
stdin, stdother, thread_info = Open3.popen2e(*args)
|
|
113
114
|
|
|
114
|
-
@pid
|
|
115
|
+
@pid = thread_info.pid
|
|
116
|
+
@wait_thread = thread_info
|
|
115
117
|
|
|
116
118
|
10.times do
|
|
117
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: []
|