sensible-cinema 0.24.0 → 0.24.1

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -3,7 +3,7 @@ Sensible-cinema [5] allows you to apply pre-programmed edit lists
3
3
  I.e. you can edit a DVD to "mute out" or skip certain scenes.
4
4
  This allows you to sit back and relax as you watch a more "sensiblized" showing of your DVD.
5
5
 
6
- It is currently in beta, though will always be free software, even after release.
6
+ It is currently in alpha/beta, though will always be free software, even after releases.
7
7
  It also includes a library of EDL's that go along with various DVD's, we need volunteers
8
8
  to help it to grow!
9
9
 
@@ -58,7 +58,7 @@ I don't actually know how to do this I've never burned a DVD.
58
58
  See also is_it_legal_to_copy_dvds.txt for some caveats you should understand first.
59
59
  Windows DVD Maker might help, http://www.dvdflick.net might help.
60
60
  iDVD might help on mac.
61
- DO NOT MAKE ILLEGAL COPIES OF DVD's. See is_it_legal_to_copy_dvds.txt.
61
+ DO NOT MAKE ILLEGAL COPIES OF DVD's. See also is_it_legal_to_copy_dvds.txt.
62
62
 
63
63
  == FAQ ==
64
64
 
@@ -71,10 +71,10 @@ A. One way is to plug your computer into your TV.
71
71
  something in mind that could help, though hasn't been created yet. (Playon.tv does something like this, too, but
72
72
  I might come up with a competitor to it if desired, as the existing one costs money).
73
73
  You may be able to create your own edited DVD, see section "Creating an edited DVD"
74
- Another good option is to purchase a clearplay DVD player, though you must also retain a subscription for it to work.
75
-
74
+ Another good option is to purchase and use a clearplay player.
75
+
76
76
  Q. I want to give an edited DVD to a friend, how do I do that well?
77
- A. Give them the original unedited DVD and a link to sensible-cinema's website.
77
+ A. Give them the original, non-edited DVD and email them a link to sensible-cinema's website :)
78
78
 
79
79
  == Caveats ==
80
80
 
@@ -95,10 +95,10 @@ so we recommend to always clean your discs first!
95
95
 
96
96
  The initial motivation for the project was that I dislike deity profanity in movies.
97
97
  And really any profanity is jarring, if you're not used to it in real life, and can
98
- put you a bit on edge when you watch a movie.
98
+ put me a bit on edge when I watch an otherwise enjoyable movie.
99
99
  Also sometimes producers put in certain scenes (read: sex scenes)
100
100
  just to get a desired rating.
101
- I don't want those scenes, but still want to be able to enjoy said movies :)
101
+ I don't want those scenes, but still want to be able to enjoy more movies :)
102
102
 
103
103
  I once tried Clearplay (a "filter"ed DVD player)
104
104
  but (for me) it didn't cut it. It costs money monthly (I'm too cheap to pay--and many
data/TODO CHANGED
@@ -31,11 +31,12 @@
31
31
  just in case youtube takes over the world
32
32
 
33
33
  == yes do ordered in conjunction with the above probably ==
34
- subtitles 2 phase
35
34
  unit tests
36
- add a "scan for expected title, times" (basically all titles, times...)
37
- complain if times are wrong...
38
- complain [accomodate option] if start time off...
35
+
36
+ always use -dvd-device [yikes]
37
+ fullscreen now
38
+ subtitles 2 phase
39
+ auto-paste
39
40
  lightning strike from various outlets...
40
41
  try buy edit lists from all x,y,z [?] maybe ask for them for free first? ()
41
42
  http://www.familysafemovies.com
@@ -53,13 +54,19 @@
53
54
  movie mask wayback machine
54
55
 
55
56
  == yes do, un-ordered currently, from the various future release options ==
56
- upconvert better options
57
- SRT doubles up first IQ
57
+ play unedited doesn't use known title tracks
58
+ add a "scan for expected title, times" (basically all titles, times...)
59
+ complain if times looks wrong...
60
+ complain [accomodate option] if start time looks off...600
61
+ "1:07:5.718" , "1:07:10.447", "profanity", "ba.....", "Faraday that [ba.....] That ba He's gonna wish he never met us",
58
62
  don't cache selections if they choose a local file...hmm...
63
+ tighten splits
59
64
  "save to" -> same dir as "get from" yeah
60
- @instructions "this is great for comparing srt's, except...then you have to..."
61
- test with cars-ws, mac (to make sure volume name doesn't have spaces)
65
+ @instructions "this is great for comparing srt's, except...when it isn't, then you have to..."
66
+ @instructions: full srt how-to
67
+ test with cars-ws (at work), mac (to make sure volume name doesn't have spaces)
62
68
  can I just use ffmpeg for an initial -> ts ? http://eotmsnotes.wordpress.com/2011/04/25/tsmuxer-notes/
69
+ add dvd_title_time option
63
70
  volume_name => dvd_volume_name
64
71
  make it load faster! this is cuh-razy! or splash screen! yes!
65
72
  why is the Sintel's EDL seemingly off?
@@ -72,10 +79,10 @@
72
79
  don't have to use eval!
73
80
  EDL with JSON on top, full timestamps.
74
81
  setpriority for several :)
75
- bring to top after a conversion, and for prompts...we get hidden!
82
+ bring to top after a conversion, and for prompts...
76
83
  can auto-use tsmuxer at all [?]
77
84
  mac just die with instructions to use tsmuxer first...
78
- check if some other buttons are outdated...
85
+ check if some other buttons are now outdated...
79
86
  unit tests (all pass)
80
87
  auto-copy to clipboard...should be cake, right?
81
88
  can I avoid requiring use of tsmuxer first? hmm...
@@ -88,7 +95,6 @@
88
95
  upconverter
89
96
  check gl mac
90
97
  check permutations
91
- easier use/"options" setting buttons, remove that one button...
92
98
  employee instructions: watch @ realtime after profanity filter first pass :P
93
99
  @makemkv: timing feels broken weird-like!
94
100
  clear runnings
@@ -121,11 +127,11 @@
121
127
  inventionzy: blu-ray OCR
122
128
  port to mac OS X--try everything out (all buttons), make sure all works...
123
129
  ppc dvdid?
124
- bundle a copy of smplayer locally?
125
- instructions for how to use mac ts muxer
130
+ use mplayerx well [?] like wrap it...
126
131
  the final "edited.avi" really "could/should" be playable in WMP...if possible
127
132
  do I need tsmuxer?
128
- "guess" the best title...
133
+ auto-"guess" the best title...
134
+ add button "fast preview segment" (from dvd)
129
135
 
130
136
  == other lists ==
131
137
 
@@ -138,13 +144,13 @@
138
144
 
139
145
  == DVD decide later to move up or down ==
140
146
  add button "fast preview one" (from file)
141
- add button "fast preview one" (from dvd)
142
147
 
143
148
  == DVD-realtime backlog once yes do, now not do, unordered ==
144
-
149
+ @makemkv: show us drive letters, labels over hardware type, also an option to "ignore failure"
150
+ slow cpu: mater tall tales: are my av sync values better or worse than smplayer defaults, with/without upsampling, blacky?
151
+ upconvert research/compare options
145
152
  investigate boxee edl (just fer fun...maybe possible?) http://getsatisfaction.com/boxee/topics/commercial_skipping_edl_support
146
153
  investigate xbmc dvd edl how do you do that?
147
- maybe use smplayer full-screened, to avoid?
148
154
  investigate WMC "call out to mplayer EDL" or the like...
149
155
  for mplayer realtime it needs to start early, but end on time
150
156
  mplayer instructions are obscured
@@ -164,7 +170,8 @@
164
170
  investigate dvdrsbvdl (windows media center edl plugin)
165
171
 
166
172
  == DVD+-DVD-realtime backlog (totally unordered, some very low prio, basically all never do) ==
167
- @mplayer: dvdnav:///e: should play the *menu* please? please?
173
+ @mplayer: crash IQ nav, keys dont' work in windows, prolly dvdcss doesn't cache in windows, can't pass parameter in windows LOL
174
+ @mplayer: dvdnav:///e: should play the *menu* please? please? [???]
168
175
  @mplayer: do I need -zoom ?
169
176
  @smplayer: you don't capture stderr [?] ex -vf scale:1280.0
170
177
  @mplayer: http://www.infognition.com/VideoEnhancer/ can I do that through any means LOL?
@@ -211,7 +218,7 @@
211
218
  allow for AAF or OMF export, as well as EDL (?)
212
219
  C specific portion [A,B] player
213
220
  also edit the trailers et al [?] hmm...
214
- @mplayer: double click default to full screen! :)
221
+ @mplayer: double click default to full screen! :) and enter default to dvdnav select!
215
222
  add button "play from exactly here to here" in [mplayer uh guess?] :P
