sensible-cinema 0.25.2 → 0.25.3

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -14,7 +14,7 @@ Jeweler::Tasks.new do |s|
14
14
  s.add_dependency 'rdp-win32screenshot', '= 0.0.9'
15
15
  s.add_dependency 'mini_magick', '>= 3.1' # for ocr...
16
16
  s.add_dependency 'whichr', '>= 0.3.6'
17
- s.add_dependency 'rautomation', '> 0.6.3'
17
+ s.add_dependency 'rdp-rautomation', '> 0.6.3' # LODO
18
18
  s.add_dependency 'rdp-ruby-wmi' # for windows
19
19
  s.add_dependency 'plist' # for mac
20
20
  s.add_dependency 'ffi' # mouse, etc. needed at least for windows MRI
data/TODO CHANGED
@@ -1,9 +1,11 @@
1
1
  == roadmap [for just tasks, see below though] ==
2
2
 
3
- release: C EDL
4
- compare netflix/blu-ray timings et al
3
+ netflix instant for OS X
4
+ upconvert DVD/netflix
5
+ C EDL
5
6
 
6
7
  === loose ordering/eventually ===
8
+ compare netflix/blu-ray timings et al
7
9
  linearize [?] hmm...
8
10
  re-update todo/all docu/user feedback etc.
9
11
  create web site/api-ify
@@ -16,26 +18,29 @@
16
18
  == high prio like blocking bugs ==
17
19
 
18
20
  == under next release specific items: ==
19
- it can filter out specific profanities even, too :P
20
21
 
21
22
  == yes do ordered in conjunction with the above probably ==
22
23
 
23
24
  == yes do, un-ordered currently, from the various future release options ==
25
+ can move the mouse 10 pixels down at the beginning, in order to...put it in the right place.
24
26
  both mute and blank when blanking by default... (add the other type in there, esp. if a man answers)
25
- cars EDL x2
27
+ make it suck in single EDL from imdb based on a list
28
+ test court jester :)
26
29
  lightning strike from various outlets...
27
30
  release at some point...Oliver? facebook? (one at a time...)
28
- research VOB
29
- timesplits?
31
+ research VOB dirs
32
+ still needs timesplits? what about in XBMC? what about XBMC with DVD's
30
33
  todo.upconvert
31
- netflix quality upconverter
34
+ netflix quality upconverter, have a go at it
35
+ finalize screen capture
32
36
  have people test it
33
37
  me test it
34
38
  1x, 2x Sintel
35
39
  snapshots of Sintel "normal", then deploy the various comparison pics
36
- netflix instant for OS X
37
40
  add new open button "edit the one for current DVD"
41
+ "fix" mplayer EDL pausing [?]
38
42
  the open button should open in the "editing" EDL dir.
43
+ warn against makemkv (and check it, too, and offer a bounty! :)
39
44
  an overlapping mute failure when you hit the "watch edited realtime" should popup.
40
45
  split out the "dependency" code
41
46
  try buy edit lists from all x,y,z [?] offer them money LOL
@@ -61,22 +66,19 @@
61
66
  oh wait we weren't even using it right to begin with LOL
62
67
  plus it needs to "always just skip instead of mute" for now I guess
63
68
  report XBMC bugs, too.
64
- split into various separate windows themselves...
65
69
  consistency for flight of nav. srt? huh?
66
70
  consistency of others, also "DVD reported full-time versus ts time" for others...
67
71
  subtitles: if at beginning of a sub, add extra offset...hmm...why not?
68
- say something if the EDL is actually "empty" :)
69
72
  fix released version to downloadable work in mac
70
73
  report ffmpeg bug, mplayer various (as bugs):P
71
74
  "--developer" mode
72
- export JSON command line, note it in the docu, show it in --developer mode, no new bat file for developer mode
75
+ has "export JSON command line, reload code" , note it in the docu
73
76
  new button "auto-test" a subtitles file for timing :)
74
- new upconv button: auto-take some snapshots (just to straight mjpeg or jpeg or the what not)
75
- @jruby scan court jester is *so* slow...what the...[mac at least...]
77
+ new upconv button: auto-take some snapshots (just to straight mjpeg or jpeg or the what not [?])
76
78
  advertise urug again?
77
79
  after works in mac. Why not?
78
80
  advertise virtual audio
79
- advertise virtual desktop :)
81
+ advertise screen capture
80
82
  mplayer directx patch check it...
81
83
  auto-add largest title to the generator EDL
82
84
  complain if times looks wrong...on playback? sum time
@@ -112,13 +114,14 @@
112
114
  try out disney digital copy
113
115
  C player:
114
116
  folder, look for title.edl
115
- use DVD navigator
117
+ use DVD navigator (check)
116
118
  just use mplayer EDL syntax, plus a title track (or just detect track change, if long enough, assume... :P) :)
117
119
  http://msdn.microsoft.com/en-us/library/ms787412(VS.85).aspx
118
120
  http://msdn.microsoft.com/en-us/library/dd407175(v=VS.85).aspx can be synchronous? might be a good first pass...
119
121
  PlayPeriodInTitleAutoStop EC_DVD_PLAYPERIOD_AUTOSTOP
120
122
  make it frame accurate output text :)
121
123
  allow it to "just play from X to Y exactly" ...
124
+ can start fullscreen
122
125
  does this line up right/perfect? can it work, at all?
123
126
  lodo:
124
127
  update its semi-bad error messages...
@@ -127,28 +130,25 @@
127
130
  note pay for XP http://windows.microsoft.com/en-US/windows/downloads/windows-media-player/plug-ins search for the cheapest
128
131
  note to them windows vista/7: use ac3filter [?]
129
132
  [A,B]
133
+ once I can jump around, advertise as a phantom editor :)
130
134
  note better to previewer "you are about to preview these specific edits..." ?
131
135
  ask for more beta testers for use, ask for more beta testers for creation, too
132
136
  rinse and repeat with various ppl
133
- create a semi-accurate phantom edit EDL
137
+ create a semi-accurate phantom edit EDL [?] just with splits
134
138
  http://www.chefelf.com/forums/index.php?showtopic=6176
