easy_mplayer 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/easy_mplayer.gemspec +2 -2
- data/lib/easy_mplayer/main.rb +0 -13
- data/lib/easy_mplayer/worker.rb +31 -17
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.0
|
data/easy_mplayer.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{easy_mplayer}
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Brent Sanders"]
|
12
|
-
s.date = %q{2010-01-
|
12
|
+
s.date = %q{2010-01-10}
|
13
13
|
s.description = %q{A wrapper to manage mplayer, that supports callbacks to easily support event-driven GUIs}
|
14
14
|
s.email = %q{gem-mplayer@thoughtnoise.net}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/easy_mplayer/main.rb
CHANGED
@@ -4,7 +4,6 @@ class MPlayer
|
|
4
4
|
:program => '/usr/bin/mplayer',
|
5
5
|
:message_style => :info,
|
6
6
|
:seek_size => 10,
|
7
|
-
:select_wait_time => 1,
|
8
7
|
:thread_safe_callbacks => true
|
9
8
|
}
|
10
9
|
|
@@ -59,8 +58,6 @@ class MPlayer
|
|
59
58
|
# :seek_size Time, in seconds, to seek
|
60
59
|
# forwards/reverse by default (default:
|
61
60
|
# 10 seconds)
|
62
|
-
# :select_wait_time Time, in seconds, for blocking on
|
63
|
-
# IO.select in the worker threads (default: 1)
|
64
61
|
# :thread_safe_callbacks If we should buffer callbacks back to
|
65
62
|
# the main thread, so they are called off
|
66
63
|
# the #playing? polling-loop (default: true)
|
@@ -91,16 +88,6 @@ class MPlayer
|
|
91
88
|
stop!
|
92
89
|
end
|
93
90
|
|
94
|
-
callback :played_time do |played_time|
|
95
|
-
update_stat :played_seconds, played_time.to_i
|
96
|
-
total = stats[:total_time]
|
97
|
-
if total and total != 0.0
|
98
|
-
pos = (100 * played_time / total)
|
99
|
-
update_stat :raw_position, pos
|
100
|
-
update_stat :position, pos.to_i
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
91
|
callback :startup do
|
105
92
|
callback! :play
|
106
93
|
end
|
data/lib/easy_mplayer/worker.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'fcntl'
|
2
|
+
|
1
3
|
class MPlayer
|
2
4
|
class Worker # :nodoc:all
|
3
5
|
include ColorDebugMessages
|
@@ -18,9 +20,17 @@ class MPlayer
|
|
18
20
|
:re => /^ICY Info: StreamTitle='(.*?)';StreamUrl='(.*?)';/,
|
19
21
|
:stat => [:stream_title, :stream_url]
|
20
22
|
},
|
21
|
-
:
|
22
|
-
:re => /^
|
23
|
-
:stat => [:
|
23
|
+
:position_percent => {
|
24
|
+
:re => /^ANS_PERCENT_POSITION=(\d+[.0-9]*)/,
|
25
|
+
:stat => [:position]
|
26
|
+
},
|
27
|
+
:position_seconds => {
|
28
|
+
:re => /^ANS_TIME_POSITION=(\d+[.0-9]*)/,
|
29
|
+
:stat => [:played_seconds]
|
30
|
+
},
|
31
|
+
:total_time => {
|
32
|
+
:re => /^ANS_LENGTH=(\d+[.0-9]*)/,
|
33
|
+
:stat => [:total_time]
|
24
34
|
},
|
25
35
|
:audio_info => {
|
26
36
|
:re => /^AUDIO: (\d+) Hz, (\d+) ch, (\S+), ([0-9.]+) kbit/,
|
@@ -131,28 +141,24 @@ class MPlayer
|
|
131
141
|
end
|
132
142
|
end
|
133
143
|
|
134
|
-
def process_line
|
135
|
-
# debug "LINE> \"#{
|
136
|
-
send "process_#{@type}",
|
137
|
-
# callback! @type,
|
138
|
-
@line = ''
|
144
|
+
def process_line(line)
|
145
|
+
# debug "LINE> \"#{line}\""
|
146
|
+
send "process_#{@type}", line
|
147
|
+
# callback! @type, line
|
139
148
|
end
|
140
149
|
|
141
150
|
def process_stream
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
return stream_error(:eof) if c.nil?
|
147
|
-
|
148
|
-
@line << c
|
149
|
-
process_line if c == "\n" or c == "\r"
|
151
|
+
lines = @io.gets("\r") or return stream_error(:eof)
|
152
|
+
lines.split(/\n/).each do |line|
|
153
|
+
process_line(line.chomp)
|
154
|
+
end
|
150
155
|
end
|
151
|
-
|
156
|
+
|
152
157
|
def run
|
153
158
|
@thread = Thread.new do
|
154
159
|
@alive = true
|
155
160
|
begin
|
161
|
+
# @io.fcntl(Fcntl::F_SETFL,Fcntl::O_NONBLOCK)
|
156
162
|
debug "start"
|
157
163
|
process_stream while @alive
|
158
164
|
debug "clean end!"
|
@@ -216,6 +222,7 @@ class MPlayer
|
|
216
222
|
|
217
223
|
def cmdline(target = parent.opts[:path])
|
218
224
|
cmd = "#{parent.opts[:program]} -slave "
|
225
|
+
cmd += "-wid #{parent.opts[:embed]} " if parent.opts[:embed]
|
219
226
|
cmd += "-playlist " if target=~ /\.m3u$/
|
220
227
|
cmd += target.to_s
|
221
228
|
end
|
@@ -298,6 +305,7 @@ class MPlayer
|
|
298
305
|
end
|
299
306
|
|
300
307
|
def ok?
|
308
|
+
get_position
|
301
309
|
dispatch_callbacks
|
302
310
|
err = nil
|
303
311
|
lock! do
|
@@ -322,7 +330,13 @@ class MPlayer
|
|
322
330
|
@io_stdin = nil
|
323
331
|
end
|
324
332
|
|
333
|
+
def get_position
|
334
|
+
send_command :get_time_pos
|
335
|
+
send_command :get_percent_pos
|
336
|
+
end
|
337
|
+
|
325
338
|
def startup!
|
339
|
+
send_command :get_time_length
|
326
340
|
@parent.callback! :startup
|
327
341
|
end
|
328
342
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_mplayer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brent Sanders
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-10 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|