216
223
  what does mplayer do with -ss big_number past the end of an end [monster's inc]?
217
224
  fix ffmpeg's Application provided invalid, non monotonically increasing dts to muxer in stream 0: 5940 >= 5940
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.24.0
1
+ 0.24.1
data/bin/sensible-cinema CHANGED
@@ -112,15 +112,17 @@ module SensibleSwing
112
112
  "Sensible Cinema is distributed under the gplv3 (http://www.gnu.org/licenses/gpl.html).\nBY CLICKING \"accept\" YOU SIGNIFY THAT YOU HAVE READ, UNDERSTOOD AND AGREED TO ABIDE BY THE TERMS OF THIS AGREEMENT"
113
113
  require_blocking_license_accept_dialog 'Sensible Cinema', 'is_it_legal_to_copy_dvds.txt file', File.expand_path(File.dirname(__FILE__) + "/../documentation/is_it_legal_to_copy_dvds.txt"),
114
114
  'is_it_legal_to_copy_dvds.txt file', 'I acknowledge that I have read, understand, accept and agree to abide by the implications noted in the documentation/is_it_legal_to_copy_dvds.txt file'
115
- Storage['main_license_accepted'] = VERSION
115
+ LocalStorage['main_license_accepted'] = VERSION
116
116
  end
117
117
 
118
- Storage = Storage.new("sensible_cinema_storage")
118
+ LocalStorage = Storage.new("sensible_cinema_storage")
119
119
 
120
120
  def setup_upconvert_buttons
121
+
121
122
 
122
123
  @watch_file_upconvert = new_jbutton( "Watch a file upconverted (unedited)") do
123
124
  # ?? drive, volume, dvd_id = choose_dvd_drive_or_file true
125
+ warn_if_no_upconvert_options_currently_selected
124
126
  filename_mpg = new_existing_file_selector_and_select_file( "pick moviefile (like moviename.mpg)")
125
127
  play_mplayer_edl [filename_mpg, nil]
126
128
  end
@@ -131,6 +133,7 @@ module SensibleSwing
131
133
  #run_smplayer_blocking "dvdnav:///#{drive}", "-nocache" # TODO dvdnav://1-60 is summarily ignored...sniff...
132
134
  # LODO mplayer dvdnav:///e: seems really really hosed LOL, and also dvdnav input what the...
133
135
  # plush crash smplayer "normal" selecting IQ Menu (ok snow white tho...odd...)
136
+ warn_if_no_upconvert_options_currently_selected
134
137
  play_dvd_smplayer_unedited
135
138
  end
136
139
 
@@ -138,8 +141,14 @@ module SensibleSwing
138
141
 
139
142
  end
140
143
 
144
+ def warn_if_no_upconvert_options_currently_selected
145
+ if !LocalStorage[UpConvertEnglish]
146
+ show_blocking_message_dialog "Warning: upconvert options have not been set yet--please change upconvert options first, if desired."
147
+ end
148
+ end
149
+
141
150
  def add_set_upconvert_options_button
142
- @show_upconvert_options = new_jbutton( "Change upconvert options (started as #{Storage[UpConvertEnglish] || 'not set'})" ) do
151
+ @show_upconvert_options = new_jbutton( "Change upconvert options (started as #{LocalStorage[UpConvertEnglish] || 'not set'})" ) do
143
152
  setup_upconvert_options
144
153
  end
145
154
 
@@ -152,42 +161,43 @@ module SensibleSwing
152
161
  def setup_upconvert_options
153
162
  none = new_jbutton("reset upconvert options to default (none)")
154
163
  none.tool_tip = "Having no upconvert options is reasonably good, uses directx for scaling, nice for slow cpu's"
155
- p 'upconvert options started as:', Storage[UpConvertKey]
164
+ p 'upconvert options started as:', LocalStorage[UpConvertKey]
156
165
  none.on_clicked {
157
- Storage[UpConvertKey] = nil
158
- Storage[UpConvertKeyExtra] = nil
159
- Storage[UpConvertEnglish] = nil
166
+ LocalStorage[UpConvertKey] = nil
167
+ LocalStorage[UpConvertKeyExtra] = nil
168
+ LocalStorage[UpConvertEnglish] = nil
160
169
  }
161
170
  medium_dvd = new_jbutton("set upconvert options to DVD-style input (high-quality input)") {
162
- Storage[UpConvertKey] = "hqdn3d=2:1.5:3,scale=SCREEN_X:-1:0:0:3"
163
- Storage[UpConvertKeyExtra] = "-sws 9 -ssf ls=75.0 -ssf cs=50.0"
164
- Storage[UpConvertEnglish] = "DVD/HQ"
171
+ LocalStorage[UpConvertKey] = "hqdn3d=2:1.5:3,scale=SCREEN_X:-1:0:0:3"
172
+ LocalStorage[UpConvertKeyExtra] = "-sws 9 -ssf ls=75.0 -ssf cs=50.0"
173
+ LocalStorage[UpConvertEnglish] = "DVD/HQ"
165
174
  display_current_upconvert_setting
166
175
  }
167
176
  high_compression = new_jbutton("set upconvert options for playing back highly compressed video") {
168
177
  # -autoq 6 -vf pp [?]
169
- Storage[UpConvertEnglish] = "high compress"
170
- Storage[UpConvertKey] = "hqdn3d=7:7:5,pp=hb:y/vb:y,scale=SCREEN_X:-1:0:0:5"
171
- Storage[UpConvertKeyExtra] = "-sws 9 -ssf ls=75.0 -ssf cs=75.0"
178
+ LocalStorage[UpConvertEnglish] = "high compress"
179
+ LocalStorage[UpConvertKey] = "hqdn3d=7:7:5,pp=hb:y/vb:y,scale=SCREEN_X:-1:0:0:5"
180
+ LocalStorage[UpConvertKeyExtra] = "-sws 9 -ssf ls=75.0 -ssf cs=75.0"
172
181
  display_current_upconvert_setting
173
182
  }
174
183
  new_jbutton("set upconvert options to aggressive DVD/HQ-style playback") {
175
- Storage[UpConvertKey] = "hqdn3d=7:7:5,scale=SCREEN_X:-1:0:0:10"
176
- Storage[UpConvertKeyExtra] = "-sws 9 -ssf ls=100.0 -ssf cs=75.0"
177
- Storage[UpConvertEnglish] = "Aggressive DVD/HQ"
184
+ LocalStorage[UpConvertKey] = "hqdn3d=7:7:5,scale=SCREEN_X:-1:0:0:10"
185
+ LocalStorage[UpConvertKeyExtra] = "-sws 9 -ssf ls=100.0 -ssf cs=75.0"
186
+ LocalStorage[UpConvertEnglish] = "Aggressive DVD/HQ"
178
187
  display_current_upconvert_setting
179
188
  }
180
189
  display_current_upconvert_setting
181
190
  end
182
191
 
183
192
  def display_current_upconvert_setting
184
- show_blocking_message_dialog "Current upconvert options set to #{Storage[UpConvertEnglish] || 'none'}"
193
+ show_blocking_message_dialog "Upconvert options are set to #{LocalStorage[UpConvertEnglish] || 'none'}"
185
194
  end
186
195
 
187
196
  def get_upconvert_vf_settings
188
- template = Storage[UpConvertKey]
197
+ template = LocalStorage[UpConvertKey]
189
198
  if template
190
- x = java.awt.Toolkit.getDefaultToolkit().getScreenSize().get_width
199
+ # choose width of widest monitor (why would they display it on the other?)
200
+ x = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment.getScreenDevices.map{|gd| gd.display_mode.width}.max
191
201
  outgoing = template.gsub('SCREEN_X', x.to_i.to_s) # has to be an integer...
192
202
  outgoing
193
203
  else
@@ -196,7 +206,7 @@ module SensibleSwing
196
206
  end
197
207
 
198
208
  def get_upconvert_secondary_settings
199
- Storage[UpConvertKeyExtra]
209
+ LocalStorage[UpConvertKeyExtra]
200
210
  end
201
211
 
202
212
  def setup_advanced_buttons
@@ -209,7 +219,7 @@ module SensibleSwing
209
219
  create_brand_new_edl
210
220
  end
211
221
 
212
- @open_list = new_jbutton("Open/Edit a previously created EDL or .srt file", "If your DVD has a previously existing EDL for it, you can open it to edit it with this button.")
222
+ @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.")
213
223
  @open_list.on_clicked {
214
224
  filename = new_existing_file_selector_and_select_file( "Pick any file to open in editor", EDL_DIR)
215
225
  open_file_to_edit_it filename
@@ -253,13 +263,19 @@ module SensibleSwing
253
263
  play_dvd_smplayer_unedited true
254
264
  }
255
265
 
256
- @display_unique = new_jbutton( "Display current DVD's unique ID" )
266
+ @display_unique = new_jbutton( "Display information about current DVD (ID, etc.)" )
257
267
  @display_unique.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."
258
268
  @display_unique.on_clicked {
259
269
  drive, volume_name, dvd_id = choose_dvd_drive_or_file true
260
270
  # display it, allow them to copy and paste it out
261
- show_copy_pastable_string("#{drive} #{volume_name} for your copying+pasting pleasure (highlight, then ctrl+c to copy)\n
262
- This is USED eventually to identify a disk to match it to its EDL, later.", "\"disk_unique_id\" => \"#{dvd_id}\", # #{volume_name}")
271
+ out = nil
272
+ t = Thread.new {out= `mplayer dvdnav:///#{drive} -identify -frames 0 2>&1| grep LENGTH`}
273
+ id_string = "\"disk_unique_id\" => \"#{dvd_id}\", # #{volume_name}"
274
+ show_copy_pastable_string "#{drive} #{volume_name} for your copying+pasting pleasure (highlight, then ctrl+c to copy)\n
275
+ This is USED eventually to identify a disk to match it to its EDL, later.", id_string
276
+ t.join
277
+ File.write EdlTempFile, id_string + "\n" + out
278
+ open_file_to_edit_it EdlTempFile
263
279
  }
264
280
 
265
281
  @convert_seconds_to_ts = new_jbutton( "Convert 3600 <-> 1:00:00 style timestamps" )
@@ -295,19 +311,20 @@ module SensibleSwing
295
311
  show_copy_pastable_string("Sensible cinema usable value (29.97 fps) for #{thirty_fps} would be: ", human_twenty_nine_seven)
296
312
  }