135
- inventionzy: blu-ray stuff from todo.inventionzy
136
- port to mac OS X
137
- ppc dvdid? documentation button? notepad?
138
139
  the final "edited.avi" really "could/should" be playable in WMP...if possible
139
140
  add button "fast preview segment" (from dvd)
140
- add button "fast preview one" (from file) smplayer
141
- upconvert research/compare various options
142
- test it out (+- with people)
143
- propaganda it
141
+ upconvert
142
+ test it out (+- with others)
144
143
  investigate WMC "call out to smplayer + EDL" or the like...
145
144
  add to docu
146
145
  be a hero and sync the dvdnav repo's [?] also fix mplayer not being able to startup on some dvd's what the...this is nuts!
147
146
  I'm almost beginning to think VLC for files, DEBUG_C player for DVD's (except on mac, where they just have to live hosed)
148
147
  or maybe...umm...ask the dvdnav people why it might work with one and not the other? ask VLC? huh? what the...
149
148
  call out to VLC on DVDNAV_ERROR occurrence? what the... if can reproduce, submit bug report with trace et al.
149
+ virtual desktop -> real input
150
150
 
151
- == other lists to do ==
151
+ == other lists to not do (duplicate the todo here if want to actually do it though) ==
152
152
 
153
153
  todo.upconvert
154
154
  todo.propaganda
@@ -161,6 +161,12 @@
161
161
  == DVD decide later to move up or down ==
162
162
 
163
163
  == DVD+-DVD-realtime backlog (totally unordered, some very low prio, basically all never do) ==
164
+ inventionzy: blu-ray stuff from todo.inventionzy
165
+ figure out a way to get to the roku [ps3ms?], +- netflix edited to roku LOL
166
+ advertise virtual desktop :)
167
+ port to mac OS X
168
+ ppc dvdid? documentation button? notepad?
169
+ say something if the EDL is actually "empty" :)
164
170
  already donated: unlocker, mac fan thing, open office, many sourceforge tops, 7zip, VLC, mplayer, cannot donate: ffmpeg
165
171
  note "you want to optimize your reverse blitting first... :)"
166
172
  if 2 EDL's, still can choose a title track
@@ -258,7 +264,6 @@
258
264
  @makemkv: wrong title no:Title #0 was added (7 cell(s), 0:14:58)
259
265
  Title #1 was added (8 cell(s), 0:14:57), also give us title no's in the dialog :P
260
266
  @mencoder you lop off the end somehow (dvd rip)
261
- @VLC: plugin for EDL maybe? [when opening file/DVD look for .edl file?]
262
267
  blu ray timing
263
268
  my one, others. Are they the same as DVD's? They seem really close...
264
269
  pull in information from thetvdb to the GUI app
@@ -431,8 +436,6 @@ take out use_class_name for descriptors
431
436
 
432
437
  after 2020: DVD Navigator in C++ ?
433
438
 
434
- it should track "is paused" better (OCR)
435
-
436
439
  something that works with cable TV, too, somehow?
437
440
 
438
441
  if sued, could use straight mplayer -ss (+- one at a time, or possibly in a playlist [?] like VLC can...)
@@ -456,10 +459,8 @@ fix:
456
459
 
457
460
  byu.tv descriptor
458
461
  youtube non full screen: work with all browsers
459
- easier "here's how on the command line, BTW"
460
462
  amazon player
461
- a netflix player descriptor
462
- "just choose VLCx55" LOL
463
+ "just choose VLCx55" LOL
463
464
 
464
465
  Just fold if s....
465
466
 
@@ -566,8 +567,6 @@ control volume programmatically (using mouse) on the player itself.
566
567
  control mute programmatically (using mouse) on the player itself.
567
568
  control location programmatically (using mouse) on the player itself.
568
569
 
569
- compare VLC (and other) timings with a real DVD player, and with netflix instant, etc.
570
-
571
570
  Have a "list of all known movies (url's)" and be able to open (IE et al) to the correct part, and start playing them, and they work...
572
571
  or known parseable imdb's
573
572
 
@@ -637,7 +636,7 @@ maybe require them to rip their stuff "through some means or other" and we'll op
637
636
  give money to nomachine--wow!
638
637
 
639
638
  a boxee api?
640
- I *could* record netflix movies, then edit those manually (or mapped-ly)...meh clearplay needs some niche--we don't have each other after all.
639
+ I *could* record netflix movies, then edit those manually (or mapped-ly)...meh clearplay needs some niche--we don't have each other after all, plus legality
641
640
  donate to the top 25 sourceforge's that don't look illegal, esp. if haven't before
642
641
  @mplayer: allow the equals in this: mplayer dvdnav:// -dvd-device=f:
643
642
 
@@ -651,7 +650,5 @@ RuntimeError: poor width or wrong window 94 1 71
651
650
 
652
651
  create a "map" of VLC DVD timings to "real" timings via tracking. Hopefully never necessary...
653
652
 
654
- if it looks paused I should basically pause my tracking [if it looks nothing, then keep going with my tracking]
655
653
  it fails on "friday" tracks 0:48 as 1:48
656
654
  probably at startup should not start at 0, either, wait for first screen trackage
657
- figure out a way to get to the roku [ps3ms?], +- netflix edited to roku LOL
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.25.2
1
+ 0.25.3
@@ -166,10 +166,18 @@ module SensibleSwing
166
166
  add_text_line ''
167
167
 
168
168
  end
169
+
170
+ def self.new_child_window
171
+ out = MainWindow.new
172
+ out.setDefaultCloseOperation(JFrame::DISPOSE_ON_CLOSE)
173
+ out
174
+ end
169
175
 
170
176
  def add_change_upconvert_options_button
171
- @show_upconvert_options = new_jbutton("Change Upconvert Options") do
172
- add_setup_upconvert_buttons
177
+ @show_upconvert_options = new_jbutton("Set Playback Upconversion Options") do
178
+ upconvert_window = MainWindow.new_child_window
179
+ upconvert_window.add_setup_upconvert_buttons
180
+ # now join it, oops that isn't possible [?]
173
181
  end
174
182
  @show_upconvert_options.tool_tip= "Allows you to set your upconvert options.\nUpconverting attempts to playback your movie with higher quality on high resolution monitors."
175
183
  end
@@ -181,7 +189,7 @@ module SensibleSwing
181
189
  end
