sensible-cinema 0.26.0 → 0.26.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitmodules +3 -0
- data/README +9 -6
- data/TODO +91 -41
- data/VERSION +1 -1
- data/bin/sensible-cinema +13 -1506
- data/bin/sensible-cinema-cli +156 -151
- data/change_log_with_feature_list.txt +17 -2
- data/developer_how_to_contribute_to_the_project.txt +3 -2
- data/documentation/upconversion.txt +4 -0
- data/history_and_related_works_list.txt +1 -0
- data/{play_with_inserted_scene.bat → legal/play_with_inserted_scene.bat} +0 -0
- data/{play_with_overlay.bat → legal/play_with_overlay.bat} +0 -0
- data/legal2 +2 -0
- data/lib/count_down_timer_jruby_swing.rb +3 -4
- data/lib/edl_parser.rb +345 -339
- data/lib/eight_three.rb +6 -1
- data/lib/gui/sensible-cinema-base.rb +671 -0
- data/lib/gui/sensible-cinema-create.rb +304 -0
- data/lib/{sensible-cinema-dependencies.rb → gui/sensible-cinema-dependencies.rb} +0 -0
- data/lib/gui/sensible-cinema-normal.rb +349 -0
- data/lib/gui/sensible-cinema-side-by-side.rb +27 -0
- data/lib/gui/sensible-cinema-upconvert.rb +254 -0
- data/lib/screen_tracker.rb +1 -0
- data/spec/edl_parser.spec.rb +6 -0
- data/spec/notes +107 -16
- data/spec/sensible_cinema_gui.spec.rb +63 -58
- data/todo.inventionzy.txt +12 -0
- data/todo.propaganda +1 -2
- data/todo.upconvert +3 -1
- data/upconvert_netflix/record_screen/record.bat +2 -0
- data/upconvert_netflix/record_screen/recording/1.png +0 -0
- data/upconvert_netflix/record_screen/recording/10.png +0 -0
- data/upconvert_netflix/record_screen/recording/2.png +0 -0
- data/upconvert_netflix/record_screen/recording/3.png +0 -0
- data/upconvert_netflix/record_screen/recording/4.png +0 -0
- data/upconvert_netflix/record_screen/recording/5.png +0 -0
- data/upconvert_netflix/record_screen/recording/6.png +0 -0
- data/upconvert_netflix/record_screen/recording/7.png +0 -0
- data/upconvert_netflix/record_screen/recording/8.png +0 -0
- data/upconvert_netflix/record_screen/recording/9.png +0 -0
- data/upconvert_netflix/record_screen/recording/d.png +0 -0
- data/www/content_editor.html +2 -2
- data/zamples/edit_decision_lists/dvds/edls_being_edited/cars_disney.txt +5 -7
- data/zamples/edit_decision_lists/dvds/innerspace.txt +77 -0
- data/zamples/edit_decision_lists/netflix_instant/avatar-last-air-bender-movie.txt +12 -0
- data/zamples/edit_decision_lists/netflix_instant/avatar-last-airbender-series.txt +1 -0
- data/zamples/players/netflix/netflix_firefox_non_maximized.txt +1 -1
- metadata +28 -11
- data/lib/file_chooser.rb +0 -46
- data/lib/swing_helpers.rb +0 -142
- data/www/monkey.png +0 -0
@@ -24,29 +24,25 @@ load 'bin/sensible-cinema'
|
|
24
24
|
|
25
25
|
module SensibleSwing
|
26
26
|
describe MainWindow do
|
27
|
-
EdlParser::EDL_DIR.gsub!(/^.*$/, 'spec/files/edls')
|
28
27
|
it "should be able to start up" do
|
29
28
|
MainWindow.new.dispose# doesn't crash :)
|
30
29
|
end
|
31
30
|
|
32
31
|
Test_DVD_ID = 'deadbeef|8b27d001'
|
33
32
|
|
34
|
-
it "should
|
33
|
+
it "should die if you file select a poorly formed edl" do
|
35
34
|
time_through = 0
|
36
35
|
EdlParser.stub!(:single_edit_list_matches_dvd) { |dir, md5|
|
37
|
-
'fake filename doesnt matter what we return here because we fake its parsing later'
|
36
|
+
'fake filename doesnt matter what we return here because we fake its parsing later anyway'
|
38
37
|
}
|
39
38
|
|
40
39
|
@subject.stub!(:parse_edl) {
|
41
|
-
|
42
|
-
|
43
|
-
eval("a-----") # force it to throw a Syntax Error first time
|
44
|
-
else
|
45
|
-
"stuff"
|
46
|
-
end
|
40
|
+
time_through += 1
|
41
|
+
eval("a-----") # force it to throw a Syntax Error first time
|
47
42
|
}
|
48
|
-
@subject.choose_dvd_or_file_and_edl_for_it
|
49
|
-
@show_blocking_message_dialog_last_arg.
|
43
|
+
proc { @subject.choose_dvd_or_file_and_edl_for_it}.should raise_exception(SyntaxError)
|
44
|
+
@show_blocking_message_dialog_last_arg.should be nil
|
45
|
+
time_through.should == 1
|
50
46
|
end
|
51
47
|
|
52
48
|
it "should warn if you don't have enough disk space" do
|
@@ -87,6 +83,10 @@ module SensibleSwing
|
|
87
83
|
ENV['PATH'].should_not include("mplayer")
|
88
84
|
end
|
89
85
|
|
86
|
+
before do
|
87
|
+
File.write('selected_file', '"name" => "a dvd name to satisfy internal assertion", "dvd_title_track" => "2", "mutes" => ["06:10", "06:15"]')
|
88
|
+
end
|
89
|
+
|
90
90
|
before do
|
91
91
|
@subject = MainWindow.new false # false to speedup tests
|
92
92
|
# want lots of buttons :)
|
@@ -99,15 +99,15 @@ module SensibleSwing
|
|
99
99
|
["mock_dvd_drive", "Volume", Test_DVD_ID] # happiest baby on the block
|
100
100
|
}
|
101
101
|
@subject.stub!(:get_mencoder_commands) { |*args|
|
102
|
-
args[-5].should
|
102
|
+
args[-5].should == 'selected_file'
|
103
103
|
@get_mencoder_commands_args = args
|
104
104
|
'fake get_mencoder_commands'
|
105
105
|
}
|
106
106
|
@subject.stub!(:new_existing_file_selector_and_select_file) {
|
107
107
|
'selected_file'
|
108
108
|
}
|
109
|
-
@subject.stub!(:
|
110
|
-
|
109
|
+
@subject.stub!(:new_nonexisting_filechooser_and_go) {
|
110
|
+
'selected_file' # TODO do we need FakefileChooser anymore?
|
111
111
|
}
|
112
112
|
@subject.stub!(:get_drive_with_most_space_with_slash) {
|
113
113
|
"e:\\"
|
@@ -135,6 +135,7 @@ module SensibleSwing
|
|
135
135
|
# during testing, we *always* have enough free space :)
|
136
136
|
16_000_000_000
|
137
137
|
}
|
138
|
+
@subject.stub!(:show_in_explorer) {|filename|}
|
138
139
|
unless $VERBOSE
|
139
140
|
# less chatty...
|
140
141
|
@subject.stub!(:print) {}
|
@@ -151,8 +152,14 @@ module SensibleSwing
|
|
151
152
|
}
|
152
153
|
end
|
153
154
|
|
155
|
+
before do
|
156
|
+
EdlParser::EDL_DIR.gsub!(/^.*$/, 'spec/files/edls')
|
157
|
+
end
|
158
|
+
|
154
159
|
after do
|
155
160
|
Thread.join_all_others
|
161
|
+
FileUtils.rm_rf EdlParser::EDL_DIR
|
162
|
+
Dir.mkdir EdlParser::EDL_DIR
|
156
163
|
end
|
157
164
|
|
158
165
|
class FakeFileChooser
|
@@ -183,20 +190,22 @@ module SensibleSwing
|
|
183
190
|
|
184
191
|
it "should only prompt twice for filenames--once for the 'save to' filename, once for the 'from' filename" do
|
185
192
|
count1=count2=0
|
186
|
-
@subject.stub!(:
|
187
|
-
count1 += 1
|
188
|
-
FakeFileChooser.new
|
189
|
-
}
|
190
|
-
@subject.stub!(:new_existing_file_selector_and_select_file) { # get from
|
193
|
+
@subject.stub!(:new_existing_file_selector_and_select_file) { # get from filename
|
191
194
|
count2 += 1
|
192
|
-
|
195
|
+
'selected_file'
|
196
|
+
}
|
197
|
+
|
198
|
+
@subject.stub!(:new_nonexisting_filechooser_and_go) { # save to filename
|
199
|
+
count1 += 1
|
193
200
|
'selected_file'
|
194
201
|
}
|
195
202
|
|
196
203
|
@subject.do_create_edited_copy_via_file(false).should == [false, "selected_file.fulli_unedited.tmp.mpg"]
|
197
|
-
|
204
|
+
5.times {
|
205
|
+
@subject.do_create_edited_copy_via_file(false)
|
206
|
+
}
|
198
207
|
count1.should == 1
|
199
|
-
count2.should ==
|
208
|
+
count2.should == 2 # once for from filename, once for [tell us where you grabbed it to] filename
|
200
209
|
end
|
201
210
|
|
202
211
|
it "should have a good default title of 1" do
|
@@ -227,7 +236,7 @@ module SensibleSwing
|
|
227
236
|
it "should play the edited file" do
|
228
237
|
@subject.do_create_edited_copy_via_file(true).should == [false, "selected_file.fulli_unedited.tmp.mpg"]
|
229
238
|
join_background_thread
|
230
|
-
@get_mencoder_commands_args[-2].should == "2"
|
239
|
+
@get_mencoder_commands_args[-2].should == "2" # title track
|
231
240
|
@get_mencoder_commands_args[-3].should == "01:00"
|
232
241
|
@system_blocking_command.should_not match /fulli/
|
233
242
|
end
|
@@ -303,39 +312,38 @@ module SensibleSwing
|
|
303
312
|
@show_blocking_message_dialog_last_arg.should =~ /a file/
|
304
313
|
end
|
305
314
|
|
306
|
-
it "should warn if you watch an edited time frame with no edits
|
315
|
+
it "should warn if you watch an edited time frame with no edits within thatin it" do
|
307
316
|
@subject.unstub!(:get_mencoder_commands) # this time through, let it check for existence of edits...
|
308
|
-
@subject.stub!(:run_smplayer_blocking) {} # avoid liveness check
|
309
317
|
click_button(:@preview_section)
|
310
318
|
@show_blocking_message_dialog_last_arg.should =~ /unable to find/
|
311
319
|
end
|
312
320
|
|
313
321
|
it "should warn if you give it an mkv file, just in case" do
|
314
|
-
@subject.stub!(:run_smplayer_blocking) {} #
|
315
|
-
@subject.unstub!(:get_mencoder_commands) # this time through, let it check for existence of edits...
|
322
|
+
@subject.stub!(:run_smplayer_blocking) {} # avoid check for file existence
|
323
|
+
@subject.unstub!(:get_mencoder_commands) # this time through, let it really check for existence of edits...
|
316
324
|
@subject.stub!(:get_user_input).and_return('06:00', '07:00')
|
317
325
|
click_button(:@preview_section)
|
318
|
-
join_background_thread
|
319
326
|
@show_blocking_message_dialog_last_arg.should =~ /is not a/
|
327
|
+
join_background_thread
|
320
328
|
end
|
321
329
|
|
322
|
-
it "should not warn if
|
330
|
+
it "should not warn if a ts file, and has appropriate entries within timeframe" do
|
323
331
|
@subject.stub!(:get_user_input).and_return('06:00', '07:00')
|
324
|
-
@subject.stub!(:new_existing_file_selector_and_select_file)
|
325
|
-
'selected_file.mpg'
|
326
|
-
}
|
332
|
+
@subject.stub!(:new_existing_file_selector_and_select_file).and_return('selected_file', 'selected_file.mpg')
|
327
333
|
click_button(:@preview_section)
|
328
|
-
|
334
|
+
|
329
335
|
@show_blocking_message_dialog_last_arg.should =~ /preview just a portion/
|
336
|
+
join_background_thread # weird...rspec you should do my after blocks before you'n... LODO
|
330
337
|
end
|
331
338
|
|
332
|
-
it "if the .done files exists, do_copy... should call smplayer ja" do
|
339
|
+
it "if the .done files exists, do_copy... should just call smplayer ja" do
|
333
340
|
FileUtils.touch "selected_file.fulli_unedited.tmp.mpg.done"
|
334
|
-
@subject.do_create_edited_copy_via_file(false, true, true).should == [true, "selected_file.fulli_unedited.tmp.mpg"]
|
341
|
+
@subject.do_create_edited_copy_via_file(false, true, true).should == [true, "selected_file.fulli_unedited.tmp.mpg"]
|
335
342
|
end
|
336
343
|
|
337
|
-
it "should create a new file
|
344
|
+
it "should create a new file based on stats of current disc" do
|
338
345
|
out = EdlParser::EDL_DIR + "/edls_being_edited/sweetest_disc_ever.txt"
|
346
|
+
FileUtils.mkdir_p File.dirname(out)
|
339
347
|
File.exist?( out ).should be_false
|
340
348
|
@subject.stub!(:get_user_input) {'sweetest disc ever'}
|
341
349
|
@subject.instance_variable_get(:@create_new_edl_for_current_dvd).simulate_click
|
@@ -370,7 +378,7 @@ module SensibleSwing
|
|
370
378
|
it "should handle dvd drive -> dvdnav" do
|
371
379
|
for drive in ['d:', 'e:', 'f:', 'g:']
|
372
380
|
if File.exist?(drive + '/VIDEO_TS')
|
373
|
-
@subject.run_smplayer_blocking drive, nil, '', true, true
|
381
|
+
@subject.run_smplayer_blocking drive, nil, '', true, true, true
|
374
382
|
@system_blocking_command.should =~ /dvdnav/
|
375
383
|
@system_blocking_command.should =~ /-dvd-device/
|
376
384
|
end
|
@@ -379,13 +387,13 @@ module SensibleSwing
|
|
379
387
|
|
380
388
|
it 'should handle a/b/VIDEO_TS/yo.vob' do
|
381
389
|
FileUtils.mkdir_p f = 'a/b/VIDEO_TS/yo.vob'
|
382
|
-
@subject.run_smplayer_blocking f, 3, '', true, false
|
390
|
+
@subject.run_smplayer_blocking f, 3, '', true, false, true
|
383
391
|
@system_blocking_command.should =~ /dvdnav:\/\/3/
|
384
392
|
@system_blocking_command.should =~ /VIDEO_TS\/\.\./
|
385
393
|
@system_blocking_command.should =~ / -alang/ # preceding space :)
|
386
394
|
|
387
395
|
# exercise the yes subtitle options...
|
388
|
-
@subject.run_smplayer_blocking f, 3, '', true, true
|
396
|
+
@subject.run_smplayer_blocking f, 3, '', true, true, true
|
389
397
|
@system_blocking_command.should_not =~ /-nosub/
|
390
398
|
|
391
399
|
end
|
@@ -393,8 +401,7 @@ module SensibleSwing
|
|
393
401
|
it "should play edl with extra time for the mutes because of the EDL aspect" do
|
394
402
|
click_button(:@mplayer_edl).join
|
395
403
|
wrote = File.read(MainWindow::EdlTempFile)
|
396
|
-
|
397
|
-
wrote.should include("377.0 379.1 1")
|
404
|
+
wrote.should include("369.0 375.0 1") # right numbers, except first -= 1
|
398
405
|
end
|
399
406
|
|
400
407
|
def should_allow_for_changing_file corrupt_the_file = false
|
@@ -454,10 +461,8 @@ module SensibleSwing
|
|
454
461
|
# def a.selected_idx; p 'returning', select_this_idx; select_this_idx; end
|
455
462
|
a
|
456
463
|
}
|
457
|
-
@subject.stub(:
|
458
|
-
|
459
|
-
def a.go; 'selected_filename'; end
|
460
|
-
a
|
464
|
+
@subject.stub(:new_nonexisting_filechooser_and_go) {|a, b|
|
465
|
+
'selected_filename'
|
461
466
|
}
|
462
467
|
@subject.stub(:new_existing_file_selector_and_select_file) {
|
463
468
|
'selected_edl'
|
@@ -494,17 +499,17 @@ module SensibleSwing
|
|
494
499
|
end
|
495
500
|
|
496
501
|
it "should show additional buttons in create mode" do
|
497
|
-
MainWindow.new.setup_default_buttons.buttons.length.should be > 3
|
498
|
-
MainWindow.new.setup_default_buttons.buttons.length.should be < 10
|
499
|
-
old_length = MainWindow.new.setup_default_buttons.buttons.length
|
502
|
+
MainWindow.new(false).setup_default_buttons.buttons.length.should be > 3
|
503
|
+
MainWindow.new(false).setup_default_buttons.buttons.length.should be < 10
|
504
|
+
old_length = MainWindow.new(false).setup_default_buttons.buttons.length
|
500
505
|
ARGV << "--create-mode"
|
501
|
-
MainWindow.new.setup_default_buttons.buttons.length.should be > (old_length + 5)
|
506
|
+
MainWindow.new(false).setup_default_buttons.buttons.length.should be > (old_length + 5)
|
502
507
|
ARGV.pop # post-test cleanup--why not :)
|
503
508
|
end
|
504
509
|
|
505
510
|
it "should show upconvert buttons" do
|
506
511
|
ARGV << "--upconvert-mode"
|
507
|
-
MainWindow.new.setup_default_buttons.buttons.length.should be > 3
|
512
|
+
MainWindow.new(false).setup_default_buttons.buttons.length.should be > 3
|
508
513
|
ARGV.pop
|
509
514
|
end
|
510
515
|
|
@@ -542,23 +547,23 @@ module SensibleSwing
|
|
542
547
|
click_button(:@play_smplayer)
|
543
548
|
end
|
544
549
|
|
545
|
-
it "should create" do
|
550
|
+
it "should create an sxs file" do
|
546
551
|
FileUtils.rm_rf 'yo.edl' # nothing up my sleeve.
|
547
552
|
prompted = false
|
548
553
|
@subject.stub(:assert_ownership_dialog) {
|
549
554
|
prompted = true
|
550
555
|
}
|
551
|
-
@subject.stub(:new_existing_file_selector_and_select_file).and_return("yo.mpg", "
|
556
|
+
@subject.stub(:new_existing_file_selector_and_select_file).and_return("yo.mpg", "selected_file")
|
552
557
|
click_button(:@create_dot_edl)
|
553
558
|
assert File.exist? 'yo.edl'
|
554
559
|
assert prompted
|
555
560
|
end
|
556
561
|
|
557
562
|
it "should be able to upconvert at all" do
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
@subject.
|
563
|
+
MainWindow.any_instance.stub(:display_current_upconvert_setting_and_close_window) {} # TRY it out
|
564
|
+
@subject = MainWindow.new(false)
|
565
|
+
MainWindow::LocalStorage['screen_multiples'] = 2.0 # default so it won't fail us...
|
566
|
+
@subject.add_change_upconvert_buttons
|
562
567
|
@subject.stub(:show_mplayer_instructions_once) {}
|
563
568
|
click_button(:@medium_dvd)
|
564
569
|
storage = MainWindow::LocalStorage
|
@@ -573,12 +578,12 @@ module SensibleSwing
|
|
573
578
|
@subject.stub(:system_blocking) { |c|
|
574
579
|
got = c
|
575
580
|
}
|
576
|
-
@subject.run_smplayer_blocking 'selected_file.avi', nil, "", true, true
|
581
|
+
@subject.run_smplayer_blocking 'selected_file.avi', nil, "", true, true, false
|
577
582
|
assert got =~ /hqdn3d/
|
578
583
|
|
579
584
|
# and on smplayer
|
580
585
|
MainWindow::SMPlayerIniFile.gsub!(/^.*$/, File.expand_path('./smplayer_ini_file')) # don't overwrite the real one...
|
581
|
-
@subject.run_smplayer_blocking 'selected_file.avi', nil, "", false, true
|
586
|
+
@subject.run_smplayer_blocking 'selected_file.avi', nil, "", false, true, false
|
582
587
|
assert got =~ /mplayer/
|
583
588
|
assert File.read(MainWindow::SMPlayerIniFile) =~ /hqdn3d/
|
584
589
|
end
|
data/todo.inventionzy.txt
CHANGED
@@ -11,15 +11,27 @@
|
|
11
11
|
with several, or start one, end one, etc.
|
12
12
|
allow for extra start time offset for videos, if netflix instant has any
|
13
13
|
a way to integrate with cable TV, ex: "this show we know started at 1:01, and its offsets should be this after that point"
|
14
|
+
it can "infer" where the thumb slider would be, and "drag" it to where it infers the new timestamp location shoudl be.
|
15
|
+
make an API web service that can search for EDL's
|
16
|
+
or with youtube, use the api to fast forwarrd there
|
17
|
+
and if it isn't already loaded, display an extra notice "forwarding" or what not.
|
18
|
+
and/or display some other overlay and or audio in place of the video or audio, or supplementing it.
|
14
19
|
a video of "recording to broadcast it" (or save it one by one)
|
15
20
|
can "suck in" a large list of EDL's from imdb at build time,
|
16
21
|
and/or a "resync" button, to re-download just the list of updated EDL's/IMDB wiki settings [?]
|
17
22
|
can handle multiple dvdid's et al (same EDL) (mostly done already)
|
23
|
+
can "obscure" full frames [sections of frames] and/or "partial" frames or sections of frames (ex: lips, nudity)
|
24
|
+
can add extra overlays of text (personalized subtitles, like)
|
25
|
+
some tie in with blog posts
|
26
|
+
ratings system, where users can rate based on various criteria/statistics, each EDL, and it aggregates them to display/obtain/use a sum rating metric
|
27
|
+
can 'remove' or 'obscure' CC or subtitles deemed offensive
|
18
28
|
it can pull in a DVD based just on the dvd-id "query id, not local? go get it from online to see if the list has been updated since"
|
19
29
|
control VLC RC to overlay a logo dynamically
|
20
30
|
can control volume *and* play other audio
|
21
31
|
can permanently black out certain coords to keep things prettier...et al
|
22
32
|
remove black when they really move the mouse?
|
33
|
+
a transport schema talking from a sensible cinema database "to" a player which uses it, and/or has selection options for levels of (content category) or can pick options they want, stored in sensible cinema database or in the "player" side, with transfer/communication between the two. Ex: XML as a transport, oauth for authentication, etc. etc.
|
34
|
+
or they could transmit a time signature "across the wire" somehow (ex: every second), which could be used to react to time events (skip, mute) appropriately. Or allow for programatic callbacks "call me at this time" or "at this time do this action" or the like, and/or accomodate for buffers/freezing etc. [kind of already demo'ed this one]
|
23
35
|
can add to to supplement EDL + EDL timestamps
|
24
36
|
can pick specific profanities to avoid (I think I demo'ed this already actually)
|
25
37
|
it can scan "playing" instant streaming titles, and/or OCR or take the audio and look for words, to check for profanity.
|
data/todo.propaganda
CHANGED
data/todo.upconvert
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
== dvd ==
|
1
|
+
== dvd upconvert ==
|
2
2
|
|
3
3
|
compare with powerdvd/ffdshow
|
4
4
|
|
@@ -13,6 +13,8 @@ hqdn3d settings?
|
|
13
13
|
|
14
14
|
do I need double tapping? http://archive2.avsforum.com/avs-vb/showthread.php?s=&postid=4760581#post4760581
|
15
15
|
|
16
|
+
check out the various posts of people comparing images, try mine out against the images they used, compare :P
|
17
|
+
|
16
18
|
=== netflix/OS screen capture ===
|
17
19
|
|
18
20
|
can I make it look awesome?
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/www/content_editor.html
CHANGED
@@ -39,7 +39,7 @@ license agreement (<a href="http://www.gnu.org/licenses/gpl.html">gplv3</a>) and
|
|
39
39
|
<input type="checkbox" class="trigger" onClick="$('#comments').toggle(); $('#comments2').toggle();"/> I have read and agree to the license terms and conditions.
|
40
40
|
|
41
41
|
<div id="comments" style="display:none; border-style:dotted; border-width:1px; border-color: #aaaaaa; padding: 5px;">
|
42
|
-
Please download the latest version of sensible cinema from <a href="https://sourceforge.net/projects/sensible-cinema/files/">sourceforge</a>.
|
42
|
+
Please download the latest version of sensible cinema from <a href="https://sourceforge.net/projects/sensible-cinema/files/">sourceforge</a>. You can also see the <a href="source">source</a>.
|
43
43
|
</div>
|
44
44
|
After download, unzip it. For windows users, that's like:
|
45
45
|
Reveal the file in explorer -> right click on the file -> Extract all -> Extract.
|
@@ -48,7 +48,7 @@ You will be initially prompted to accept the license agreement(s) and also insta
|
|
48
48
|
(non included, separate ownership/distribution) dependencies.
|
49
49
|
Now insert a DVD you own, and restart sensible cinema to see available options.
|
50
50
|
Note that you want to download from sourceforge not from github.com (github is just the raw source).
|
51
|
-
There is more usage documentation within the "sensible-cinema/documentation" folder.
|
51
|
+
There is more usage documentation within the "sensible-cinema/documentation" folder contained there.
|
52
52
|
|
53
53
|
<h3>Mac user prerequisites</h3>Mac users will need to install some programs first.
|
54
54
|
|
@@ -11,6 +11,8 @@
|
|
11
11
|
"0:23:25.991" , "0:23:30.619", "profanity", "moron", "fer dang sake, Turn on your lights you [moron]",
|
12
12
|
"0:35:29.546" , "0:35:33.509", "profanity", "dumb", "Boy we ain't as [dumb] as you think we are",
|
13
13
|
"0:36:00.202" , "0:36:03.038", "profanity", "sex", "I want to get a look at that [sex]y hot rod",
|
14
|
+
"00:48:09.3", "00:48:11.9", "profanity", "That crazy old devil woman",
|
15
|
+
|
14
16
|
"0:49:56.914" , "0:50:00.334", "profanity", "idiot", "Crazy grandpa car What an [idiot]",
|
15
17
|
"0:55:21.321" , "0:55:24.449", "profanity", "dumb", "I swear tractors is so [dumb]",
|
16
18
|
"01:55:37.104" , "01:55:41.775", "profanity", "lo..", "for the love of [deity]",
|
@@ -21,22 +23,18 @@
|
|
21
23
|
"52:52", "52:57", "profanity", "innuendo", "not with me but with me",
|
22
24
|
"28:00", "28:08", "profanity", "mumble l...",
|
23
25
|
],
|
24
|
-
# 00:48:09,264 --> 00:48:11,934
|
25
|
-
#That crazy old devil woman.
|
26
26
|
|
27
27
|
# sister DVD: CRZ0NNF1 track 21 "disk_unique_id" => "aa06ad1c|e1e62ad0"
|
28
28
|
|
29
29
|
"blank_outs" => [
|
30
30
|
"39:22", "39:29", "lewd", "look honey, von dutch",
|
31
|
-
# an example line, uncomment the leading "#" to make it active
|
32
|
-
# "00:03:00.0" , "00:04:00.0", "violence", "of some sort",
|
33
31
|
],
|
34
32
|
|
35
33
|
"volume_name" => "CRZ0NNW7 ",
|
36
34
|
"disk_unique_id" => "f5751899|2862d307",
|
37
35
|
"dvd_title_track" => "23",
|
38
36
|
"dvd_title_track_length" => "6985.700",
|
39
|
-
|
40
|
-
# "not edited out stuff" => "
|
41
|
-
# "closing thoughts" => "
|
37
|
+
"opensubtitles_number" => "4022054",
|
38
|
+
# "not edited out stuff" => "...",
|
39
|
+
# "closing thoughts" => "...",
|
42
40
|
"mplayer_dvd_splits" => ["3767.35", " 6490.35"],
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# comments can go after a # on any line, for example this one.
|
2
|
+
"name" => "InnerSpace",
|
3
|
+
|
4
|
+
#31:00 g,
|
5
|
+
|
6
|
+
"mutes" => [
|
7
|
+
# add these into your mute section if you deem them mute-worthy
|
8
|
+
|
9
|
+
"0:05:45.80", "348.8", "profanity", "sh..",
|
10
|
+
|
11
|
+
"0:02:34.489" , "0:02:38.659", "profanity", "da..", "Well [da..] if we're not balls to the wall",
|
12
|
+
"0:03:27.834" , "0:03:30.586", "profanity", "sh..", "[sh..] I spilled my drink",
|
13
|
+
"0:07:36.875" , "0:07:39.793", "profanity", "a..", "I make an [a..] out of myself",
|
14
|
+
"0:11:34.279" , "0:11:37.906", "profanity", "da..", "[da..] this traffic We're gonna be late",
|
15
|
+
"0:28:45.727" , "0:28:49.354", "profanity", "he..", "What the [he..] are these things Fat cells",
|
16
|
+
"0:28:53.193" , "0:28:56.570", "profanity", "he..", "What the [he..] is going on out there",
|
17
|
+
"0:29:12.170" , "0:29:15.964", "profanity", "sh..", "How do I look Like [sh..]",
|
18
|
+
"0:31:30.433" , "0:31:34.728", "profanity", "goodness", "Oh my [goodness] he's completely spaced out",
|
19
|
+
"0:31:39.777" , "0:31:44.071", "profanity", "he..", "What the [he..] is that Ozzie",
|
20
|
+
"0:33:59.666" , "0:34:03.043", "profanity", "he..", "Come on where the [he..] is the picture",
|
21
|
+
"0:34:07.507" , "0:34:12.344", "profanity", "he..", "That's not Oz Who the [he..] is that Where's the lab technician",
|
22
|
+
"0:34:21.104" , "0:34:23.689", "profanity", "goodness", "Oh [goodness]",
|
23
|
+
"0:34:40.290" , "0:34:44.209", "profanity", "b....", "I'm in a strange man I'll be a son of a [b....]",
|
24
|
+
"0:38:26.724" , "0:38:28.976", "profanity", "goodness", "Oh [goodness]",
|
25
|
+
"0:39:09.934" , "0:39:13.478", "profanity", "goodness", "Thank [goodness] A doctor Somebody who'll understand",
|
26
|
+
"0:39:31.539" , "0:39:36.750", "profanity", "goodness", "I'm blind Oh [goodness]",
|
27
|
+
#"0:39:33.833" , "0:39:36.585", "profanity", "goodness", "Now it's talking about [goodness]",
|
28
|
+
"0:40:34.269" , "0:40:37.271", "profanity", "goodness", "Thank [goodness] I can see",
|
29
|
+
"0:42:11.699" , "0:42:14.034", "profanity", "goodness", "Oh [goodness]",
|
30
|
+
"0:44:38.346" , "0:44:40.514", "profanity", "sh..", "[sh..]",
|
31
|
+
"0:45:59.928" , "0:46:03.263", "profanity", "he..", "You've got one [he..] of a pump Jack",
|
32
|
+
"0:47:00.488" , "0:47:04.032", "profanity", "b....", "You better you two faced son of a [b....]",
|
33
|
+
"0:51:32.135" , "0:51:37.389", "profanity", "a..", "A good man who tried to save my [a..] by injecting me into yours",
|
34
|
+
"0:55:27.328" , "0:55:29.830", "profanity", "goodness", "[goodness] help us",
|
35
|
+
"1:04:30.496" , "1:04:35.709", "profanity", "sh..", "Frankly I don't rive a [sh..] I'm only in this for the money",
|
36
|
+
"1:13:24.572" , "1:13:27.824", "profanity", "goodness", "It's Wendy My [goodness] Jack",
|
37
|
+
"1:15:22.398" , "1:15:26.568", "profanity", "make love", "One I [make love] with my boots on",
|
38
|
+
"1:15:33.535" , "1:15:38.747", "profanity", "sh..", "I know I've been mean to you Jack I can be such a [sh..] sometimes",
|
39
|
+
"1:17:19.724" , "1:17:23.894", "profanity", "goodness", "[goodness] I can't believe how hostile I feel towards you right now",
|
40
|
+
"1:18:11.693" , "1:18:14.152", "profanity", "b....", "Duke the son of a [b....]",
|
41
|
+
"1:20:41.634" , "1:20:44.553", "profanity", "goodness", "Jack My [goodness]",
|
42
|
+
"1:26:16.845" , "1:26:20.180", "profanity", "goodness", "[goodness] in heaven deliver us from Satan",
|
43
|
+
"1:30:33.977" , "1:30:37.312", "profanity", "he..", "Jack Where the [he..] am I",
|
44
|
+
"1:36:14.359" , "1:36:17.027", "profanity", "sh..", "Maybe it's one of these [sh..]",
|
45
|
+
"1:36:45.056" , "1:36:47.808", "profanity", "goodness", "Oh my [goodness] cover your eyes",
|
46
|
+
"1:36:52.105" , "1:36:55.649", "profanity", "da..", "Come on rive me the [da..] chip",
|
47
|
+
"1:38:52.183" , "1:38:54.184", "profanity", "sh..", "Oh [sh..]",
|
48
|
+
"1:46:19.297" , "1:46:22.382", "profanity", "goodness", "There's a phone thank [goodness]",
|
49
|
+
"1:53:12.460" , "1:53:15.629", "profanity", "he..", "we sure made one [he..] of a team",
|
50
|
+
|
51
|
+
"1848.0", "1851.0", "profanity", "deity",
|
52
|
+
"1905.0", "1910.0", "profanity", "he..", "ozzie I can't hear you I hope the [he..] you can hear me",
|
53
|
+
"2105.5", "2108.5", "profanity", "he..", "how the [he..] can I be inside of a man",
|
54
|
+
"3257.4", "3260.4", "profanity", "he..", "I don't know what the [he..] you look like",
|
55
|
+
|
56
|
+
"3980.5", "3983.5", "profanity", "he..",
|
57
|
+
"4062.5", "4066.5", "profanity", "deity", # 761.5
|
58
|
+
"4551.0", "4556.04", "lewd", "haven't slept with",
|
59
|
+
],
|
60
|
+
|
61
|
+
"blank_outs" => [
|
62
|
+
"310.3", "323.3", "lewd", "some sexual-y tension",
|
63
|
+
"381.6", "413.7", "lewd", "implied sleepover",
|
64
|
+
"482.5", "488.0", "nudity", "bum",
|
65
|
+
"3582.04", "3593.04", "vulgar", "bathroom humor don't talk to it",
|
66
|
+
"3788.04", "3793.84", "lewd", "warm him up", # untested
|
67
|
+
"6361.84", "6374.04", "gross", "human skeleton",
|
68
|
+
],
|
69
|
+
|
70
|
+
"volume_name" => "INNERSPACE",
|
71
|
+
"disk_unique_id" => "703ca989|09797818",
|
72
|
+
"dvd_title_track" => "1",
|
73
|
+
"dvd_title_track_length" => "7176.233",
|
74
|
+
"opensubtitles_number" => "http://www.opensubtitles.org/en/subtitles/3264986/innerspace-en",
|
75
|
+
# "not edited out stuff" => "some violence left in...",
|
76
|
+
"closing thoughts" => "mature elements have mostly been removed, needs a third check",
|
77
|
+
"mplayer_dvd_splits" => ["3304.04"], # TODO lacking one but I think it's ok
|