297
313
 
298
- @parse_srt = new_jbutton("Parse a subtitle file (.srt) to detect profanities" )
314
+ @parse_srt = new_jbutton("Scan a subtitle file (.srt) to detect profanity times automatically" )
299
315
  @parse_srt.tool_tip = <<-EOL
300
- You can download a .srt file and parse it to automaticaly search for profanities.
301
- Basically download it from opensubtitles.org (possibly from other places, too),
316
+ You can download a .srt file and use it to automatically search for profanities.
317
+ Basically download it from opensubtitles.org (possibly from other sites, too),
302
318
  (enter dvd name in the search box, click a result, click one from the list with an English flag, then click 'Download(zip)')
303
319
  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)")
304
320
  EOL
305
- @parse_srt.on_clicked {
321
+ @parse_srt.on_clicked do
306
322
  filename = new_existing_file_selector_and_select_file("Pick srt file:")
307
- parsed = SubtitleProfanityFinder.edl_output [filename]
323
+ parsed = SubtitleProfanityFinder.edl_output filename, {}, 0.35, 0.25 # PUT MOVIE SPECIFIC OFFSET TIMINGS HERE
308
324
  File.write(EdlTempFile, "# add these into your mute section if they are offensive\n" + parsed)
325
+ open_file_to_edit_it filename
309
326
  open_file_to_edit_it EdlTempFile
310
- }
327
+ end
311
328
 
312
329
  add_set_upconvert_options_button
313
330
 
@@ -351,17 +368,21 @@ module SensibleSwing
351
368
  run_smplayer_blocking nice_file, "-edl \"#{EdlTempFile}\"", false
352
369
  }
353
370
 
371
+ @reload = new_jbutton("reload bin/sensible-cinema code") do
372
+ load $0
373
+ end
374
+
354
375
  end # advanced buttons
355
376
 
356
377
  def setup_normal_buttons
357
378
 
358
- @mplayer_edl = new_jbutton( "Watch DVD/file edited on computer (realtime -- mplayer EDL)")
379
+ @mplayer_edl = new_jbutton( "Watch DVD edited (realtime)")
359
380
  @mplayer_edl.tool_tip = "This will watch your DVD in realtime from your computer while skipping/muting questionable scenes."
360
381
  @mplayer_edl.on_clicked {
361
382
  play_mplayer_edl
362
383
  }
363
384
 
364
- @create = new_jbutton( "Create edited copy version of video on Your Hard Drive" )
385
+ @create = new_jbutton( "Create edited copy of video on Your Hard Drive" )
365
386
  @create.tool_tip = <<-EOL
366
387
  This grabs from your DVD and creates a new file on your hard disk like dvd_name_edited.mpg for you to watch later.
367
388
  The file you create will contain the whole movie edited.
@@ -371,17 +392,17 @@ module SensibleSwing
371
392
  do_copy_dvd_to_hard_drive_via_file false
372
393
  }
373
394
 
374
- @open_help_file = new_jbutton("View Sensible Cinema Documentation") do
375
- show_in_explorer __DIR__ + "/../documentation"
376
- end
377
-
378
- # @watch_created_file = new_jbutton( "Watch the edited file version of DVD", false).on_clicked {
379
- # play_mplayer_edl # TODO
395
+ # @watch_created_file = new_jbutton( "Watch the edited version of DVD file", false).on_clicked {
396
+ # play_mplayer_edl # LODO
380
397
  # }
381
398
 