182
190
 
183
191
  def change_upconvert_line_to_current
184
- @upconv_line.set_text get_current_upconvert_as_phrase
192
+ @upconv_line.set_text get_current_upconvert_as_phrase if @upconv_line
185
193
  end
186
194
 
187
195
  def select_new_sxs_style
@@ -335,8 +343,12 @@ module SensibleSwing
335
343
  end
336
344
 
337
345
  def setup_advanced_buttons
338
-
339
- add_text_line 'Realtime create Options:'
346
+
347
+ new_jbutton("Display the standard buttons") do
348
+ setup_normal_buttons
349
+ end
350
+
351
+ add_text_line 'Realtime/Create Options:'
340
352
 
341
353
  @create_new_edl_for_current_dvd = new_jbutton("Create new Edit List for a DVD",
342
354
  "If your DVD doesn't have an EDL created for it, this will be your first step--create an EDL file for it.")
@@ -345,29 +357,12 @@ module SensibleSwing
345
357
  @display_dvd_info.simulate_click # for now...
346
358
  end
347
359
 
348
- @open_list = new_jbutton("Open/Edit a previously created EDL file", "If your DVD has a previously existing EDL for it, you can open it to edit it with this button.")
360
+ @open_list = new_jbutton("Open/Edit a previously created Edit List file", "If your DVD has a previously existing EDL for it, you can open it to edit it with this button.")
349
361
  @open_list.on_clicked {
350
362
  filename = new_existing_file_selector_and_select_file( "Pick any file to open in editor", EdlParser::EDL_DIR)
351
363
  open_file_to_edit_it filename
352
364
  }
353
365
 
354
-
355
- @create_dot_edl = new_jbutton( "Create a side-by-side moviefilename.edl file")
356
- @create_dot_edl.tool_tip = <<-EOL
357
- Create a moviefilename.edl file (corresponding to some moviefilename.some_ext file already existing)
358
- XBMC/smplayer (smplayer can be used by WMC plugins, etc.) "automagically detect",
359
- if it exists, and automatically use it .edl to show that file edited played back.
360
- If you use smplayer, note that you'll need to download the "lord mulder mplayer"
361
- version (which includes an updated version of mplayer that fixes some bugs in EDL playback)
362
- EOL
363
- @create_dot_edl.on_clicked {
364
- choose_file_and_edl_and_create_sxs_or_play true
365
- }
366
-
367
- new_jbutton("Select side by side EDL file style (smplayer vs. XBMC)") do
368
- select_new_sxs_style
369
- end
370
-
371
366
  @play_smplayer = new_jbutton( "Watch full DVD unedited (realtime smplayer)")
372
367
  @play_smplayer.tool_tip = <<-EOL
373
368
  This will play the DVD unedited within smplayer.
@@ -392,6 +387,34 @@ module SensibleSwing
392
387
  @play_mplayer_raw.on_clicked {
393
388
  play_dvd_smplayer_unedited true, true, true
394
389
  }
