sensible-cinema 0.7.4 → 0.7.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README +8 -5
- data/Rakefile +1 -1
- data/TODO +10 -2
- data/VERSION +1 -1
- data/bin/sensible-cinema +2 -0
- data/lib/overlayer.rb +4 -2
- data/lib/screen_tracker.rb +36 -21
- data/spec/overlayer.spec.rb +20 -7
- data/spec/screen_tracker.spec.rb +47 -27
- data/zamples/scene_lists/labyrinth.yml +16 -0
- metadata +232 -213
data/README
CHANGED
@@ -100,14 +100,15 @@ Q. Can I watch movies this way on my TV, not just on my computer?
|
|
100
100
|
|
101
101
|
A. Not yet. And maybe. Currently you'll either need to attach your computer to your TV
|
102
102
|
(buy some long cables, or a new graphics card, etc.) or get some computer that you can move closer to the TV and do the same
|
103
|
-
(ex: buy a used older laptop with s-video out, use that).
|
103
|
+
(ex: buy a used older laptop with s-video out, use that). If you're really aggressive you
|
104
|
+
could run an ethernet cable from your computer, as well [1].
|
104
105
|
I'd be happy to do a linux port of sensible-cinema if anybody requests it for their dedicated TV computer.
|
105
106
|
There has also been some work toward getting your computer to stream "live" to your wii/ps3/xbox.
|
106
107
|
github message me if you're interested in trying it out!
|
107
108
|
|
108
109
|
Q. What movies does this work with?
|
109
110
|
|
110
|
-
A. Any that you program it for
|
111
|
+
A. Any that you program it for :) (Assuming the player is compatible, which most probably are.)
|
111
112
|
|
112
113
|
Q. What movies are freely available to watch online?
|
113
114
|
|
@@ -119,13 +120,15 @@ Q. Why does my mouse bounce up and down while sensible-cinema is going?
|
|
119
120
|
A. This enables your player to keep its on-screen time tracker, which in turn allows sensible-cinema to track where
|
120
121
|
you're at. Message me if this bugs you too much and we'll see what we can do for it.
|
121
122
|
|
122
|
-
Q. Why does it seem really laggy at
|
123
|
+
Q. Why does it seem really laggy at time detection at the beginning?
|
123
124
|
|
124
125
|
A. It takes it awhile to warm up its digit detection. Ping me if you would like to see this improved speed-wise.
|
125
126
|
|
127
|
+
[1] http://ps3mediaserver.org/forum/viewtopic.php?f=6&t=5731#p34279
|
128
|
+
|
126
129
|
== Thanks ==
|
127
130
|
|
128
|
-
Thanks to Jarmo for the win32-screenshot gem,
|
131
|
+
Thanks to Jarmo for the win32-screenshot gem, the mini_magick gem authors, jruby guys, etc.
|
129
132
|
Made programming this actually somewhat a pleasure.
|
130
133
|
|
131
134
|
== License ==
|
@@ -135,7 +138,7 @@ See the LICENSE file for licensing, usage terms (gplv3).
|
|
135
138
|
== Related ==
|
136
139
|
|
137
140
|
http://imdb.com tends to have reasonably good lists of what occurs in movies (find a movie, click on "parent's guide" on the left).
|
138
|
-
Sometimes it even lists the time signatures for events
|
141
|
+
Sometimes it even lists the time signatures for events (ex: "Labyrinth" http://www.imdb.com/title/tt0047673/parentalguide)
|
139
142
|
which you could use to translate into a sensible-cinema compatible list.
|
140
143
|
|
141
144
|
== Feedback ==
|
data/Rakefile
CHANGED
@@ -12,7 +12,7 @@ Jeweler::Tasks.new do |s|
|
|
12
12
|
s.add_dependency 'mini_magick' # ocr
|
13
13
|
s.add_development_dependency 'hitimes' # now jruby compat. yea!
|
14
14
|
s.add_dependency 'sane', '>= 0.22.0'
|
15
|
-
s.add_dependency '
|
15
|
+
s.add_dependency 'win32screenshot', '>= 0.0.6'
|
16
16
|
s.extensions = ["ext/mkrf_conf.rb"]
|
17
17
|
end
|
18
18
|
|
data/TODO
CHANGED
@@ -4,19 +4,23 @@
|
|
4
4
|
|
5
5
|
release ruby-y-y why not, it's interesting
|
6
6
|
"Linux compat anyone?"
|
7
|
-
utube nuki
|
7
|
+
utube nuki (xp?)
|
8
8
|
generations first profanidade...
|
9
9
|
|
10
10
|
== random backlog ... based on user request..remember: just local files for my own needs...==
|
11
11
|
|
12
12
|
blank overlay "and you are one awesome klingon"
|
13
13
|
|
14
|
+
bump win32-screenshot version
|
15
|
+
|
14
16
|
screencast of something helpful.
|
15
17
|
|
16
18
|
optimize imdb: http://www.imdb.com/board/bd0000042/thread/58361958?d=58361958, english friendlier url's
|
17
19
|
|
18
20
|
bundle fewer imagemagick binaries
|
19
21
|
|
22
|
+
TSR that monitors "oh you're opening VLC? you're playing the E drive? That's bob's big plan? You're maximized? Full screened? watching x on hulu?"
|
23
|
+
|
20
24
|
just plow forward, to "grab" available ideas...
|
21
25
|
|
22
26
|
netflix
|
@@ -59,10 +63,12 @@ new github username
|
|
59
63
|
|
60
64
|
replay parts
|
61
65
|
|
62
|
-
overlay/replace with some url of audio or video
|
66
|
+
overlay/replace current playback with some url of audio or video
|
67
|
+
user editable overlays (like a wiki...)
|
63
68
|
|
64
69
|
control volume programmatically (using mouse) on the player itself.
|
65
70
|
control mute programmatically (using mouse) on the player itself.
|
71
|
+
control location programmatically (using mouse) on the player itself.
|
66
72
|
|
67
73
|
overlay alpha transparent pic
|
68
74
|
|
@@ -75,6 +81,8 @@ user customizable levels...
|
|
75
81
|
|
76
82
|
user-assignable "confidence" (how much time to 'wrap' surround the mutes, etc. to accomodate for slow computers/laggy internet/different players/poor input)
|
77
83
|
|
84
|
+
|
85
|
+
|
78
86
|
auto-assignment of EDL's to media:
|
79
87
|
DVD's (right click...)
|
80
88
|
web browser plugin?
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.5
|
data/bin/sensible-cinema
CHANGED
data/lib/overlayer.rb
CHANGED
@@ -50,10 +50,12 @@ class OverLayer
|
|
50
50
|
reload_yaml!
|
51
51
|
@file_mtime = current_mtime
|
52
52
|
else
|
53
|
-
p 'same mtime:', @file_mtime if $DEBUG && $VERBOSE
|
53
|
+
#p 'same mtime:', @file_mtime if $DEBUG && $VERBOSE
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
+
attr_accessor :all_sequences
|
58
|
+
|
57
59
|
def reload_yaml!
|
58
60
|
@all_sequences = OverLayer.translate_yaml(File.read(@filename))
|
59
61
|
# LTODO... @all_sequences = @all_sequences.map{|k, v| v.sort!} etc. and validate...
|
@@ -319,7 +321,7 @@ class OverLayer
|
|
319
321
|
time_till_next_mute_starts = next_point - cur_time
|
320
322
|
end
|
321
323
|
|
322
|
-
|
324
|
+
# pps 'sleeping until next action (%s) begins in %fs (%f) %f' % [next_point, time_till_next_mute_starts, Time.now_f, cur_time] if $VERBOSE
|
323
325
|
|
324
326
|
@cv.wait(@mutex, time_till_next_mute_starts) if time_till_next_mute_starts > 0
|
325
327
|
set_states!
|
data/lib/screen_tracker.rb
CHANGED
@@ -13,29 +13,17 @@ class ScreenTracker
|
|
13
13
|
return new(settings["name"], settings["x"], settings["y"], settings["width"], settings["height"], digits, callback)
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
attr_accessor :hwnd
|
17
|
+
|
18
|
+
# digits are like {:hours => [100,5], :minute_tens, :minute_ones, :second_tens, :second_ones}
|
19
|
+
# digits share the height start point, have their own x and width...
|
18
20
|
def initialize name_or_regex,x,y,width,height,digits=nil,callback=nil
|
19
21
|
# cache to save us 0.00445136 per time LOL
|
20
|
-
|
21
|
-
|
22
|
-
@hwnd = hwnd = Win32::Screenshot::BitmapMaker.desktop_window
|
23
|
-
else
|
24
|
-
@hwnd = Win32::Screenshot::BitmapMaker.hwnd(name_or_regex)
|
25
|
-
end
|
26
|
-
unless @hwnd
|
27
|
-
print 'perhaps not running yet? [%s] START IT FAST' % name_or_regex
|
28
|
-
until @hwnd
|
29
|
-
sleep 4
|
30
|
-
print ' trying again .'
|
31
|
-
STDOUT.flush
|
32
|
-
@hwnd = Win32::Screenshot::BitmapMaker.hwnd(name_or_regex)
|
33
|
-
end
|
34
|
-
puts 'found window'
|
35
|
-
end
|
22
|
+
@name_or_regex = name_or_regex
|
23
|
+
get_hwnd
|
36
24
|
pps 'height', height, 'width', width if $VERBOSE
|
37
25
|
raise 'poor dimentia' if width <= 0 || height <= 0
|
38
|
-
|
26
|
+
max_x, max_y = Win32::Screenshot::Util.dimensions_for(@hwnd)
|
39
27
|
if(x < 0 || y < 0)
|
40
28
|
if x < 0
|
41
29
|
x = max_x + x
|
@@ -53,6 +41,26 @@ class ScreenTracker
|
|
53
41
|
pps 'using x',@x, 'from x', x, 'y', @y, 'from y', y,'x2',@x2,'y2',@y2,'digits', @digits if $VERBOSE
|
54
42
|
end
|
55
43
|
|
44
|
+
def get_hwnd
|
45
|
+
if @name_or_regex.to_s.downcase == 'desktop'
|
46
|
+
# full screen option
|
47
|
+
@hwnd = hwnd = Win32::Screenshot::BitmapMaker.desktop_window
|
48
|
+
else
|
49
|
+
@hwnd = Win32::Screenshot::BitmapMaker.hwnd(@name_or_regex)
|
50
|
+
end
|
51
|
+
unless @hwnd
|
52
|
+
print 'perhaps not running yet? [%s] START IT FAST' % @name_or_regex
|
53
|
+
until @hwnd
|
54
|
+
sleep 4
|
55
|
+
print ' trying again .'
|
56
|
+
STDOUT.flush
|
57
|
+
@hwnd = Win32::Screenshot::BitmapMaker.hwnd(@name_or_regex)
|
58
|
+
end
|
59
|
+
puts 'found window'
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
56
64
|
def get_bmp
|
57
65
|
# Note: we no longer bring the window to the front tho...which it needs to be in both XP and Vista to work...sigh.
|
58
66
|
Win32::Screenshot::BitmapMaker.capture_area(@hwnd,@x,@y,@x2,@y2) {|h,w,bmp| return bmp}
|
@@ -104,18 +112,24 @@ class ScreenTracker
|
|
104
112
|
end
|
105
113
|
|
106
114
|
def wait_till_next_change
|
115
|
+
# dies in jruby currently...sigh...get_hwnd # reget it, just in case...
|
107
116
|
original = get_bmp
|
117
|
+
time_since_last = Time.now
|
108
118
|
loop {
|
109
119
|
current = get_bmp
|
110
120
|
if current != original
|
111
121
|
if @digits
|
112
122
|
return attempt_to_get_time_from_screen
|
113
123
|
else
|
114
|
-
puts 'screen time change only detected...'
|
124
|
+
puts 'screen time change only detected...'
|
115
125
|
end
|
116
126
|
return
|
117
127
|
end
|
118
128
|
sleep 0.02
|
129
|
+
if(Time.now - time_since_last > 5)
|
130
|
+
p 'warning--unable to track for some reason--may need to restart sensible-cinema'
|
131
|
+
time_since_last = Time.now
|
132
|
+
end
|
119
133
|
}
|
120
134
|
end
|
121
135
|
|
@@ -132,12 +146,13 @@ class ScreenTracker
|
|
132
146
|
@a ||= 1
|
133
147
|
@a += 1
|
134
148
|
p 'unable to identify digit!' + type.to_s + @a.to_s
|
135
|
-
File.binwrite("bad_digit#{@a}#{type}.bmp", digits[type])
|
149
|
+
File.binwrite("bad_digit#{@a}#{type}.bmp", digits[type]) unless type == :hours
|
136
150
|
end
|
137
151
|
if type == :hours
|
138
152
|
digit = 0 # this one can fail in VLC
|
139
153
|
else
|
140
154
|
# early return
|
155
|
+
p 'identity failure' if $VERBOSE
|
141
156
|
return
|
142
157
|
end
|
143
158
|
end
|
data/spec/overlayer.spec.rb
CHANGED
@@ -96,7 +96,7 @@ describe OverLayer do
|
|
96
96
|
o.continue_until_past_all false
|
97
97
|
end
|
98
98
|
|
99
|
-
it 'should be able to go past the end'
|
99
|
+
it 'should be able to go past the end' # ??
|
100
100
|
|
101
101
|
it 'should allow you to change the current time' do
|
102
102
|
@o.start_thread
|
@@ -189,12 +189,24 @@ describe OverLayer do
|
|
189
189
|
end
|
190
190
|
|
191
191
|
it "should not accept the input when you pass it poor yaml" do
|
192
|
-
|
192
|
+
write_yaml <<-YAML
|
193
193
|
:mutes:
|
194
194
|
a : 08:56.0 # first one there is invalid
|
195
195
|
YAML
|
196
|
-
out = OverLayer.
|
197
|
-
out[:mutes].should be_blank
|
196
|
+
out = OverLayer.new 'temp.yml'
|
197
|
+
out.all_sequences[:mutes].should be_blank
|
198
|
+
write_yaml <<-YAML
|
199
|
+
:mutes:
|
200
|
+
01 : 02
|
201
|
+
YAML
|
202
|
+
out.reload_yaml!
|
203
|
+
out.all_sequences[:mutes].should_not be_blank
|
204
|
+
write_yaml <<-YAML
|
205
|
+
:mutes:
|
206
|
+
01 : # failure
|
207
|
+
YAML
|
208
|
+
# should have kept the old
|
209
|
+
out.all_sequences[:mutes].should_not be_blank
|
198
210
|
end
|
199
211
|
|
200
212
|
it "should not accept zero start input" do
|
@@ -253,7 +265,8 @@ describe OverLayer do
|
|
253
265
|
out = OverLayer.translate_yaml ""
|
254
266
|
out[:mutes].should be_blank
|
255
267
|
end
|
256
|
-
|
268
|
+
|
269
|
+
|
257
270
|
it "should translate strings as well as symbols" do
|
258
271
|
yaml = <<-YAML
|
259
272
|
mutes:
|
@@ -261,13 +274,13 @@ describe OverLayer do
|
|
261
274
|
YAML
|
262
275
|
out = OverLayer.translate_yaml yaml
|
263
276
|
out[:mutes].should == [[1, 3]]
|
277
|
+
|
264
278
|
end
|
265
279
|
|
266
280
|
it "should disallow zero or less length intervals"
|
267
281
|
it "should disallow non-sorted intervals"
|
268
282
|
it 'should reject overlapping settings...I guess'
|
269
|
-
|
270
|
-
|
283
|
+
|
271
284
|
it "should allow for 1:01:00.0 (double colon) style yaml input" do
|
272
285
|
write_yaml <<-YAML
|
273
286
|
:mutes:
|
data/spec/screen_tracker.spec.rb
CHANGED
@@ -6,17 +6,25 @@ require 'pathname'
|
|
6
6
|
describe ScreenTracker do
|
7
7
|
|
8
8
|
if RUBY_PLATFORM =~ /java/
|
9
|
-
it "is pending
|
9
|
+
it "is pending several java bugs..." # ffi, AND popen#pid...
|
10
10
|
else
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
11
|
+
|
12
|
+
def start_vlc
|
13
|
+
unless $pid1
|
14
|
+
begin
|
15
|
+
Win32::Screenshot.window(/silence.wav/, 0) {}
|
16
|
+
raise Exception.new('must kill old vlcs first')
|
17
|
+
rescue
|
18
|
+
# this way we'll only have one up...
|
19
|
+
$pid1 = IO.popen('"/program files/VideoLan/VLC/vlc.exe" silence.wav').pid # jruby can't open it directly yet, too...
|
20
|
+
sleep 2
|
21
|
+
end
|
18
22
|
end
|
19
23
|
end
|
24
|
+
|
25
|
+
before(:all) do
|
26
|
+
start_vlc
|
27
|
+
end
|
20
28
|
|
21
29
|
before do
|
22
30
|
@a = ScreenTracker.new(/silence.*VLC/,10,10,20,20)
|
@@ -78,7 +86,7 @@ describe ScreenTracker do
|
|
78
86
|
a.get_bmp
|
79
87
|
x,y,x2,y2=a.get_relative_coords
|
80
88
|
hwnd = Win32::Screenshot::BitmapMaker.hwnd("VLC")
|
81
|
-
|
89
|
+
max_x, max_y = Win32::Screenshot::Util.dimensions_for(hwnd)
|
82
90
|
x.should == max_x-10
|
83
91
|
y.should == max_y-10
|
84
92
|
x2.should == x+5
|
@@ -167,12 +175,12 @@ describe ScreenTracker do
|
|
167
175
|
it "should use OCR against the changes appropriately" do
|
168
176
|
output = @a.wait_till_next_change # grab a real change
|
169
177
|
output[0].should be_a(String)
|
170
|
-
output[0].should include("00:
|
178
|
+
output[0].should include("00:") # like 00:09 or what not...
|
171
179
|
output[0].should match(/[1-9]/)
|
172
180
|
output[1].should be_a Float
|
173
181
|
end
|
174
182
|
|
175
|
-
it "should be ok with a failed hours
|
183
|
+
it "should be ok with a failed hours image" do
|
176
184
|
@a.stub!(:get_digits_as_bitmaps) do
|
177
185
|
four = File.binread('images/4.bmp')
|
178
186
|
{:minute_tens=>four,:second_tens => four, :second_ones => four, :minute_ones => four,
|
@@ -181,14 +189,13 @@ describe ScreenTracker do
|
|
181
189
|
@a.attempt_to_get_time_from_screen[0].should == "0:44:44"
|
182
190
|
end
|
183
191
|
|
184
|
-
|
185
|
-
it "should
|
186
|
-
it "with VLC should be able to recognize when it goes past an hour somehow...probably by presence of hourly colon" # might already do this
|
192
|
+
context "with an OCR that can change from hour to minutes during ads" do
|
193
|
+
it "should detect"
|
187
194
|
end
|
188
195
|
|
189
196
|
it "should be able to use invert on images" do
|
190
197
|
@a = ScreenTracker.new("silence.wav", -111, -16, 86, 13,
|
191
|
-
|
198
|
+
{:should_invert => true, :hours => nil, :minute_tens => [-90,7], :minute_ones => [-82, 7], :second_tens => [-72, 7], :second_ones => [-66, 7]} )
|
192
199
|
got_it = nil
|
193
200
|
OCR.stub!(:identify_digit) {|*args|
|
194
201
|
got_it = args
|
@@ -196,22 +203,35 @@ describe ScreenTracker do
|
|
196
203
|
@a.identify_digit('some binary bitmap data')
|
197
204
|
got_it[1][:should_invert].should be_true
|
198
205
|
end
|
206
|
+
|
207
|
+
it "should be able to scan for/identify new windows, since VLC changes signatures" do
|
208
|
+
fail "not possible yet, so hangs"
|
209
|
+
output = @a.wait_till_next_change
|
210
|
+
output[0].should_not be_nil
|
211
|
+
old_handle = @a.hwnd
|
212
|
+
kill_vlc
|
213
|
+
start_vlc
|
214
|
+
output = @a.wait_till_next_change
|
215
|
+
output[0].should_not be_nil
|
216
|
+
old_handle.should_not == @a.hwnd
|
217
|
+
end
|
199
218
|
|
200
219
|
end
|
201
220
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
end
|
209
|
-
Process.kill 9, @pid1 rescue nil # need this re-started each time or the screen won't change for the screen changing test
|
210
|
-
FileUtils.rm_rf Dir['*.bmp'] unless $DEBUG
|
211
|
-
rescue => e
|
212
|
-
puts 'got after bug:', e # until this bug is fixed... http://github.com/rspec/rspec-core/issues#issue/21
|
213
|
-
throw e
|
221
|
+
def kill_vlc
|
222
|
+
assert $pid1
|
223
|
+
# bring redcar to the foreground
|
224
|
+
# this seg faults on windows 7 for me for some reason when run inside the editor itself...swt bug?
|
225
|
+
unless Socket.gethostname == "PACKRD-1GK7V"
|
226
|
+
Win32::Screenshot.window(/universal/, 0) rescue nil
|
214
227
|
end
|
228
|
+
Process.kill 9, $pid1 # need this process re-started each time or the screen won't change for the screen changing test
|
229
|
+
FileUtils.rm_rf Dir['*.bmp']
|
230
|
+
$pid1 = nil
|
231
|
+
end
|
232
|
+
|
233
|
+
after(:all) do
|
234
|
+
kill_vlc
|
215
235
|
end
|
216
236
|
end
|
217
237
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
mutes:
|
2
|
+
3:08.5 : 3:13 # hurts like heck
|
3
|
+
#4:00 : 4:02 # dang
|
4
|
+
#0:33:00 : 0:33:01 # damg
|
5
|
+
0:39:45 : 0:39:46 # crap 37:21 check
|
6
|
+
54:36 : 54:37 # oh my gosh
|
7
|
+
1:04:33 : 1:04:36 # durn durn check #1:04:00 : 1:04:10 # dang
|
8
|
+
#1:33:00 : 1:33:02 # dang
|
9
|
+
1:32:46 : 1:32:47 # dang
|
10
|
+
blank_outs:
|
11
|
+
11:50:00 : 12:00 # creature (Hoggle) standing and urinating (seen from behind) check
|
12
|
+
26:14 : 26:28 # she falls through scary hands check
|
13
|
+
title: Labyrinth
|
14
|
+
source: DVD/VLC
|
15
|
+
missing: lots of fart noises in the swamp, some odd body parts from the red people, goblin violence, some swearing in credits song
|
16
|
+
idea: quieter at parts...
|
metadata
CHANGED
@@ -1,250 +1,269 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensible-cinema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 9
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
version: 0.7.
|
7
|
+
- 0
|
8
|
+
- 7
|
9
|
+
- 5
|
10
|
+
version: 0.7.5
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
|
-
|
13
|
+
- Roger Pack
|
13
14
|
autorequire:
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-08-
|
18
|
+
date: 2010-08-11 00:00:00 -06:00
|
18
19
|
default_executable: sensible-cinema
|
19
20
|
dependencies:
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: rspec
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: jeweler
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: rdp-rmagick
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :development
|
62
|
+
version_requirements: *id003
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: mini_magick
|
65
|
+
prerelease: false
|
66
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
type: :runtime
|
76
|
+
version_requirements: *id004
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: hitimes
|
79
|
+
prerelease: false
|
80
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
version: "0"
|
89
|
+
type: :development
|
90
|
+
version_requirements: *id005
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: sane
|
93
|
+
prerelease: false
|
94
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
hash: 71
|
100
|
+
segments:
|
101
|
+
- 0
|
102
|
+
- 22
|
103
|
+
- 0
|
104
|
+
version: 0.22.0
|
105
|
+
type: :runtime
|
106
|
+
version_requirements: *id006
|
107
|
+
- !ruby/object:Gem::Dependency
|
108
|
+
name: win32screenshot
|
109
|
+
prerelease: false
|
110
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
111
|
+
none: false
|
112
|
+
requirements:
|
113
|
+
- - ">="
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
hash: 19
|
116
|
+
segments:
|
117
|
+
- 0
|
118
|
+
- 0
|
119
|
+
- 6
|
120
|
+
version: 0.0.6
|
121
|
+
type: :runtime
|
122
|
+
version_requirements: *id007
|
109
123
|
description:
|
110
124
|
email: rogerdpack@gmail.com
|
111
125
|
executables:
|
112
|
-
|
126
|
+
- sensible-cinema
|
113
127
|
extensions:
|
114
|
-
|
128
|
+
- ext/mkrf_conf.rb
|
115
129
|
extra_rdoc_files:
|
116
|
-
|
117
|
-
|
118
|
-
|
130
|
+
- LICENSE
|
131
|
+
- README
|
132
|
+
- TODO
|
119
133
|
files:
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
134
|
+
- LICENSE
|
135
|
+
- README
|
136
|
+
- Rakefile
|
137
|
+
- TODO
|
138
|
+
- VERSION
|
139
|
+
- bin/sensible-cinema
|
140
|
+
- ext/mkrf_conf.rb
|
141
|
+
- gplv3.txt
|
142
|
+
- lib/blanker.rb
|
143
|
+
- lib/file_chooser.rb
|
144
|
+
- lib/keyboard_input.rb
|
145
|
+
- lib/mouse.rb
|
146
|
+
- lib/muter.rb
|
147
|
+
- lib/ocr.rb
|
148
|
+
- lib/overlayer.rb
|
149
|
+
- lib/screen_tracker.rb
|
150
|
+
- spec/blanker.spec.rb
|
151
|
+
- spec/common.rb
|
152
|
+
- spec/convert_image.rb
|
153
|
+
- spec/images/4.bmp
|
154
|
+
- spec/images/black.bmp
|
155
|
+
- spec/images/colon.bmp
|
156
|
+
- spec/images/hulu_0.bmp
|
157
|
+
- spec/images/hulu_2.bmp
|
158
|
+
- spec/images/hulu_2_3.bmp
|
159
|
+
- spec/images/hulu_2_4.bmp
|
160
|
+
- spec/images/hulu_3.bmp
|
161
|
+
- spec/images/hulu_3_4.bmp
|
162
|
+
- spec/images/hulu_4.bmp
|
163
|
+
- spec/images/hulu_4_4.bmp
|
164
|
+
- spec/images/hulu_5.bmp
|
165
|
+
- spec/images/hulu_7.bmp
|
166
|
+
- spec/images/hulu_8.bmp
|
167
|
+
- spec/images/hulu_slash.bmp
|
168
|
+
- spec/images/vlc_0.bmp
|
169
|
+
- spec/images/vlc_2_6.bmp
|
170
|
+
- spec/images/vlc_4.bmp
|
171
|
+
- spec/images/vlc_5.bmp
|
172
|
+
- spec/images/vlc_6.bmp
|
173
|
+
- spec/images/vlc_9.bmp
|
174
|
+
- spec/images/vlc_colon.bmp
|
175
|
+
- spec/keyboard_input.spec.rb
|
176
|
+
- spec/mouse.spec.rb
|
177
|
+
- spec/mouse_forever.rb
|
178
|
+
- spec/muter.spec.rb
|
179
|
+
- spec/ocr.spec.orb
|
180
|
+
- spec/open.bat
|
181
|
+
- spec/overlayer.spec.rb
|
182
|
+
- spec/screen_tracker.spec.rb
|
183
|
+
- spec/silence.wav
|
184
|
+
- spec/test_yaml.yml
|
185
|
+
- vendor/gocr048.exe
|
186
|
+
- vendor/imagemagick/CORE_RL_Magick++_.dll
|
187
|
+
- vendor/imagemagick/CORE_RL_bzlib_.dll
|
188
|
+
- vendor/imagemagick/CORE_RL_jbig_.dll
|
189
|
+
- vendor/imagemagick/CORE_RL_jp2_.dll
|
190
|
+
- vendor/imagemagick/CORE_RL_jpeg_.dll
|
191
|
+
- vendor/imagemagick/CORE_RL_lcms_.dll
|
192
|
+
- vendor/imagemagick/CORE_RL_libxml_.dll
|
193
|
+
- vendor/imagemagick/CORE_RL_magick_.dll
|
194
|
+
- vendor/imagemagick/CORE_RL_png_.dll
|
195
|
+
- vendor/imagemagick/CORE_RL_tiff_.dll
|
196
|
+
- vendor/imagemagick/CORE_RL_ttf_.dll
|
197
|
+
- vendor/imagemagick/CORE_RL_wand_.dll
|
198
|
+
- vendor/imagemagick/CORE_RL_xlib_.dll
|
199
|
+
- vendor/imagemagick/CORE_RL_zlib_.dll
|
200
|
+
- vendor/imagemagick/X11.dll
|
201
|
+
- vendor/imagemagick/Xext.dll
|
202
|
+
- vendor/imagemagick/atl90.dll
|
203
|
+
- vendor/imagemagick/convert.exe
|
204
|
+
- vendor/imagemagick/mfc90.dll
|
205
|
+
- vendor/imagemagick/msvcp90.dll
|
206
|
+
- vendor/imagemagick/msvcr90.dll
|
207
|
+
- vendor/imagemagick/vcomp90.dll
|
208
|
+
- zamples/players/how_to_create_a_new_player_description.txt
|
209
|
+
- zamples/players/hulu_full_screen_total_length_over_an_hour.yml
|
210
|
+
- zamples/players/sample_snapshots/hulu full screen non hour.jpg
|
211
|
+
- zamples/players/sample_snapshots/hulu full screen over hour.jpg
|
212
|
+
- zamples/players/sample_snapshots/silence.bmp
|
213
|
+
- zamples/players/sample_snapshots/utube.JPG
|
214
|
+
- zamples/players/sample_snapshots/vlc grab over one hour file over one hour play.bmp
|
215
|
+
- zamples/players/sample_snapshots/vlc2.bmp
|
216
|
+
- zamples/players/sample_snapshots/vlc_full_screen_slider under one hour.bmp
|
217
|
+
- zamples/players/sample_snapshots/youtube full screen big screen.jpg
|
218
|
+
- zamples/players/vlc_full_screened_total_length_over_an_hour.yml
|
219
|
+
- zamples/players/vlc_non_full_screened_and_total_length_over_an_hour.yml
|
220
|
+
- zamples/players/vlc_non_full_screened_and_total_length_under_an_hour.yml
|
221
|
+
- zamples/scene_lists/disney_cars.yml
|
222
|
+
- zamples/scene_lists/example_scene_list.yml
|
223
|
+
- zamples/scene_lists/happy_feet_dvd.yml
|
224
|
+
- zamples/scene_lists/labyrinth.yml
|
225
|
+
- zamples/scene_lists/star_trek_generations_hulu.yml
|
211
226
|
has_rdoc: true
|
212
227
|
homepage: http://github.com/rdp
|
213
228
|
licenses: []
|
214
229
|
|
215
230
|
post_install_message:
|
216
231
|
rdoc_options:
|
217
|
-
|
232
|
+
- --charset=UTF-8
|
218
233
|
require_paths:
|
219
|
-
|
234
|
+
- lib
|
220
235
|
required_ruby_version: !ruby/object:Gem::Requirement
|
236
|
+
none: false
|
221
237
|
requirements:
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
238
|
+
- - ">="
|
239
|
+
- !ruby/object:Gem::Version
|
240
|
+
hash: 3
|
241
|
+
segments:
|
242
|
+
- 0
|
243
|
+
version: "0"
|
227
244
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
245
|
+
none: false
|
228
246
|
requirements:
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
247
|
+
- - ">="
|
248
|
+
- !ruby/object:Gem::Version
|
249
|
+
hash: 3
|
250
|
+
segments:
|
251
|
+
- 0
|
252
|
+
version: "0"
|
234
253
|
requirements: []
|
235
254
|
|
236
255
|
rubyforge_project:
|
237
|
-
rubygems_version: 1.3.
|
256
|
+
rubygems_version: 1.3.7
|
238
257
|
signing_key:
|
239
258
|
specification_version: 3
|
240
259
|
summary: an EDL scene-selector/bleeper that works with online players like hulu
|
241
260
|
test_files:
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
261
|
+
- spec/blanker.spec.rb
|
262
|
+
- spec/common.rb
|
263
|
+
- spec/convert_image.rb
|
264
|
+
- spec/keyboard_input.spec.rb
|
265
|
+
- spec/mouse.spec.rb
|
266
|
+
- spec/mouse_forever.rb
|
267
|
+
- spec/muter.spec.rb
|
268
|
+
- spec/overlayer.spec.rb
|
269
|
+
- spec/screen_tracker.spec.rb
|