382
- @watch_file_edl = new_jbutton( "Watch a file edited (realtime)" ) do
399
+ @watch_file_edl = new_jbutton( "Watch movie file edited (realtime)" ) do
383
400
  choose_file_and_edl false
384
- end
401
+ end
402
+
403
+ @open_help_file = new_jbutton("View Sensible Cinema Documentation") do
404
+ show_in_explorer __DIR__ + "/../documentation"
405
+ end
385
406
 
386
407
  end
387
408
 
@@ -392,8 +413,14 @@ module SensibleSwing
392
413
  if just_create_dot_edl_file_instead_of_play
393
414
  descriptors = EdlParser.parse_file edl_filename
394
415
  # LODO these timings...DRY up...plus is XBMC the same? what about on a slower computer?
395
- edl_contents = MplayerEdl.convert_to_edl descriptors, add_secs_end = 0.0, add_secs_beginning = 0.5, splits = []
396
- output_file = filename_mpg.gsub(/\.[^\.]+$/, '') + '.edl'
416
+ # NB these are just for the SxS EDL!
417
+
418
+ #add_secs_end = 0
419
+ #add_secs_beginning = 0.5 # LODO are these accurate for file based, as well? slow cpu versus fast?
420
+
421
+ # TODO do I want these added at file create time, not use time!
422
+ edl_contents = MplayerEdl.convert_to_edl descriptors, add_secs_end = MplayerEndBuffer, MplayerBeginingBuffer, splits = []
423
+ output_file = filename_mpg.gsub(/\.[^\.]+$/, '') + '.edl' # sanitize...
397
424
  File.write(output_file, edl_contents)
398
425
  raise unless File.exist?(output_file)
399
426
  show_blocking_message_dialog("created #{output_file}")
@@ -408,7 +435,7 @@ module SensibleSwing
408
435
 
409
436
  def initialize
410
437
  super "Sensible-Cinema #{VERSION} (GPL)"
411
- if !(Storage['main_license_accepted'] == VERSION)
438
+ if !(LocalStorage['main_license_accepted'] == VERSION)
412
439
  force_accept_license_first
413
440
  end
414
441
 
@@ -456,14 +483,14 @@ module SensibleSwing
456
483
  @exit = new_jbutton("Exit", "Exits the application and kills any background processes that are running at all--don't exit unless you are done processing all the way!")
457
484
  @exit.on_clicked {
458
485
  Thread.new { self.close } # don't waste the time to close it :P
459
- puts 'Thank you for using Sensible Cinema. Goodbye.'
486
+ puts 'Thank you for using Sensible Cinema. Come again!'
460
487
  java.lang.System.exit 0
461
488
  }
462
489
 
463
490
  increment_button_location
464
491
  increment_button_location
465
492
 
466
- setIconImage(ImageIcon.new(__dir__ + "/../vendor/monkey.png").getImage())
493
+ setIconImage(ImageIcon.new(__DIR__ + "/../vendor/monkey.png").getImage())
467
494
  check_for_various_dependencies
468
495
  end
469
496
 
@@ -471,15 +498,20 @@ module SensibleSwing
471
498
  extra_options += " -mouse-movements #{get_upconvert_secondary_settings} " # just in case smplayer also needs -mouse-movements... :)
472
499
  if OS.mac? || force_use_mplayer
473
500
  @_run_smplayer_instructions ||= show_mplayer_instructions
474
- conf_file = File.expand_path('~') + '/.mplayer_input_conf'
475
- File.write conf_file, "MOUSE_BTN0_DBL vo_fullscreen\nKP_ENTER dvdnav select\n" # dvdnav doesn't work here...
501
+ conf_file = File.expand_path './mplayer_input_conf'
502
+ File.write conf_file, "MOUSE_BTN0_DBL vo_fullscreen\nMOUSE_BTN2 vo_fullscreen\nKP_ENTER dvdnav select\n" # dvdnav doesn't work here...
476
503
  if OS.windows?
477
504
  # direct3d for windows 7 old nvidia cards' sake [yipes]
478
- extra_mplayer_commands << "-vo direct3d" # ?? directx ??
479
- options += " -font #{ENV['SystemRoot']}\\fonts\\ARIAL.TTF " # would need EXTRA ESCAPING FOR SMPLAYER USE
505
+ extra_options += " -vo direct3d " # more mouse, less speed [?] less mouse ??
506
+ extra_options += " -slang en "
507
+ extra_options += " -font #{ENV['SystemRoot']}\\fonts\\ARIAL.TTF " # would need EXTRA ESCAPING FOR SMPLAYER USE
508
+ conf_file = conf_file[2..-1] # strip off drive letter, which it doesn't like no sir
480
509
  end
481
- c = "mplayer \"#{play_this}\" #{extra_options} #{"-vf " + get_upconvert_vf_settings if get_upconvert_vf_settings} -input conf=\"#{conf_file}\" -mouse-movements "
510
+ c = "mplayer #{extra_options} #{"-vf " + get_upconvert_vf_settings if get_upconvert_vf_settings} -input conf=\"#{conf_file}\" -mouse-movements \"#{play_this}\" "
482
511
  else
512
+ if OS.windows?
513
+ extra_options += " -vo direct3d " # more light nvidia...should be ok...
514
+ end
483
515
  config_path = set_smplayer_opts extra_options
484
516
  c = "smplayer_portable \"#{play_this}\" -config-path \"#{File.dirname config_path}\" -close-at-end "
485
517
  end
@@ -520,10 +552,10 @@ module SensibleSwing
520
552
 
521
553
  "volume_name" => "#{volume}",
522
554
  "disk_unique_id" => "#{dvd_id}",
523
- "dvd_title_track" => "1", # most DVD's use title 1. Not all do, though. If sensible-cinema plays anything except the main title (for example, it plays a trailer), when you use it, see http://goo.gl/QHLIF to set this right.
555
+ "dvd_title_track" => "1", # the show info button will tell you title length (typically longest is main feature)
524
556
  # "not edited out stuff" => "some violence",
525
557
  # "closing thoughts" => "still...",
526
- # "mplayer_dvd_splits" => ["59:59", "1:04:59"], # or [] if there are none. In mplayer, the DVD timestamp "resets" to zero for some reason, so you need to specify when if you want to use mplayer DVD realtime playback, or use mencoder -edl to split your file. See http://goo.gl/yMfqX
558
+ # "mplayer_dvd_splits" => ["59:59", "1:04:59"], # or [] if there are none. Additive currently. 12345.6 ok. In mplayer, the DVD timestamp "resets" to zero for some reason, so you need to specify when if you want to use mplayer DVD realtime playback, or use mencoder -edl to split your file. See http://goo.gl/yMfqX
527
559
  EOL
528
560
  # frame0 is the name of our window LOL tough to avoid that collision...hmm...
529
561
  filename = EDL_DIR + "\\edls_being_edited\\" + english_name.gsub(' ', '_') + '.txt'
@@ -571,8 +603,10 @@ module SensibleSwing
571
603
  Thread.new { system_original command }
572
604
  end
573
605
 
574
- # make them choose which system call to use explicitly
575
- undef system
606
+ if respond_to?(:system)
607
+ # make them choose which system call to use explicitly
608
+ undef system
609
+ end
576
610
 
577
611
  def download full_url, to_here
578
612
  require 'open-uri'
@@ -613,14 +647,14 @@ module SensibleSwing
613
647
  EOL
614
648
  end
615
649
 
650
+ MplayerBeginingBuffer = 1.0
651
+ MplayerEndBuffer = 0.0
652
+
616
653
  def play_mplayer_edl file_with_edl_path = nil
