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.
Files changed (51) hide show
  1. data/.gitmodules +3 -0
  2. data/README +9 -6
  3. data/TODO +91 -41
  4. data/VERSION +1 -1
  5. data/bin/sensible-cinema +13 -1506
  6. data/bin/sensible-cinema-cli +156 -151
  7. data/change_log_with_feature_list.txt +17 -2
  8. data/developer_how_to_contribute_to_the_project.txt +3 -2
  9. data/documentation/upconversion.txt +4 -0
  10. data/history_and_related_works_list.txt +1 -0
  11. data/{play_with_inserted_scene.bat → legal/play_with_inserted_scene.bat} +0 -0
  12. data/{play_with_overlay.bat → legal/play_with_overlay.bat} +0 -0
  13. data/legal2 +2 -0
  14. data/lib/count_down_timer_jruby_swing.rb +3 -4
  15. data/lib/edl_parser.rb +345 -339
  16. data/lib/eight_three.rb +6 -1
  17. data/lib/gui/sensible-cinema-base.rb +671 -0
  18. data/lib/gui/sensible-cinema-create.rb +304 -0
  19. data/lib/{sensible-cinema-dependencies.rb → gui/sensible-cinema-dependencies.rb} +0 -0
  20. data/lib/gui/sensible-cinema-normal.rb +349 -0
  21. data/lib/gui/sensible-cinema-side-by-side.rb +27 -0
  22. data/lib/gui/sensible-cinema-upconvert.rb +254 -0
  23. data/lib/screen_tracker.rb +1 -0
  24. data/spec/edl_parser.spec.rb +6 -0
  25. data/spec/notes +107 -16
  26. data/spec/sensible_cinema_gui.spec.rb +63 -58
  27. data/todo.inventionzy.txt +12 -0
  28. data/todo.propaganda +1 -2
  29. data/todo.upconvert +3 -1
  30. data/upconvert_netflix/record_screen/record.bat +2 -0
  31. data/upconvert_netflix/record_screen/recording/1.png +0 -0
  32. data/upconvert_netflix/record_screen/recording/10.png +0 -0
  33. data/upconvert_netflix/record_screen/recording/2.png +0 -0
  34. data/upconvert_netflix/record_screen/recording/3.png +0 -0
  35. data/upconvert_netflix/record_screen/recording/4.png +0 -0
  36. data/upconvert_netflix/record_screen/recording/5.png +0 -0
  37. data/upconvert_netflix/record_screen/recording/6.png +0 -0
  38. data/upconvert_netflix/record_screen/recording/7.png +0 -0
  39. data/upconvert_netflix/record_screen/recording/8.png +0 -0
  40. data/upconvert_netflix/record_screen/recording/9.png +0 -0
  41. data/upconvert_netflix/record_screen/recording/d.png +0 -0
  42. data/www/content_editor.html +2 -2
  43. data/zamples/edit_decision_lists/dvds/edls_being_edited/cars_disney.txt +5 -7
  44. data/zamples/edit_decision_lists/dvds/innerspace.txt +77 -0
  45. data/zamples/edit_decision_lists/netflix_instant/avatar-last-air-bender-movie.txt +12 -0
  46. data/zamples/edit_decision_lists/netflix_instant/avatar-last-airbender-series.txt +1 -0
  47. data/zamples/players/netflix/netflix_firefox_non_maximized.txt +1 -1
  48. metadata +28 -11
  49. data/lib/file_chooser.rb +0 -46
  50. data/lib/swing_helpers.rb +0 -142
  51. 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 not die if you file select a poorly formed edl (should warn though)" do
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
- if time_through == 0
42
- time_through += 1
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.should_not be nil
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 match(/selected_file/)
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!(:new_nonexisting_filechooser) {
110
- FakeFileChooser.new
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!(:new_nonexisting_filechooser) { # save to
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
- FileUtils.touch 'selected_file'
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
- 3.times { @subject.do_create_edited_copy_via_file(false) }
204
+ 5.times {
205
+ @subject.do_create_edited_copy_via_file(false)
206
+ }
198
207
  count1.should == 1
199
- count2.should == 1
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 in it" do
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) {} # stub this out
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 things go well" do
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
- join_background_thread
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 for ya" do
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
- # normally "378.0 379.1 1"
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(:new_nonexisting_filechooser) {|a, b|
458
- a = ''
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", "spec/files/edls/edls_being_edited/edl_for_unit_tests.txt")
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
- @subject = MainWindow.new false
559
- MainWindow::LocalStorage['screen_multiples'] = 2.0 # default so it won't fail us...
560
- @subject.add_change_upconvert_buttons
561
- @subject.stub(:display_current_upconvert_setting) {} # no popup ;)
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
@@ -33,8 +33,7 @@ coupons
33
33
 
34
34
  some conglom of those ? :P
35
35
 
36
-
37
-
36
+ http://www.millennialstar.org/unrated-vs-clean-it%E2%80%99s-time-to-demand-choose-your-own-rating-dvd-options/
38
37
 
39
38
 
40
39
  dvd/movies/films replace?
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?
@@ -0,0 +1,2 @@
1
+ mkdir recording
2
+ ffmpeg -f dshow -i video="screen-capture-recorder" -vframes 10 -y recording/%%d.png
@@ -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
- # "opensubtitles_number" => "4022054",
40
- # "not edited out stuff" => "some violence left in...",
41
- # "closing thoughts" => "only did the...",
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