390
+
391
+ @parse_srt = new_jbutton("Scan a subtitle file (.srt) to detect profanity times automatically" )
392
+ @parse_srt.tool_tip = <<-EOL
393
+ You can download a .srt file and use it to automatically search for profanities.
394
+ Basically download it from opensubtitles.org (possibly from other sites, too),
395
+ (enter dvd name in the search box, click a result, click one from the list with an English flag, then click 'Download(zip)')
396
+ Once you download the zip, unzip it, and then compare the timestamps in it with those on the DVD (see the button "Watch DVD unedited (realtime mplayer)")
397
+ NB that you'll first want/need to *carefully* double check your subtitle
398
+ file with the actual DVD. (ex: smplayer, hit the 'o' button to display
399
+ the current timestamp, then go to the end, stop at some point with text
400
+ and hit the '.' key until a subtitle very first displays.
401
+ Next convert that number to 29.97 fps (using the button given).
402
+ The numbers should match precisely. If they don't, edit this file
403
+ so that it will have some offsets given.
404
+ EOL
405
+
406
+ @parse_srt.on_clicked do
407
+ filename = new_existing_file_selector_and_select_file("Pick srt file to scan for profanity:")
408
+ add_to_beginning = get_user_input("How much time to subtract from the beginning of each subtitle entry (ex: 1:00 -> 1:01 becomes 0:59 -> 1:01)", "0.0")
409
+ add_to_end = get_user_input("How much time to add to the end of each subtitle entry (ex: 1:00 -> 1:01 becomes 1:00 -> 1:02)", "0.0")
410
+ parsed = SubtitleProfanityFinder.edl_output filename, {}, add_to_beginning.to_f, add_to_end.to_f # flight: TODO necessary typically ??? 0.35, 0.25
411
+ File.write(EdlTempFile, "# add these into your mute section if you deem them mute-worthy\n" + parsed)
412
+ open_file_to_edit_it filename, true
413
+ sleep 0.3 if OS.mac? # add delay...
414
+ open_file_to_edit_it EdlTempFile
415
+ end
416
+
417
+
395
418
 
396
419
  @display_dvd_info = new_jbutton( "Display information about current DVD (ID, etc.)" )
397
420
  @display_dvd_info.tool_tip = "This is useful to setup a DVD's 'unique ID' within an EDL for it. \nIf your EDL doesn't have a line like disk_unique_id => \"...\" then you will want to run this to be able to add that line in."
@@ -412,27 +435,30 @@ module SensibleSwing
412
435
  @convert_seconds_to_ts = new_jbutton( "Convert 3600 <-> 1:00:00 style timestamps" )
413
436
  @convert_seconds_to_ts.on_clicked {
414
437
  input = get_user_input("Enter \"from\" timestamps, like 3600 or 1:40:00:", "1:00:00.1 or 3600.1")
415
- if input =~ /:/
416
- output = EdlParser.translate_string_to_seconds input
417
- else
418
- output = EdlParser.translate_time_to_human_readable input.to_f, true
419
- end
420
- show_copy_pastable_string("Converted:", output)
438
+ while(input)
439
+ if input =~ /:/
440
+ output = EdlParser.translate_string_to_seconds input
441
+ else
442
+ output = EdlParser.translate_time_to_human_readable input.to_f, true
443
+ end
444
+ input = show_copy_pastable_string("Converted:", output)
445
+ end
421
446
  }
422
447
 
423
- @convert_timestamp = new_jbutton( "Convert timestamp from DVD player time (30 fps) to EDL player time (29.97 fps)" )
448
+ @convert_timestamp = new_jbutton( "Convert timestamp from DVD player time to EDL time (30->29.97 fps)" )
424
449
  @convert_timestamp.tool_tip=<<-EOL
425
- Our EDL's assume 29.97 fps (which is what a DVD is). Unfortunately most hardware/commercial DVD players
426
- assume that the DVD is 30 fps, which means that if you watch a movie with them, then use those timestamps
427
- for your EDL file, you will be off, at the end of a 2 hour film, by 8 seconds. So all your edits will be wrong.
450
+ Our EDL's assume 29.97 fps (which is what a DVD actually has). Unfortunately most hardware or commercial DVD players
451
+ think that the DVD is 30 fps, which means that if you use them for timestamps for your EDL's,
452
+ you will be slightly off (at the end of a 2 hour film, by 8 seconds). So all your edits will be wrong.
428
453
  How to fix: convert your times from "DVD player" time to "EDL accurate" time by using this button.
429
- This is necessary for hardware DVD player timestamps, PowerDVD, Windows Media Player (playing a DVD),
430
- but not necessary for smplayer timestamps (or mplayer's "V: 3600" in the command line), which are already 29.97.
454
+ This is necessary for all hardware DVD player timestamps, PowerDVD player (software), Windows Media Player (playing a DVD),
455
+ and mplayer's "on screen display" DVD timestamps.
456
+ It is not necessary for smplayer timestamps (or mplayer's "V: 3600" in the command line), which are already 29.97.
431
457
  smplayer's on-screen-display (the 'o' key) is accurate (and doesn't suffer from dvd_mplayer_splits)
432
458
  but is 30 fps, so timestamps would need to be converted.
433
459
  Dont use VLC for DVD timestamps at all--it can get up to 30s off! VLC playing back a file is usually pretty accurate to 29.97.
434
460
  In general, GUI's like VLC or smplayer are always a tidge off (maybe 0.3s) from the right timestamp, so take that into consideration.
435
- Mplayers "V: 3600" is usually right on, however.
461
+ Mplayers "V: 3600" is usually right on (29.97 fps), however.
436
462
  EOL
437
463
  @convert_timestamp.on_clicked {
438
464
  thirty_fps = get_user_input("Enter your DVD (30 fps) timestamp, I'll convert it to 29.97 (usable in EDL's):", "1:00:00.1")
@@ -442,32 +468,37 @@ module SensibleSwing
442
468
  show_copy_pastable_string("Sensible cinema usable value (29.97 fps) for #{thirty_fps} would be: ", human_twenty_nine_seven)
443
469
  }
444
470
 
445
- @parse_srt = new_jbutton("Scan a subtitle file (.srt) to detect profanity times automatically" )
446
- @parse_srt.tool_tip = <<-EOL
447
- You can download a .srt file and use it to automatically search for profanities.
448
- Basically download it from opensubtitles.org (possibly from other sites, too),
449
- (enter dvd name in the search box, click a result, click one from the list with an English flag, then click 'Download(zip)')
450
- Once you download the zip, unzip it, and then compare the timestamps in it with those on the DVD (see the button "Watch DVD unedited (realtime mplayer)")
451
- NB that you'll first want/need to *carefully* double check your subtitle
452
- file with the actual DVD. (ex: smplayer, hit the 'o' button to display
453
- the current timestamp, then go to the end, stop at some point with text
454
- and hit the '.' key until a subtitle very first displays.
455
- Next convert that number to 29.97 fps (using the button given).
456
- The numbers should match precisely. If they don't, edit this file
457
- so that it will have some offsets given.
471
+ @create_dot_edl = new_jbutton( "Create a side-by-side moviefilename.edl file")
472
+ @create_dot_edl.tool_tip = <<-EOL
473
+ Creates a moviefilename.edl file (corresponding to some moviefilename.some_ext file already existing)
474
+ XBMC/smplayer (smplayer can be used by WMC plugins, etc.) "automagically detect",
475
+ if it exists, and automatically use it .edl to show that file edited played back.
476
+ If you use smplayer, note that you'll need to download the "lord mulder mplayer"
477
+ version (which includes an updated version of mplayer that fixes some bugs in EDL playback)
458
478
  EOL
479
+ @create_dot_edl.on_clicked {
480
+ choose_file_and_edl_and_create_sxs_or_play true
481
+ }
482
+
483
+ # new_jbutton("Select side by side EDL file style (smplayer vs. XBMC)") do
484
+ # select_new_sxs_style # TODO
485
+ # end
459
486
 
460
- @parse_srt.on_clicked do
461
- filename = new_existing_file_selector_and_select_file("Pick srt file to scan for profanity:")
462
- add_to_beginning = get_user_input("How much time to subtract from the beginning of each subtitle entry (ex: 1:00 -> 1:01 becomes 0:59 -> 1:01)", "0.0")
463
- add_to_end = get_user_input("How much time to add to the end of each subtitle entry (ex: 1:00 -> 1:01 becomes 1:00 -> 1:02)", "0.0")
464
- parsed = SubtitleProfanityFinder.edl_output filename, {}, add_to_beginning.to_f, add_to_end.to_f # flight: TODO necessary typically ??? 0.35, 0.25
465
- File.write(EdlTempFile, "# add these into your mute section if you deem them mute-worthy\n" + parsed)
466
- open_file_to_edit_it filename, true
467
- sleep 0.3 if OS.mac? # add delay...
468
- open_file_to_edit_it EdlTempFile
487
+
488
+ add_text_line 'Create Options that first create/use a local intermediary file:'
489
+
490
+ new_jbutton("Show options that first create/use a local intermediary file") do
491
+ window = MainWindow.new_child_window
492
+ window.add_options_that_use_local_files
469
493
  end
470
494
 
495
+ # @reload = new_jbutton("reload bin/sensible-cinema code") do
496
+ # load $0
497
+ # end
498
+
499
+ end # advanced buttons
500
+
501
+ def add_options_that_use_local_files
471
502
  add_text_line 'Create Options that first create/use a local intermediary file:'
472
503
 
473
504
  @preview_section = new_jbutton( "Preview a certain time frame from fulli file (edited)" )
@@ -507,13 +538,8 @@ module SensibleSwing
507
538
  nice_file = wrote_to_here_fulli
508
539
  run_smplayer_blocking nice_file, nil, "-edl #{normalize_path EdlTempFile}", false, true
509
540
  }
510
-
511
- @reload = new_jbutton("reload bin/sensible-cinema code") do
512
- load $0
513
- end
514
-
515
- end # advanced buttons
516
-
541
+ end
542
+
517
543
  # converts to full path, 8.3 if on doze
518
544
  def normalize_path path
519
545
  path = File.expand_path path
@@ -521,7 +547,8 @@ module SensibleSwing
521
547
  end
522
548
 
523
549
  def setup_normal_buttons
524
-
550
+ add_text_line ""
551
+
525
552
  @mplayer_edl = new_jbutton( "Watch DVD edited (realtime)")
526
553
  @mplayer_edl.tool_tip = "This will watch your DVD in realtime from your computer while skipping/muting questionable scenes."
527
554
  @mplayer_edl.on_clicked {
@@ -551,7 +578,7 @@ module SensibleSwing
551
578
  add_open_documentation_button
552
579
  end
553
580
 
554
- add_change_upconvert_options_button
581
+ add_change_upconvert_options_button
555
582
 
556
583
  @progress_bar = JProgressBar.new(0, 100)
557
584
  @progress_bar.set_bounds(44,@starting_button_y,@button_width,23)
@@ -592,11 +619,11 @@ module SensibleSwing
592
619
  ARGV.index("--upconvert-mode")
593
620
  end
594
621
 
595
- def initialize
622
+ def initialize be_visible = true
596
623
  super "Sensible-Cinema #{VERSION} (GPL)"
597
624
  force_accept_license_first
598
625
 
599
- setDefaultCloseOperation JFrame::EXIT_ON_CLOSE
626
+ setDefaultCloseOperation JFrame::EXIT_ON_CLOSE # default is exit on close
600
627
  @panel = JPanel.new
601
628
  @buttons = []
602
629
  @panel.set_layout nil
@@ -608,26 +635,25 @@ module SensibleSwing
608
635
  @starting_button_y += 10 # kinder ugly...
609
636
  add_text_line " Rest mouse over buttons for \"help\" type descriptions (tooltips)."
610
637
  add_text_line ""
611
- add_text_line ""
612
638
 
613
639
  setIconImage(ImageIcon.new(__DIR__ + "/../vendor/profs.png").getImage())
614
640
  check_for_various_dependencies
641
+ set_visible be_visible
615
642
  end
616
643
 
617
-
618
644
  def setup_default_buttons
619
-
620
645
  if we_are_in_upconvert_mode
621
646
  setup_upconvert_buttons
622
647
  else
623
- setup_normal_buttons
624
648
 
625
649
  if we_are_in_create_mode
626
650
  setup_advanced_buttons
627
651
  add_text_line 'Contact:'
652
+ else
653
+ setup_normal_buttons
628
654
  end
629
655
 
630
- @upload = new_jbutton("Submit feedback/Upload/Request Help") # keep this one last! :)
656
+ @upload = new_jbutton("Submit Feedback/Upload new EDL's/Request Help") # keeps this one last! :)
631
657
  @upload.tool_tip = "We welcome all feedback!\nQuestion, comments, request help.\nAlso if you create a new EDL, please submit it back to us so that others can benefit from it later!"
632
658
  @upload.on_clicked {
633
659
  system_non_blocking("start mailto:sensible-cinema@googlegroups.com")
@@ -1098,7 +1124,9 @@ module SensibleSwing
1098
1124
 
1099
1125
  def get_user_input(message, default = '', cancel_ok = false)
1100
1126
  received = JOptionPane.showInputDialog(message, default)
1101
- raise 'user cancelled' unless received unless cancel_ok
1127
+ unless cancel_ok
1128
+ raise 'user cancelled' unless received
1129
+ end
1102
1130
  received
1103
1131
  end
1104
1132
 
@@ -1496,7 +1524,6 @@ if $0 == __FILE__
1496
1524
  else
1497
1525
  a = SensibleSwing::MainWindow.new
1498
1526
  a.setup_default_buttons
1499
- a.set_visible true
1500
1527
  puts 'Please use the Sensible Cinema GUI window popup...'
1501
1528
  if ARGV.index('--exit-immediately')
1502
1529
  a.dispose
@@ -6,7 +6,7 @@ module SensibleSwing
6
6
  def self.download full_url, to_here
7
7
  require 'open-uri'
8
8
  require 'openssl'
9
- eval("OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE")
9
+ eval("OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE") if full_url =~ /https/
10
10
  writeOut = open(to_here, "wb")
11
11
  writeOut.write(open(full_url).read)
12
12
  writeOut.close
@@ -1,3 +1,60 @@
1
+ == 0.25.3 ==
2
+
3
+ Mostly explore some more "inventionzy" ideas.
4
+ Add abiliy to filter whole categories of content (allow/disallow them), or levels of content, based on
5
+ user perceived level/user desired, including opposite.
6
+
7
+ Note also that we have successfully discovered how to integrate with playing through peoples'
8
+ portable playing devices/consoles (windows media center--use plugins, XBMC, use its EDL's, ps3ms, use EDL's),
9
+ see mailing list.
10
+
11
+ Also a lot of work has been done on upconverting screen capture, which can also similarly be
12
+ applied to edited movie content, with DVD and/or/ blu-ray and/or online based streaming media.
13
+
14
+ Also we have fairly sophisticated algorithms for determining the correct time to actually do or trust the
15
+ OCR readout, ex: checking for screen change frequently before doing any actual digit detection,
16
+ using third party OCR software reader software, checking to coordinate timestamp signatures when
17
+ "09" goes to "10" or the like. To help the timing needs there. Also we can detect
18
+ arbitrary players, and warn when detect fails/ceases, and detect when it pauses but doesn't fail, et al.
19
+ See also more comments below, etc.
20
+
21
+ Also sensible cinema has been shown to work with 3rd party "subtitle detection" software, run that against
22
+ the film, and it works splendidly. There has also been some experimentation with leveraging 3rd party
23
+ (read: Microsoft) DVD player software/API's/internals in order to effect an appropriate EDL playback,
24
+ with and without messages being sent back and forth between the two programs.
25
+
26
+ We've also experimented with capturing virtual audio (audio out), as well as combining it with
27
+ virtual camera (desktop screen shot capture), in order to be able to beam out what is playing on the
28
+ computer to available devices. This also could be made to work for edited content output, ex: netflix instant
29
+ and since it can select the exact coordinates it needs, it could thus be made to avoid the timestamp
30
+ signature while still being able to keep it on-screen to OCR while the content edited movie is playing.
31
+ Also I have experimented slightly with keeping parts of a window "off screen" but still being able to OCR them
32
+ (windows 7 aero allows this).
33
+
34
+ There is also lots of subtitle comparison helpers, etc., and edited movie segment "checking EDL settings"
35
+ helpers that have been integrated along the way, like a good ol' editing movie software might do.
36
+ We leverage all sorts of nifty things like bringing windows to the top, internal audio api's, all the
37
+ good stuff.
38
+
39
+ Since we integrate with VLC, we already have edited blu-ray playback implicitly, by playing them back
40
+ through slysoft hd-dvd.
41
+
42
+ Note also that I recently showed demos of how an edited player can jump around/skip to scenes within a movie,
43
+ not just playback linear "skipping" content.
44
+
45
+ We have many timing conversion utility helpers (see source for details).
46
+
47
+ Also have ability to auto-generate EDL files based on current DVD et al., and use DVD ID
48
+ generator software, basically from Microsoft, to auto-recognize inserted DVD's.
49
+
50
+ Also note that there was a case recently demoing a new style of skipping: it pauses, then the user
51
+ basically fast forwards or "skips it forward" themself, thus jumping over the questionable scenes.
52
+
53
+ Also note that mine currently allows for "unlimited" levels of detail/categorization of media, it can parse
54
+ it all, and even use it in a limited manner.
55
+
56
+ Note that we can also copy to the clipboard
57
+
1
58
  == 0.25.2 ==
2
59
 
3
60
  It tracks better now if the current OCR tracked player is paused, reverting back to its current timestamp.
@@ -17,7 +17,7 @@ Sensible Cinema only accepts raw "unencrypted" movie streams,
17
17
  so you're going to have to get the movie file off the DVD somehow first.
18
18
  There are a few options available to you.
19
19
  Some options are described here http://wiki.videolan.org/Rip_DVD#Related
20
- (basically, use mplayer, or use both makemkv + tsmuxer).
20
+ (basically, use mplayer, or use both makemkv + tsmuxer [never makemkv by itself, though, it has wrong timings]).
21
21
  Look for the "title track" setting in the EDL to see which you'll want,
22
22
  usually the longest title.
23
23
 
@@ -27,4 +27,4 @@ Slysoft AnyDVD might help out somehow, too, though you shouldn't need to.
27
27
 
28
28
  Report back if you have problems. See README for contact info.
29
29
 
30
- [1] http://www.archive.org/details/BigBuckBunny
30
+ [1] http://www.archive.org/details/BigBuckBunny
@@ -57,16 +57,33 @@ class EdlParser
57
57
  raw
58
58
  end
59
59
 
60
- # converts "blanks" => ["00:00:00", "00", "reason", "01", "01", "02", "02"] into sane arrays, also filters based on category, though disabled
60
+ # converts "blanks" => ["00:00:00", "00", "reason", "01", "01", "02", "02"] into sane arrays, also filters based on category, though disabled for production
61
61
  def self.convert_to_timestamp_arrays array, ok_categories_array
62
62
  out = []
63
63
  while(single_element = extract_entry!(array))
64
- # assume that it's always start_time, end_time, category, number
64
+ # assume that it (could be, at least) start_time, end_time, category, number
65
65
  category = single_element[-2]
66
66
  category_number = single_element[-1]
67
- unless ok_categories_array.index([category, category_number])
68
- out << single_element
67
+ include = true
68
+ if ok_categories_array.index([category, category_number])
69
+ include = false
70
+ elsif ok_categories_array.index([category])
71
+ include = false
72
+ elsif ok_categories_array.detect{|cat, setting| setting.is_a? Fixnum}
73
+ for cat, setting in ok_categories_array
74
+ if cat == category && setting.is_a?(Fixnum)
75
+ # check for a number?
76
+ if category_number.to_i.to_s == category_number
77
+ as_number = category_number.to_i
78
+ if as_number < setting
79
+ include = false
80
+ end
81
+ end
82
+ end
83
+ end
84
+
69
85
  end
86
+ out << single_element if include
70
87
  end
71
88
  out
72
89
  end
@@ -76,16 +76,28 @@ describe EdlParser do
76
76
  out = <<-EOL
77
77
  "mutes" => [
78
78
  "00:10", "00:15", "test category", "1",
79
- "00:20", "00:25", "test category", "2"
79
+ "00:20", "00:25", "test category", "2",
80
+ "00:30", "00:35", "test category", "3"
80
81
  ]
81
82
  EOL
82
83
  parsed = E.parse_string out, nil
83
- parsed["mutes"].length.should == 2 # has them both
84
+ parsed["mutes"].length.should == 3 # has all of them
84
85
 
85
86
  1.upto(2) do |n|
86
87
  parsed = E.parse_string(out, nil, [["test category", n.to_s]] )
87
- parsed["mutes"].length.should == 1 # has them both
88
+ parsed["mutes"].length.should == 2 # excludes one
88
89
  end
90
+ parsed = E.parse_string(out, nil, [["test category", "1"], ["test category", "2"]] )
91
+ parsed["mutes"].length.should == 1 # excludes two
92
+
93
+ # now with...just saying "this entire category is fine"
94
+ parsed = E.parse_string(out, nil, [["test category"]])
95
+ parsed["mutes"].length.should == 0
96
+
97
+ # now with...just saying "levels below this are ok"
98
+ parsed = E.parse_string(out, nil, [["test category", 2]])
99
+ parsed["mutes"].length.should == 2
100
+
89
101
  end
90
102
 
91
103
  it "should parse mplayer_dvd_splits as floats" do
@@ -88,9 +88,11 @@ module SensibleSwing
88
88
  end
89
89
 
90
90
  before do
91
- ARGV << "--create-mode" # want all the buttons for some tests.
92
- @subject = MainWindow.new.setup_default_buttons
93
- ARGV.pop
91
+ @subject = MainWindow.new false # false to speedup tests
92
+ # want lots of buttons :)
93
+ @subject.setup_advanced_buttons
94
+ @subject.setup_normal_buttons
95
+ @subject.add_options_that_use_local_files
94
96
  FileUtils.touch "selected_file.fulli_unedited.tmp.mpg.done" # a few of them need this...
95
97
  FileUtils.touch 'selected_file.avi'
96
98
  @subject.stub!(:choose_dvd_drive_or_file) {
@@ -138,6 +140,7 @@ module SensibleSwing
138
140
  @subject.stub!(:print) {}
139
141
  @subject.stub!(:p) {}
140
142
  @subject.stub!(:puts) {}
143
+ EdlParser.stub!(:p) {}
141
144
  end
142
145
 
143
146
  @subject.stub(:show_non_blocking_message_dialog) {
@@ -552,10 +555,8 @@ module SensibleSwing
552
555
  end
553
556
 
554
557
  it "should be able to upconvert at all" do
555
- ARGV << "--upconvert-mode"
556
- @subject = MainWindow.new.setup_default_buttons
557
- ARGV.pop
558
- click_button(:@show_upconvert_options) # reveal buttons...
558
+ @subject = MainWindow.new false
559
+ @subject.add_setup_upconvert_buttons
559
560
  @subject.stub(:display_current_upconvert_setting) {} # no popup ;)
560
561
  @subject.stub(:show_mplayer_instructions_once) {}
561
562
  click_button(:@medium_dvd)
@@ -1,11 +1,13 @@
1
1
  === patentzy yes actually do vaguely ordered ===
2
- make it suck in large list of EDL's from imdb at build time
3
2
  blu-ray OCR
4
3
  more blu-ray stuff: can ID them, can playback (through...mkv? VLC? powerdvd OCr/scripted?)
5
4
  some blu-ray player descriptor somehow
5
+ can move the mouse 10 pixels down at the beginning, in order to...put it in the right place.
6
6
 
7
- can handle multiple dvdid's et al (same EDL) (kind of already shown)
7
+ can "suck in" a large list of EDL's from imdb at build time, and/or from a wiki (github wiki in this case), and a "resync" button?
8
+ can handle multiple dvdid's et al (same EDL) (mostly do already though)
8
9
  can overlay over online films too
10
+ it can pull in a DVD based just on the dvd-id "query id, not local? go get it from online"
9
11
  control VLC RC to overlay a logo dynamically
10
12
  can control volume *and* play other audio
11
13
  can add to to supplement EDL + EDL timestamps
@@ -15,7 +17,6 @@
15
17
  make it so it can suck in from "another wiki" the DL's, at package time, somehow (just one)
16
18
  or even just suck in any web file, for starters
17
19
  space -> advance from pause until next edit item?
18
- add fine grained "new ratings" to some demo EDL
19
20
  amazon player descriptor, just in case ;P
20
21
  can jerk mouse only every so often (cheap would be to just arbitrarily have it from x to y, demo that)
21
22
  can scan several player descriptors to "pick the right one" (kind of already showed this one)
@@ -27,24 +28,26 @@
27
28
  beep at them/warn when not tracking [?]
28
29
  default on...I think.
29
30
  can jerk mouse more often closer to failure sections...
31
+ and/or resize the playing/streaming window to match it when the mouse "has been moved recently" +- by us, or not.
30
32
  can pull one from imdb at all, video "show it creates a file"
31
- C player: minimize instead of skip :P
32
- C player: don't mute, just almost mute LOL or almost mute and static-ify
33
- can suck it in "in realtime" from online, and parse it, for demo purposes
33
+ C DVD player: minimize instead of skip :P
34
+ don't mute, just almost mute LOL or almost mute and static-ify
35
+ or combine the two
36
+ can suck it in "in realtime" from online, and parse it +- from a user editable wiki
34
37
  a UI to select categories, works
35
38
  edited blu ray movie playback screencast, as that's apparently not in the patent...
36
39
  don't use timecodes, use "% of the movie" and "total length" perhaps?
37
- look at their patents for other ideas? [all patents, nissim patents?]
38
- just pause it, tell them how far to fast forward at that point :P
40
+ look at their patents for other ideas? [+- nissim patents?]
41
+ just pause it, tell them how far to fast forward at that point :P [somewhat already done]
42
+
39
43
  have the user forced to tell me what each digit is, themselves :P
40
44
  the online edl stuff itself (its todo list)
41
45
  javascript API
42
46
  phase 2: I can accomodate for pauses, too.
43
47
  phase 3: I can re-train based on events of stoppage
44
- phase 4: I can constantly poll and react
48
+ phase 4: I can constantly poll and react appropriately to current timestamp
45
49
  post video demo of it streaming to a console device
46
- categories filterable by "level" "profanity level 2 and below is ok for me and my kids"
47
- maybe could just "play from x to y" [no exclude info?]
50
+ maybe could just "play from x to y" [no exclude info?] instead of "here are the bad parts"
48
51
  stage one: query, auto-download when they hit a netflix movie of some type
49
- stage two: chrome plugin for the same :)
50
- can insert deleted scenes et al [even external scenes :P] (already showed it)
52
+ stage two: chrome plugin for the same, auto-detect, auto-user, auto-download, auto-watch edited :)
53
+ can insert deleted scenes et al [even external scenes :P] (already showed it somewhat)
@@ -15,32 +15,24 @@ do I need double tapping? http://archive2.avsforum.com/avs-vb/showthread.php?s=&
15
15
 
16
16
  === netflix/OS screen capture ===
17
17
 
18
- make it able to grab from a window, and work when dragged too...
19
18
  can I make it look awesome?
19
+ pushdesktop\TODO high prio
20
20
 
21
21
  ==== some day ====
22
- shearing (?) compared to itself upscreened...
23
- perfect looks of absolutely everything upconverted LOL
22
+ perfect the looks of absolutely everything upconverted LOL
24
23
  # TODO cut off all black edges too...why not, eh? mplayer has crop detect...
25
24
  make really low q stuff like youtube less than even 360 look good
26
- # TODO can align better youtube
27
- better benchmarker (windows vs. desktop, just show reverse)
28
- the "drag to select window" seter-zy-upperzy
25
+ # can align better youtube
29
26
 
30
27
  is ffplay on avisynth piece of crud compared to the other? vs. mplayer? why only like 10 fps? what the...
31
28
 
32
- == OS dshow screen tracker ==
33
-
34
- see its TODO, things I actually want to do add here.
35
-
36
29
  === some day ===
37
- bounty multi-thread scaling, iff it seems helpful-er for quad core.
38
- can I live with aero wasn't bitblt getting like 800fps *with* aero?
30
+ bounty multi-thread scaling, iff it seems helpful-er for quad core.
39
31
 
40
32
  == never ==
41
33
 
42
34
  add another sharpen filter?
43
35
 
44
- add a VLC version?
36
+ create a VLC version?
45
37
 
46
- prop: http://ubuntuforums.org/showthread.php?t=804537 didn't I have another list somewhere... ?
38
+ propaganda: http://ubuntuforums.org/showthread.php?t=804537
Binary file
@@ -16,8 +16,8 @@
16
16
  "blank_outs" => [
17
17
  # an example line, uncomment the leading "#" to make it active
18
18
  # "00:03:00.0" , "00:04:00.0", "violence", "of some sort",
19
- # 1358 1452
20
- # 4730 - 600 -< 4837 - 600
19
+ "758", "852", "kissing scene",
20
+ "4130", "4237", "pretending to kiss the king",
21
21
  ],
22
22
 
23
23
  "volume_name" => "JESTER",
@@ -0,0 +1,40 @@
1
+ "name" => "cars disney",
2
+
3
+ "mutes" => [
4
+
5
+ "0:51:00.310" , "0:51:02.312", "profanity", "lo..", "Oh [lo..]",
6
+ "0:52:41.745" , "0:52:44.289", "profanity", "he..", "'Cause even in hillbilly [he..] we have standards",
7
+ "00:40:14.957", "00:40:18.126", "profanity", "he..", "I'm in hillbilly [he..]! My IQ's dropping by the second!",
8
+
9
+ "0:07:26.363" , "0:07:28.448", "profanity", "idiot", "You need tires you [idiot]",
10
+ "0:14:57.105" , "0:14:59.274", "profanity", "piss", "That race was a [piss]er You were booking",
11
+ "0:23:25.991" , "0:23:30.619", "profanity", "moron", "fer dang sake, Turn on your lights you [moron]",
12
+ "0:35:29.546" , "0:35:33.509", "profanity", "dumb", "Boy we ain't as [dumb] as you think we are",
13
+ "0:36:00.202" , "0:36:03.038", "profanity", "sex", "I want to get a look at that [sex]y hot rod",
14
+ "0:49:56.914" , "0:50:00.334", "profanity", "idiot", "Crazy grandpa car What an [idiot]",
15
+ "0:55:21.321" , "0:55:24.449", "profanity", "dumb", "I swear tractors is so [dumb]",
16
+ "01:55:37.104" , "01:55:41.775", "profanity", "lo..", "for the love of [deity]",
17
+
18
+ "00:30:06.849" , "00:30:10.185", "profanity", "May [deity] have mercy on your soul",
19
+ "01:28:01.615", "01:28:06.119", "profanity", "Thank the manufacturer",
20
+ "00:31:42.319", "00:31:46.406", "profanity", "innuendo", "Nah, I'm just kiddin'. She just likes me fer muh body.",
21
+ "52:52", "52:57", "profanity", "innuendo", "not with me but with me",
22
+ # 28:30 mumble [?]
23
+ ],
24
+
25
+ # sister DVD: CRZ0NNF1 track 21 "disk_unique_id" => "aa06ad1c|e1e62ad0"
26
+
27
+ "blank_outs" => [
28
+ "39:22", "39:29", "lewd", "look honey, von dutch",
29
+ # an example line, uncomment the leading "#" to make it active
30
+ # "00:03:00.0" , "00:04:00.0", "violence", "of some sort",
31
+ ],
32
+
33
+ "volume_name" => "CRZ0NNW7 ",
34
+ "disk_unique_id" => "f5751899|2862d307",
35
+ "dvd_title_track" => "23",
36
+ "dvd_title_track_length" => "6985.700",
37
+ # "opensubtitles_number" => "4022054",
38
+ # "not edited out stuff" => "some violence left in...",
39
+ # "closing thoughts" => "only did the...",
40
+ "mplayer_dvd_splits" => ["3767.35", " 6490.35"],
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: sensible-cinema
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.25.2
5
+ version: 0.25.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Roger Pack
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-08-12 00:00:00 -06:00
13
+ date: 2011-08-18 00:00:00 -06:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -69,7 +69,7 @@ dependencies:
69
69
  type: :runtime
70
70
  version_requirements: *id005
71
71
  - !ruby/object:Gem::Dependency
72
- name: rautomation
72
+ name: rdp-rautomation
73
73
  prerelease: false
74
74
  requirement: &id006 !ruby/object:Gem::Requirement
75
75
  none: false
@@ -363,7 +363,8 @@ files:
363
363
  - zamples/edit_decision_lists/dvds/bob the builder pets in a pickle.txt
364
364
  - zamples/edit_decision_lists/dvds/bobs_big_plan.txt
365
365
  - zamples/edit_decision_lists/dvds/cool runnings.txt
366
- - zamples/edit_decision_lists/dvds/edls_being_edited/court_jester.txt
366
+ - zamples/edit_decision_lists/dvds/court_jester.txt
367
+ - zamples/edit_decision_lists/dvds/edls_being_edited/cars_disney.txt
367
368
  - zamples/edit_decision_lists/dvds/edls_being_edited/test_delete_list_for_experimenting_with.txt
368
369
  - zamples/edit_decision_lists/dvds/flight_of_the_navigator.txt
369
370
  - zamples/edit_decision_lists/dvds/happiest baby on the block.txt