617
- add_secs_end = 0
618
- add_secs_beginning = 0.5 # LODO are these accurate for file based, as well?
619
654
  extra_mplayer_commands = []
620
655
  if file_with_edl_path
621
656
  drive_or_file, edl_path = file_with_edl_path
622
- dvd_id = NonDvd # fake it out...
623
- # descriptors = {} # allow unkon
657
+ dvd_id = NonDvd # fake it out...LODO
624
658
  else
625
659
  drive_or_file, dvd_volume_name, dvd_id, edl_path, descriptors = choose_dvd_or_file_and_edl_for_it
626
660
  end
@@ -638,22 +672,32 @@ module SensibleSwing
638
672
  descriptors = {}
639
673
  end
640
674
  if using_dvd
675
+ p descriptors
641
676
  splits = descriptors['mplayer_dvd_splits']
642
- splits ||= []
643
- if splits == []
677
+ if splits == nil
644
678
  show_blocking_message_dialog("warning: edit list does not contain mplayer replay information [mplayer_dvd_splits] so edits past a certain time period might not won't work ( http://goo.gl/yMfqX ).")
679
+ splits = []
645
680
  end
646
681
  splits.map!{|s| EdlParser.translate_string_to_seconds(s) }
647
682
  else
648
683
  splits = []
649
684
  end
650
- edl_contents = MplayerEdl.convert_to_edl descriptors, add_secs_end, add_secs_beginning, splits#, 600 TODOS # add a sec to mutes to accomodate for mplayer's oddness...
685
+ edl_contents = nil
686
+ begin
687
+ edl_contents = MplayerEdl.convert_to_edl descriptors, add_secs_end = MplayerEndBuffer, MplayerBeginingBuffer, splits #, 600 TODOS # add a sec to mutes to accomodate for mplayer's oddness...
688
+ rescue SyntaxError => e # overlaps et al
689
+ show_blocking_message_dialog 'fail:' + e.to_s
690
+ raise e
691
+ end
651
692
  File.write(EdlTempFile, edl_contents)
652
693
 
653
694
  # -framedrop is for slow CPU's
654
695
  # same with -autosync to try and help it stay in sync... -mc 0.03 is to A/V correct 1s audio per 2s video
655
696
  # -hardframedrop might help but hurts just too much
656
- extra_mplayer_commands << "-framedrop -mc 0.016 -autosync 15"
697
+ extra_mplayer_commands << "-framedrop "
698
+ # ?? extra_mplayer_commands << " -mc 0.016 -autosync 15"
699
+
700
+ # prefer english, attempt to disable subtitles, set edl...
657
701
  extra_mplayer_commands << "-alang en -nosub -noautosub -forcedsubsonly -sid 1000 -edl #{File.expand_path EdlTempFile}" # some maybe no longer necessary, but avoid subtitles by default...
658
702
 
659
703
  # LODO -fullscreen ...
@@ -776,12 +820,21 @@ module SensibleSwing
776
820
  show_blocking_message_dialog("It appears that you need to install a dependency: MPlayer for Windows (MPUI).\n
777
821
  Click ok to be directed to its download website, where you can download and install it (recommend: MPUI Full-package), then restart sensible cinema.",
778
822
  "Lacking dependency", JOptionPane::ERROR_MESSAGE)
779
- system_non_blocking("start http://mulder.dummwiedeutsch.de/#mplayer") # LODO would launchy help/work here with the full url?
823
+ open_url_to_view_it_non_blocking "http://code.google.com/p/mulder/downloads/detail?name=MPUI.2011-06-09.Full-Package.exe"
780
824
  System.exit(1)
781
825
  end
782
826
  end
783
827
  end
784
828
 
829
+ def open_url_to_view_it_non_blocking url
830
+ if OS.windows?
831
+ system_non_blocking(c = "start #{url.gsub('&', '^&')}") # LODO would launchy help/work here with the full url?
832
+ p c
833
+ else
834
+ system_non_blocking "#{OS.open_file_command} \"#{url}\"" # LODO test
835
+ end
836
+ end
837
+
785
838
  def open_file_to_edit_it filename
786
839
  if OS.windows?
787
840
  system_non_blocking "notepad \"#{filename}\""
@@ -809,10 +862,10 @@ module SensibleSwing
809
862
  end
810
863
  end
811
864
 
812
- EDL_DIR = File.expand_path(__dir__ + "/../zamples/edit_decision_lists/dvds").to_filename
865
+ EDL_DIR = File.expand_path(__DIR__ + "/../zamples/edit_decision_lists/dvds").to_filename
813
866
 
814
867
  def repeat_last_copy_dvd_to_hard_drive
815
- generate_and_run_bat_file *Storage['last_params']
868
+ generate_and_run_bat_file *LocalStorage['last_params']
816
869
  end
817
870
 
818
871
  def new_nonexisting_filechooser title = nil, default_dir = nil
@@ -858,11 +911,11 @@ module SensibleSwing
858
911
  def new_existing_file_selector_and_select_file title, dir=nil
859
912
  out = FileDialog.new(self, title, FileDialog::LOAD)
860
913
  out.set_title title
861
- dir ||= Storage[caller.inspect]
914
+ dir ||= LocalStorage[caller.inspect]
862
915
  out.set_directory dir.to_filename if dir
863
916
  got = out.go
864
917
  raise 'cancelled choosing existing file method' unless got # I think we always want to raise...
865
- Storage[caller.inspect] = File.dirname(got)
918
+ LocalStorage[caller.inspect] = File.dirname(got)
866
919
  got
867
920
  end
868
921
 
@@ -951,9 +1004,9 @@ module SensibleSwing
951
1004
  Subsequent previews will be faster, though, as long as you use the same filename, as it won't have to re-set it up for processing.
952
1005
  Also note that if you change your edit list, you'll need to close, and restart the video to be able to see it with your new settings.
953
1006
  EOL
954
- old_start = Storage['start_time']
955
- start_time = get_user_input("At what point in the video would you like to start your preview? (like 01:00 for starting at 1 minute)", Storage['start_time'])
956
- default_end = Storage['end_time']
1007
+ old_start = LocalStorage['start_time']
1008
+ start_time = get_user_input("At what point in the video would you like to start your preview? (like 01:00 for starting at 1 minute)", LocalStorage['start_time'])
1009
+ default_end = LocalStorage['end_time']
957
1010
  if start_time and start_time != old_start
958
1011
  default_end = EdlParser.translate_string_to_seconds(start_time) + 10
959
1012
  default_end = EdlParser.translate_time_to_human_readable(default_end)
@@ -963,8 +1016,8 @@ module SensibleSwing
963
1016
  JOptionPane.showMessageDialog(nil, " Please choose start and end", "Failed", JOptionPane::ERROR_MESSAGE)
964
1017
  return
965
1018
  end
966
- Storage['start_time'] = start_time
967
- Storage['end_time'] = end_time
1019
+ LocalStorage['start_time'] = start_time
1020
+ LocalStorage['end_time'] = end_time
968
1021
  end
969
1022
  dvd_friendly_name = descriptors['name']
970
1023
  raise 'no dvd name in EDL?' unless dvd_friendly_name
@@ -1009,7 +1062,7 @@ module SensibleSwing
1009
1062
  end
1010
1063
 
1011
1064
  def generate_and_run_bat_file save_to, edit_list_path, descriptors, file_from, dvd_title, start_time, end_time, dvd_title_track, run_mplayer, require_deletion_entry
1012
- Storage['last_params'] = [save_to, edit_list_path, descriptors, file_from, dvd_title, start_time, end_time, dvd_title_track, run_mplayer, require_deletion_entry]
1065
+ LocalStorage['last_params'] = [save_to, edit_list_path, descriptors, file_from, dvd_title, start_time, end_time, dvd_title_track, run_mplayer, require_deletion_entry]
1013
1066
  begin
1014
1067
  commands = get_mencoder_commands descriptors, file_from, save_to, start_time, end_time, dvd_title_track, require_deletion_entry
1015
1068
  rescue MencoderWrapper::TimingError => e
@@ -1,3 +1,10 @@
1
+ == 0.24.1 ==
2
+
3
+ A few more profanities/subtitle tweaks.
4
+ Now can optionally "adjust" the auto-generated mutes from subtitles based on time
5
+ differences from the file versus from the movie file itself.
6
+ Some minor upconverting tweaks
7
+
1
8
  == 0.24.0 ==
2
9
 
3
10
  Now comes with an upconverting software player to play back DVD's/files.
data/lib/edl_parser.rb CHANGED
@@ -105,15 +105,17 @@ class EdlParser
105
105
  # divides up mutes and blanks so that they don't overlap, preferring blanks over mutes
106
106
  # returns it like [[start,end,type], [s,e,t]...] type like either :blank and :mute
107
107
  # [[70.0, 73.0, :blank], [378.0, 379.1, :mute]]
108
- def self.convert_incoming_to_split_sectors incoming, add_this_to_mutes_end = 0, add_this_to_mutes_beginning = 0, splits = []
108
+ def self.convert_incoming_to_split_sectors incoming, add_this_to_all_ends = 0, subtract_this_from_beginnings = 0, splits = []
109
+ raise if subtract_this_from_beginnings < 0
110
+ raise if add_this_to_all_ends < 0
109
111
  if splits != []
110
112
  # allow it to do all the double checks we later skip, just in case :)
111
113
  self.convert_incoming_to_split_sectors incoming
112
114
  end
113
115
  mutes = incoming["mutes"] || {}
114
116
  blanks = incoming["blank_outs"] || {}
115
- mutes = mutes.map{|k, v| get_secs(k, v, -add_this_to_mutes_beginning, add_this_to_mutes_end, splits) + [:mute]}
116
- blanks = blanks.map{|k, v| get_secs(k, v, -add_this_to_mutes_beginning, add_this_to_mutes_end, splits) + [:blank]}
117
+ mutes = mutes.map{|k, v| get_secs(k, v, -subtract_this_from_beginnings, add_this_to_all_ends, splits) + [:mute]}
118
+ blanks = blanks.map{|k, v| get_secs(k, v, -subtract_this_from_beginnings, add_this_to_all_ends, splits) + [:blank]}
117
119
  combined = (mutes+blanks).sort
118
120
 
119
121
  # detect overlap...
@@ -177,9 +179,9 @@ class EdlParser
177
179
  out << "%02d" % minutes
178
180
  seconds = seconds - minutes * 60
179
181
  out << ":"
180
- # avoid .0 at the end
182
+ # avoid an ugly .0 at the end
181
183
  if seconds != seconds.to_i
182
- out << "%04.1f" % seconds
184
+ out << "%04.3f" % seconds
183
185
  else
184
186
  out << "%02d" % seconds
185
187
  end
@@ -4,7 +4,7 @@
4
4
  # see subtitle_todo file
5
5
 
6
6
 
7
-
7
+ require_relative 'edl_parser'
8
8
 
9
9
 
10
10
  module SubtitleProfanityFinder
@@ -14,11 +14,10 @@ module SubtitleProfanityFinder
14
14
 
15
15
 
16
16
 
17
- def self.edl_output args
18
-
19
-
20
-
21
-
17
+ def self.edl_output incoming_filename, extra_profanity_hash = {}, subtract_from_each_beginning_ts = 0, add_to_end_each_ts = 0
18
+ incoming = File.read(incoming_filename)
19
+ raise if subtract_from_each_beginning_ts < 0
20
+ raise if add_to_end_each_ts < 0
22
21
 
23
22
 
24
23
 
@@ -48,11 +47,12 @@ module SubtitleProfanityFinder
48
47
 
49
48
 
50
49
 
50
+ # TODO butt, nimrod, ... retard, dumb, jerk, bloody
51
51
 
52
52
 
53
53
  profanities = {'hell' => ['he..', true],
54
54
  'g' +
55
- 'o' + 100.chr => '...', 'g' +
55
+ 'o' + 100.chr => 'goodness', 'g' +
56
56
  111.chr +
57
57
  100.chr +
58
58
  's' => 'deitys',
@@ -80,16 +80,11 @@ module SubtitleProfanityFinder
80
80
  'jesus' => 'l...',
81
81
  'chri' +
82
82
  'st'=> ['chr...', true], # allow for christian[ity] [good idea or not?]
83
+ 'sh' +
84
+ 'i' + 't' => 'sh..',
83
85
  'a realllly bad word' => ['test bad word', true]
84
86
  }
85
-
86
- incoming = File.read(args.shift)
87
-
88
- while args.length > 0
89
- prof = args.shift
90
- sanitized = args.shift
91
- profanities[prof] = sanitized
92
- end
87
+ profanities.merge! extra_profanity_hash
93
88
 
94
89
  all_profanity_combinations = []
95
90
 
@@ -158,7 +153,16 @@ module SubtitleProfanityFinder
158
153
  timing_line = glop.split("\n").first.strip
159
154
  timing_line =~ /((\d\d:\d\d:\d\d),(\d\d\d) --> (\d\d:\d\d:\d\d),(\d\d\d))/
160
155
  # "00:03:00.0" , "00:04:00.0", "violence", "of some sort",
161
- output += %!"#{$2}.#{$3}" , "#{$4}.#{$5}", "profanity", "#{sanitized.gsub(/[\[\]]/, '').strip}", "#{sanitized_glop.strip}",\n!
156
+ ts_begin = "#{$2}.#{$3}"
157
+ ts_begin = EdlParser.translate_string_to_seconds ts_begin
158
+ ts_begin -= subtract_from_each_beginning_ts
159
+ ts_begin = EdlParser.translate_time_to_human_readable ts_begin, true
160
+ ts_end = "#{$4}.#{$5}"
161
+ ts_end = EdlParser.translate_string_to_seconds ts_end
162
+ ts_end += add_to_end_each_ts
163
+ ts_end = EdlParser.translate_time_to_human_readable ts_end, true
164
+ output += %!"#{ts_begin}" , "#{ts_end}", "profanity", "#{sanitized.gsub(/[\[\]]/, '').strip}", "#{sanitized_glop.strip}",\n!
165
+ break
162
166
  end
163
167
 
164
168
  end
@@ -174,6 +178,6 @@ if $0 == __FILE__
174
178
  p 'syntax: filename.srt [prof1 sanitized_equivalent1 prof2 sanitized_equivalent2 ...]'
175
179
  exit
176
180
  else
177
- print SubtitleProfanityFinder.edl_output ARGV
181
+ print SubtitleProfanityFinder.edl_output ARGV.first
178
182
  end
179
183
  end
data/spec/notes CHANGED
@@ -1,4 +1,23 @@
1
+
1
2
  up next:
3
+
4
+ == real time subtitle ==
5
+ 0.4 extra + 0.5 not nuf blacky, marked one
6
+
7
+ flight:
8
+ first: second 168.0 -> 00:02:48.03 sez: 00:02:47,668
9
+ last: first 5151.2 -> 1:25:51.2 sez: 01:25:50,859
10
+
11
+ sum additive needed:
12
+ beginning: add to the end 0.25s
13
+ end: add to the begining 0.35s
14
+
15
+ == upconverting to the huge monitor==
16
+ with the black laptop:
17
+ "normal" dvdnav seemed to work all right, slightly jerky at times.
18
+ I think that upconverting to the little monitor used more cpu.
19
+ Anything to the big screen maxed out the cpu.
20
+ I "think" it looked better upconverted than not, big screen too, though both really pretty good. Except the computer not LOL.
2
21
 
3
22
  == ts vs. mkv transcoding ==
4
23
  mencoder fails c. mkv, succeeds c. ts (editing seems to succeed overall [?])
@@ -24,11 +24,11 @@ describe SubtitleProfanityFinder do
24
24
 
25
25
  describe "should parse out various profanities" do
26
26
 
27
- output = SubtitleProfanityFinder.edl_output ['dragon.srt']
28
-
29
- describe "heck" do
27
+ output = SubtitleProfanityFinder.edl_output 'dragon.srt'
28
+
29
+ describe "he.." do
30
30
  it "should include the bad line with timestamp" do
31
- output.should match(/00:00:54.929.*"he\.\."/)
31
+ output.should match(/0:00:54.929.*"he\.\."/)
32
32
  end
33
33
 
34
34
  it "should include the description in its output" do
@@ -42,12 +42,12 @@ describe SubtitleProfanityFinder do
42
42
  end
43
43
 
44
44
  it "should parse out deity singular and at very end" do
45
- output = SubtitleProfanityFinder.edl_output ['deity_end.srt']
46
- output.should include("fortress is our [deity]")
45
+ output = SubtitleProfanityFinder.edl_output 'deity_end.srt'
46
+ output.should include("fortress is our [goodness]")
47
47
  end
48
48
 
49
49
  it "should parse out <i> et al " do
50
- output = SubtitleProfanityFinder.edl_output ['deity_end.srt']
50
+ output = SubtitleProfanityFinder.edl_output 'deity_end.srt'
51
51
  output.should_not include(" i ")
52
52
  output.should_not include("<i")
53
53
  output.should_not include("huntingand")
@@ -58,16 +58,16 @@ describe SubtitleProfanityFinder do
58
58
 
59
59
  describe 'full word only profanities' do
60
60
 
61
- output2 = SubtitleProfanityFinder.edl_output ['arse.srt']
61
+ output2 = SubtitleProfanityFinder.edl_output 'arse.srt'
62
62
  it 'should not parse it if it\'s in other words' do
63
63
  output2.should_not include "a..ume"
64
64
  output2.should_not include "he..o" # todo: positive ex: ... :P
65
65
  end
66
66
 
67
67
  it 'should parse them at EOL' do
68
- output2.should include '00:00:55.069' # EOL
69
- output2.should include "00:00:55.071" # full line...
70
- output2.should include '00:00:55.066' # BOL
68
+ output2.should include '0:00:55.069' # EOL
69
+ output2.should include "0:00:55.071" # full line...
70
+ output2.should include '0:00:55.066' # BOL
71
71
  end
72
72
 
73
73
  it 'should replace l for i' do
@@ -86,16 +86,22 @@ describe SubtitleProfanityFinder do
86
86
 
87
87
  end
88
88
 
89
+ it 'should add to begin, end' do
90
+ out = SubtitleProfanityFinder.edl_output 'dragon.srt', {'word' => 'word'}, 1, 1.5
91
+ out.should include "45.460"
92
+ out.should include "51.589"
93
+ end
94
+
89
95
  describe "it should take optional user params" do
90
- output = SubtitleProfanityFinder.edl_output ['dragon.srt', 'word', 'word']
96
+ output = SubtitleProfanityFinder.edl_output 'dragon.srt', {'word' => 'word'}
91
97
 
92
98
  it "should parse out the word word" do
93
- output.should match(/00:00:50.089.*"word"/)
99
+ output.should match(/0:00:50.089.*"word"/)
94
100
  end
95
101
 
96
102
  it "should parse out and replace with euphemism" do
97
- output = SubtitleProfanityFinder.edl_output ['dragon.srt', 'word', 'w...']
98
- output.should match(/00:00:50.089.*In a \[w\.\.\.\]/)
103
+ output = SubtitleProfanityFinder.edl_output 'dragon.srt', {'word' => 'w...'}
104
+ output.should match(/0:00:50.089.*In a \[w\.\.\.\]/)
99
105
  end
100
106
 
101
107
  end
@@ -0,0 +1 @@
1
+ @"RUN SENSIBLE CINEMA CLICK HERE.bat" --upconvert-mode
data/todo.subtitle CHANGED
@@ -1,4 +1,6 @@
1
1
 
2
+ if it has two profanities we add it twice...
3
+
2
4
  portugues
3
5
 
4
6
  http://en.gentoo-wiki.com/wiki/DVD_to_MP4 mentions "subtitle ripper"
data/todo.upconvert CHANGED
@@ -8,6 +8,8 @@ hqdn3d settings?
8
8
 
9
9
  opengl?
10
10
 
11
+ upconvert netflix instant yes!
12
+
11
13
  == never ==
12
14
 
13
- sharpen filter?
15
+ sharpen filter?
@@ -0,0 +1,19 @@
1
+ # comments can go after a # on any line, for example this one.
2
+ "name" => "Airplane Edited",
3
+
4
+ "mutes" => [
5
+ # an example line, uncomment the leading "#" to make it active
6
+ # "0:00:01.0", "0:00:02.0", "profanity", "da..",
7
+ ],
8
+
9
+ "blank_outs" => [
10
+ # an example line, uncomment the leading "#" to make it active
11
+ # "00:03:00.0" , "00:04:00.0", "violence", "of some sort",
12
+ ],
13
+
14
+ "volume_name" => "050207_1132",
15
+ "disk_unique_id" => "95c96e17|f2c4159e",
16
+ "dvd_title_track" => "1", # the show info button will tell you title length (typically longest is main feature)
17
+ "not edited out stuff" => "some kissing on the beach, some kissing at the end",
18
+ # "closing thoughts" => "still...",
19
+ # "mplayer_dvd_splits" => ["59:59", "1:04:59"], # or [] if there are none. Additive currently. 12345.6 ok. In mplayer, the DVD timestamp "resets" to zero for some reason, so you need to specify when if you want to use mplayer DVD realtime playback, or use mencoder -edl to split your file. See http://goo.gl/yMfqX
@@ -0,0 +1,34 @@
1
+ # comments can go after a # on any line, for example this one.
2
+ "name" => "Flight of the Navigator",
3
+
4
+ "mutes" => [
5
+
6
+ "0:15:39.006" , "0:15:42.484", "profanity", "goodness", "Oh my [goodness]",
7
+ "0:15:44.720" , "0:15:47.697", "profanity", "goodness", "Oh Thank [goodness]",
8
+ "0:25:30.097" , "0:25:35.827", "profanity", "l...", "[l...] He's transmitting in alpha waves with complex frequency patterns in them",
9
+ "0:25:47.399" , "0:25:51.968", "profanity", "he..", "How the [he..] is he doing that I have no idea",
10
+ "0:33:31.453" , "0:33:33.395", "profanity", "sh..", "Don't take any [sh..] David",
11
+ "0:35:44.461" , "0:35:49.274", "profanity", "goodness", "Oh my [goodness] This kid's head is full",
12
+ "0:37:9.672" , "0:37:13.191", "profanity", "goodness", "My [goodness] These are uncharted systems",
13
+ "0:47:30.501" , "0:47:32.978", "profanity", "goodness", "Oh my [goodness]",
14
+ "0:48:23.095" , "0:48:26.948", "profanity", "goodness", "All right Get the [goodness][da..] door open Now",
15
+ "0:48:57.171" , "0:49:1.566", "profanity", "sh..", "Holy [sh..] it's an alien No you idiot It's the kid",
16
+ "0:54:10.442" , "0:54:14.344", "profanity", "da..", "[da..] How did that kid get outside",
17
+ "0:56:55.107" , "0:56:58.251", "profanity", "goodness", "My [goodness] it changed shape",
18
+ "1:03:53.359" , "1:03:57.921", "profanity", "goodness", "I swear to [goodness] if I was flying this thing we'd be home by now",
19
+ "1:06:52.705" , "1:06:56.099", "profanity", "goodness", "Inside a spaceship Oh my [goodness]",
20
+ "1:07:5.718" , "1:07:10.447", "profanity", "ba.....", "Faraday that [ba.....] That ba He's gonna wish he never met us",
21
+ "1:18:8.005" , "1:18:10.190", "profanity", "da..", "[da..]",
22
+ ],
23
+
24
+ "blank_outs" => [
25
+ # an example line, uncomment the leading "#" to make it active
26
+ # "00:03:00.0" , "00:04:00.0", "violence", "of some sort",
27
+ ],
28
+
29
+ "volume_name" => "FLIGHT_OF_THE_NAVIGATOR",
30
+ "disk_unique_id" => "464df6bb|75753761",
31
+ "dvd_title_track" => "1",
32
+ # "not edited out stuff" => "some violence",
33
+ # "closing thoughts" => "still...",
34
+ "mplayer_dvd_splits" => [],
@@ -0,0 +1,32 @@
1
+ # 3648747 comments can go after a # on any line, for example this one.
2
+ "name" => "HitchHiker's guide to the galaxy",
3
+
4
+ "mutes" => [
5
+
6
+ "00:08:54.816" , "00:08:59.185", "profanity", "...", "All these people are idiots [...]",
7
+ "00:09:55.811" , "00:10:00.705", "profanity", "...", "[...] you're serious Um I can't go to Madagascar", # failed default blacky 0.5s
8
+ "00:12:43.912" , "00:12:45.880", "profanity", "he..", "What the [he..] are those things",
9
+ "00:16:00.108" , "00:16:03.271", "profanity", "...", "of philosophical blockbusters Where [...] Went Wrong",
10
+ "00:16:03.378" , "00:16:05.869", "profanity", "...", "Some More of [...]'s Greatest Mistakes",
11
+ "00:16:05.947" , "00:16:08.279", "profanity", "...", "and Who Is This [...] Person Anyway",
12
+ "00:17:11.746" , "00:17:16.308", "profanity", "...", "Oh [...] my home My home was demolished",
13
+ "00:31:59.133" , "00:32:01.158", "profanity", "he..", "What the [he..] are you doing here",
14
+ "00:46:11.084" , "00:46:14.349", "profanity", "...", "Many races believed it was created by some sort of [...]", # hmm...
15
+ "00:52:50.198" , "00:52:54.464", "profanity", "he..", "Where the [he..] is Ford",
16
+ "00:53:35.510" , "00:53:38.274", "profanity", "he..", "What the [he..] have you been doing",
17
+
18
+ "01:04:09.076" , "01:04:12.705", "profanity", "he..", "Ow What the [he..] is that",
19
+ "01:36:19.675" , "01:36:25.006", "profanity", "...", "For [...]'s sake stop Cease fire", # modified...
20
+
21
+ ],
22
+
23
+ "blank_outs" => [
24
+ "00:21:02.5" , "00:21:08.5", "violence", "smashing crab",
25
+ ],
26
+
27
+ "volume_name" => "HGG0NND1",
28
+ "disk_unique_id" => "311b9d17|aef5cad0",
29
+ "dvd_title_track" => "12", # 6520.833
30
+ # "not edited out stuff" => "some violence",
31
+ # "closing thoughts" => "still...",
32
+ "mplayer_dvd_splits" => ["3152.6", "4192.0"],
@@ -0,0 +1,18 @@
1
+ # comments can go after a # on any line, for example this one.
2
+ "name" => "snow white and the seven dwarfs",
3
+
4
+ "mutes" => [
5
+ # an example line, uncomment the leading "#" to make it active
6
+ # "0:00:01.0", "0:00:02.0", "profanity", "da..",
7
+ ],
8
+
9
+ "blank_outs" => [
10
+ # an example line, uncomment the leading "#" to make it active
11
+ # "00:03:00.0" , "00:04:00.0", "violence", "of some sort",
12
+ ],
13
+
14
+ "volume_name" => "Snow_White",
15
+ "disk_unique_id" => "4a3cd891|ab315d08",
16
+ "dvd_title_track" => "1",# "not edited out stuff" => "some violence",
17
+ # "closing thoughts" => "still...",
18
+ # "mplayer_dvd_splits" => ["59:59", "1:04:59"], # it does have some...
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: sensible-cinema
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.24.0
5
+ version: 0.24.1
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-07-09 00:00:00 -06:00
13
+ date: 2011-07-12 00:00:00 -06:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -296,6 +296,7 @@ files:
296
296
  - template_bats/RUN SENSIBLE CINEMA CLICK HERE.bat
297
297
  - template_bats/_DO_NOT_RUN_IT_FROM_HERE_DOWNLOAD_THE_RELEASE_ZIP_FROM_SOURCEFORGE_INSTEAD
298
298
  - template_bats/advanced--create or edit sensible cinema edit list files.bat
299
+ - template_bats/run-upconverting-video-player.bat
299
300
  - todo.build_library.txt
300
301
  - todo.inventionzy.txt
301
302
  - todo.open_edl_list_org.txt
@@ -322,8 +323,11 @@ files:
322
323
  - zamples/edit_decision_lists/dvds/bob the builder pets in a pickle.txt
323
324
  - zamples/edit_decision_lists/dvds/bobs_big_plan.txt
324
325
  - zamples/edit_decision_lists/dvds/cool runnings.txt
326
+ - zamples/edit_decision_lists/dvds/edls_being_edited/airplane_edited.txt
325
327
  - zamples/edit_decision_lists/dvds/edls_being_edited/bambi.txt
326
328
  - zamples/edit_decision_lists/dvds/edls_being_edited/edl_for_unit_tests.txt
329
+ - zamples/edit_decision_lists/dvds/edls_being_edited/flight_of_the_navigator.txt
330
+ - zamples/edit_decision_lists/dvds/edls_being_edited/hitchhiker's_guide_to_the_galaxy.txt
327
331
  - zamples/edit_decision_lists/dvds/edls_being_edited/iq.txt
328
332
  - zamples/edit_decision_lists/dvds/edls_being_edited/other_side_of_heaven.txt
329
333
  - zamples/edit_decision_lists/dvds/edls_being_edited/snow_white_and_the_7_dwarfs_1937.txt
@@ -337,6 +341,7 @@ files:
337
341
  - zamples/edit_decision_lists/dvds/narnia_voyage_of_the_dawn_treader.txt
338
342
  - zamples/edit_decision_lists/dvds/pack_wedding_2007-03-03.txt
339
343
  - zamples/edit_decision_lists/dvds/sintel_open_source_blender.txt
344
+ - zamples/edit_decision_lists/dvds/snow_white_and_the_seven_dwarfs.txt
340
345
  - zamples/edit_decision_lists/dvds/tron_legacy.txt
341
346
  - zamples/edit_decision_lists/dvds/turn_around_alma_younger.txt
342
347
  - zamples/edit_decision_lists/netflix_instant/greatest_story_ever_told_netflix.txt