sensible-cinema 0.18.3 → 0.18.4
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +4 -0
- data/LICENSE.TXT +1 -0
- data/README +8 -13
- data/TODO +30 -34
- data/VERSION +1 -1
- data/bin/sensible-cinema +57 -62
- data/{how_to_create → how_to_create.txt} +18 -5
- data/sensible-cinema.gemspec +2 -3
- data/spec/sensible_cinema_gui.spec.rb +34 -4
- metadata +3 -4
- data/USAGE_TERMS.TXT +0 -15
data/ChangeLog
CHANGED
data/LICENSE.TXT
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
All files (c) Roger Pack 2010
|
2
2
|
All files are released under the GPLv3 license [1] unless otherwise specified. Ping me if you want/need this changed.
|
3
|
+
The edit lists are CC license, like wikipedia.
|
3
4
|
|
4
5
|
May contain some 3rd party libraries/executables under their own (separate, open source) licenses.
|
5
6
|
|
data/README
CHANGED
@@ -10,6 +10,9 @@ To use it, basically install then run it (see below).
|
|
10
10
|
It will come up with some windows where you choose what you want to do
|
11
11
|
(edit an edit list, use an edit decision list to edit a DVD, etc.)
|
12
12
|
|
13
|
+
If you try to make an edited copy of your DVD, note that it will take about one and a half times
|
14
|
+
as long as the playtime of the movie itself, so budget some time for it.
|
15
|
+
|
13
16
|
Enjoy!
|
14
17
|
|
15
18
|
[1] http://en.wikipedia.org/wiki/Linear_video_editing
|
@@ -24,19 +27,7 @@ then "click into it" and search for and run the file "run sensible cinema.bat"
|
|
24
27
|
|
25
28
|
== Creating Your Own Edit Lists, or modifying previously existing ones ==
|
26
29
|
|
27
|
-
|
28
|
-
|
29
|
-
An Edit Decision List looks something like this example:
|
30
|
-
|
31
|
-
Here's one with more detail
|
32
|
-
|
33
|
-
https://github.com/rdp/sensible-cinema/blob/master/zamples/edit_decision_lists/example_edit_decision_list.txt
|
34
|
-
|
35
|
-
Basically your job is to create an appropriate file (like that one) somewhere,
|
36
|
-
then start sensible-cinema and instruct it to use your new file.
|
37
|
-
|
38
|
-
Once you're done then you can contribute your scene descriptions file if desired, back to the project itself (see the "feedback" section,
|
39
|
-
below).
|
30
|
+
See the accompanied how_to_create.txt file.
|
40
31
|
|
41
32
|
== FAQ ==
|
42
33
|
|
@@ -49,6 +40,10 @@ A. You could burn a new DVD with it. First create it on your hard drive. Then
|
|
49
40
|
If you're interested in also being able to "beam" it from your computer to your game console (ex: PS3) ping me--I might have
|
50
41
|
something in mind that could help, though hasn't been created yet.
|
51
42
|
|
43
|
+
Q. I want to give an edited DVD to a friend, how do I do that?
|
44
|
+
A. Probably give them the original DVD and a link to sensible-cinema :)
|
45
|
+
You may want to loan them a DVD burner if they don't have one.
|
46
|
+
|
52
47
|
== Caveats ==
|
53
48
|
|
54
49
|
NB that "someone" has to create a edit decision lists, per DVD.
|
data/TODO
CHANGED
@@ -2,42 +2,44 @@
|
|
2
2
|
|
3
3
|
== up next release ==
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
if not: re-run latest preview -> auto play in smplayer
|
11
|
-
kill mencoder instances.
|
12
|
-
|
13
|
-
assert that at least one drive has a DVD in it...maybe loop refuse with message until this?
|
14
|
-
|
5
|
+
edit lists:
|
6
|
+
temple
|
7
|
+
cool runnings
|
8
|
+
cars
|
9
|
+
|
15
10
|
== slightly lower than that, somewhat ordered ==
|
16
11
|
|
17
|
-
|
18
|
-
|
12
|
+
research into edl dvdnav being flaky...
|
13
|
+
especially with arrows...
|
14
|
+
kill mencoder instances always, even if hard in jruby 1.5 :)
|
15
|
+
how can I get the return val tho? processbuilder gem?
|
16
|
+
all dogs edit list
|
19
17
|
compare computer DVD timings with physical player...
|
20
|
-
|
21
18
|
mpeg is lossy (at least my current one pass one is)
|
22
|
-
|
23
|
-
check it against cool runnings...
|
24
|
-
on the big screen...does raw.mpg look normal there? fulli?
|
25
|
-
if so, then program the "frame accurate" cutter
|
19
|
+
could check if DVD Flick handles *oversize* files well, for information sake
|
26
20
|
partner for filters (Jon, Karlie if interested...give beta)
|
27
21
|
lotsa filters somehow
|
28
22
|
my dvd's (loose timestamps...)
|
29
23
|
partners'...
|
30
24
|
beta release/rinse and repeat with various ppl (once it's releasable...)
|
31
25
|
a real'ish-er website
|
26
|
+
mailing list, link to it
|
32
27
|
play a bigger noise when totally done...(dvd flick'ish...)
|
33
|
-
|
28
|
+
make them acknowledge "just because it lacks profanity...does not immediately make it an inspiring experience."
|
29
|
+
note that this can corrupt your soul!
|
34
30
|
don't watch it if it's dark! come on!
|
35
31
|
dove.org, your kids will find the originals!
|
36
|
-
does ffdshow let WMP playback the audio on those files?
|
37
32
|
|
38
33
|
== DVD backlog (unordered, some very low prio, basically never do) ==
|
39
34
|
|
40
|
-
|
35
|
+
disallow choosing empty drive? fail more gracefully? (issue 11)
|
36
|
+
some status bar that shows which DVD is in currently, how many match it, et al (pre button)
|
37
|
+
splitter abs. coords option
|
38
|
+
video on how to use imdb
|
39
|
+
alternate endings
|
40
|
+
@ffmpeg there's no audio when going mpg -> mpg with copy!
|
41
|
+
@mplayer you *die* with edl's on many DVD's... ex: on bunny one
|
42
|
+
vendor\cache\mencoder\mplayer dvdnav://2 -nocache -edl C:\Users\packrd\AppData\Local\Temp\mplayer.temp.edl -dvd-device f:\
|
41
43
|
with "preview segment" can't you preview it once it has passed that segment?
|
42
44
|
can pull from imdb at package time [?]
|
43
45
|
delete fulli file
|
@@ -45,12 +47,11 @@
|
|
45
47
|
bundle 7z [?]
|
46
48
|
if license agreement allows
|
47
49
|
thinking not though...
|
48
|
-
bundle rubyzip
|
49
|
-
create wiki ("next to" distributed EDL's?)
|
50
50
|
mencoder harddup useful?
|
51
|
-
.exe installer
|
52
|
-
|
53
|
-
|
51
|
+
.exe installer
|
52
|
+
just unzips, runs the .bat file for them [?] :)
|
53
|
+
full msi
|
54
|
+
ask if you can somehow more easily grab to "mostly the same" exact codec (ffmpeg, mencoder mailing lists)
|
54
55
|
split EDL's somehow into their own project/LLC...
|
55
56
|
add md5 "warning" when something (anything) had failed disc fails doesn't match because of read failure...
|
56
57
|
not loop on preview view (smplayer)
|
@@ -96,9 +97,7 @@
|
|
96
97
|
advertise urug, ruby flow :)
|
97
98
|
"Re-run most recent" disabled when there isn't one [?]
|
98
99
|
re-do DVD EDL's that need it :P
|
99
|
-
all dogs go to heaven...finish EDL
|
100
100
|
warn when labels exist and don't match...
|
101
|
-
auto-download imagemagick, too
|
102
101
|
check all the many options to see if there's a "cross platform way to split files accurately" besides my hacky kludge.
|
103
102
|
can rip from a DVD-like local folder (would anybody ever need this?)
|
104
103
|
ripping "redoes" a large last section, for combining. Can I avoid this?
|
@@ -115,7 +114,6 @@
|
|
115
114
|
@VLC: hard crash when ripping that one DVD...long one, about the constitution...
|
116
115
|
in general, fine tune burning with various things...
|
117
116
|
|
118
|
-
|
119
117
|
@rspec: it appears to *undo* my stub's after the test, so background threads choke (take out after...)
|
120
118
|
|
121
119
|
make sure can work with very large DVD's...
|
@@ -134,10 +132,9 @@ double buffering hard drive/incoming copying from DVD might speed things, if you
|
|
134
132
|
might not work for all modes tho...
|
135
133
|
make the progress bar map "better" to the actual time that each section should take...
|
136
134
|
|
137
|
-
"show" what drive they have in there--like an auto-detect, and if it has EDL's available for it or not.
|
138
|
-
Note to people: make several EDL's per movie.
|
139
135
|
Note to people: clean your disks!
|
140
|
-
|
136
|
+
in an exception
|
137
|
+
|
141
138
|
@mencoder: cannot rip from dvd with -ovc copy -oac copy (tearing)
|
142
139
|
|
143
140
|
@ffmpeg: rip to fulli mpeg -> ffmpeg -ovc copy -oac copy out.mpg -> no audio!
|
@@ -151,7 +148,6 @@ burnable to DVD/CD/multi DVD automagically... (auto-burn insert your new disk!)
|
|
151
148
|
transcode to condense..?
|
152
149
|
split to allow?
|
153
150
|
try to compile transcode in cygwin (yipes)
|
154
|
-
legal shtuff (LICENSE)
|
155
151
|
|
156
152
|
@smplayer: right click on DVD...
|
157
153
|
the ac3 thing (I have to specify it...is this necessary? is it always ac3?)
|
@@ -344,6 +340,6 @@ create a "book edit list" (word x is at position y...)
|
|
344
340
|
@smplayer: your CD config is awful.
|
345
341
|
@mencoder: can't split
|
346
342
|
something like you watch it *with* you friends and can all chat together...hmm...
|
347
|
-
donate money to several projects I like :)
|
343
|
+
donate money to several projects I use/like :)
|
348
344
|
|
349
|
-
@mencoder: ripping like this results in an (avidemux, VLC) fourcc of 'ugh': mencoder2 dvdnav://1 -oac copy -ovc copy -o D:\raw_rip_mpeg_example.avi -endpos 20 -dvd-device E:\
|
345
|
+
@mencoder: ripping like this results in an (avidemux, VLC) fourcc of 'ugh': mencoder2 dvdnav://1 -oac copy -ovc copy -o D:\raw_rip_mpeg_example.avi -endpos 20 -dvd-device E:\
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.18.
|
1
|
+
0.18.4
|
data/bin/sensible-cinema
CHANGED
@@ -133,19 +133,10 @@ module SensibleSwing
|
|
133
133
|
system_non_blocking("start http://smplayer.sourceforge.net/downloads.php")
|
134
134
|
System.exit(1)
|
135
135
|
else
|
136
|
-
success_no_run, wrote_to_here_fulli = do_copy_dvd_to_hard_drive false, true
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
}
|
141
|
-
if success_no_run
|
142
|
-
on_success.call
|
143
|
-
else
|
144
|
-
Thread.new {
|
145
|
-
sleep 5; on_success.call # start it anyway, a bit delayed to let it start spooling to disk...
|
146
|
-
}
|
147
|
-
#@after_success_once = on_success # shenanigans to be able to let that thread run...
|
148
|
-
end
|
136
|
+
success_no_run, wrote_to_here_fulli = do_copy_dvd_to_hard_drive false, true
|
137
|
+
sleep 5 unless success_no_run
|
138
|
+
command = "smplayer #{wrote_to_here_fulli}"
|
139
|
+
system_non_blocking command
|
149
140
|
end
|
150
141
|
}
|
151
142
|
|
@@ -343,43 +334,57 @@ EOL
|
|
343
334
|
end
|
344
335
|
|
345
336
|
def choose_dvd_and_edl_for_it
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
descriptors = nil
|
357
|
-
while(!descriptors)
|
358
|
-
begin
|
359
|
-
descriptors = parse_edl edit_list_path
|
360
|
-
rescue SyntaxError => e
|
361
|
-
puts e
|
362
|
-
show_blocking_message_dialog("syntax error: " + edit_list_path + " " + e)
|
337
|
+
@_choose_dvd_and_edl_for_it ||=
|
338
|
+
begin
|
339
|
+
drive, dvd_volume_name, md5sum = choose_dvd_drive
|
340
|
+
puts "#{drive}, #{dvd_volume_name}, #{md5sum}"
|
341
|
+
edit_list_path = single_edit_list_matches_dvd(md5sum)
|
342
|
+
if !edit_list_path
|
343
|
+
fc = FileDialog.new(self)
|
344
|
+
fc.set_title "Please pick a DVD Edit Decision List File"
|
345
|
+
fc.set_directory EDL_DIR
|
346
|
+
edit_list_path = fc.go
|
363
347
|
end
|
348
|
+
raise 'cancelled' unless edit_list_path
|
349
|
+
descriptors = nil
|
350
|
+
while(!descriptors)
|
351
|
+
begin
|
352
|
+
descriptors = parse_edl edit_list_path
|
353
|
+
rescue SyntaxError => e
|
354
|
+
puts e
|
355
|
+
show_blocking_message_dialog("syntax error: " + edit_list_path + " " + e)
|
356
|
+
end
|
357
|
+
end
|
358
|
+
[drive, dvd_volume_name, md5sum, edit_list_path, descriptors]
|
364
359
|
end
|
365
|
-
return drive, dvd_volume_name, md5sum, edit_list_path, descriptors
|
366
360
|
end
|
367
361
|
|
368
362
|
def get_title_track descriptors
|
369
363
|
descriptors["dvd_title_track"] || "1"
|
370
364
|
end
|
365
|
+
|
366
|
+
def get_save_to_filename dvd_title
|
367
|
+
@_get_save_to_filename ||=
|
368
|
+
begin
|
369
|
+
fc = new_filechooser
|
370
|
+
fc.set_title "Pick where to save #{dvd_title} edited to"
|
371
|
+
save_to_file_name = dvd_title + ' edited version'
|
372
|
+
save_to_file_name = save_to_file_name.gsub(' ', '_').gsub( /\W/, '') # no punctuation or spaces for now...
|
373
|
+
fc.set_file(get_drive_with_most_space_with_slash + save_to_file_name)
|
374
|
+
save_to = fc.go
|
375
|
+
a = File.open(File.dirname(save_to) + "/test_file_to_see_if_we_have_permission_to_write_to_this_folder", "w")
|
376
|
+
a.close
|
377
|
+
File.delete a.path
|
378
|
+
save_to
|
379
|
+
end
|
380
|
+
end
|
371
381
|
|
372
|
-
def do_copy_dvd_to_hard_drive should_prompt_for_start_and_end_times,
|
382
|
+
def do_copy_dvd_to_hard_drive should_prompt_for_start_and_end_times, exit_early_if_fulli_exists = false
|
373
383
|
drive, dvd_volume_name, md5sum, edit_list_path, descriptors = choose_dvd_and_edl_for_it
|
374
|
-
|
375
|
-
dvd_title = descriptors['name'] || dvd_volume_name
|
376
|
-
|
377
|
-
fc = new_filechooser
|
378
|
-
|
379
384
|
# LODO allow for spaces in the save_to filename
|
380
|
-
|
381
385
|
if should_prompt_for_start_and_end_times
|
382
|
-
|
386
|
+
# only show it once :)
|
387
|
+
@show_block ||= show_blocking_message_dialog("Ok, let's preview just a portion of it. \nNote that you'll want to preview a section that wholly includes an edit decision in it\n For example, if it mutes from second 1 to second 10, you'll want to play from 00:00 to 00:12 or what not.\nAlso note that the first time you preview a section of a video, it will take like 20 minutes as it sets up the video for previewing.\nSubsequent previews will be faster, though, as long as you use the same filename.", "Preview") || true
|
383
388
|
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'])
|
384
389
|
end_time = get_user_input("At what point in the video would you like to finish your preview? (like 02:00 for ending at the 2 minute mark)", Storage['end_time'])
|
385
390
|
unless start_time and end_time
|
@@ -389,21 +394,11 @@ EOL
|
|
389
394
|
Storage['start_time'] = start_time
|
390
395
|
Storage['end_time'] = end_time
|
391
396
|
end
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
save_to_file_name = dvd_title + ' edited version'
|
396
|
-
save_to_file_name = save_to_file_name.gsub(' ', '_').gsub( /\W/, '') # no punctuation for now...
|
397
|
-
fc.set_file(get_drive_with_most_space_with_slash + save_to_file_name)
|
398
|
-
save_to = fc.go
|
399
|
-
a = File.open(File.dirname(save_to) + "/test_file_to_see_if_we_have_permission_to_write_to_this_folder", "w")
|
400
|
-
a.close
|
401
|
-
File.delete a.path
|
402
|
-
|
397
|
+
dvd_title = descriptors['name'] || dvd_volume_name
|
398
|
+
save_to = get_save_to_filename dvd_title
|
403
399
|
fulli = MencoderWrapper.calculate_final_filename save_to
|
404
|
-
if
|
400
|
+
if exit_early_if_fulli_exists
|
405
401
|
if File.exist? fulli + ".done"
|
406
|
-
# just return the full path early...
|
407
402
|
return [true, fulli]
|
408
403
|
end
|
409
404
|
# make it create a dummy response file for us :)
|
@@ -412,7 +407,8 @@ EOL
|
|
412
407
|
end
|
413
408
|
|
414
409
|
dvd_title_track = get_title_track(descriptors)
|
415
|
-
|
410
|
+
run_mplayer = should_prompt_for_start_and_end_times || exit_early_if_fulli_exists
|
411
|
+
generate_and_run_bat_file save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track, run_mplayer
|
416
412
|
[false, fulli] # false means it's running in a background thread :P
|
417
413
|
end
|
418
414
|
|
@@ -424,8 +420,8 @@ EOL
|
|
424
420
|
MencoderWrapper.get_bat_commands descriptors, drive, save_to, start_time, end_time, dvd_title_track
|
425
421
|
end
|
426
422
|
|
427
|
-
def generate_and_run_bat_file save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track
|
428
|
-
Storage['last_params'] = [save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track]
|
423
|
+
def generate_and_run_bat_file save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track, run_mplayer
|
424
|
+
Storage['last_params'] = [save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track, run_mplayer]
|
429
425
|
commands = get_mencoder_commands descriptors, drive, save_to, start_time, end_time, dvd_title_track
|
430
426
|
temp_dir = Dir.tmpdir
|
431
427
|
temp_file = temp_dir + '/vlc.temp.bat'
|
@@ -439,7 +435,7 @@ EOL
|
|
439
435
|
|
440
436
|
# allow our popups to still be serviced while it is running
|
441
437
|
@background_thread = Thread.new {
|
442
|
-
run_create_commands commands, save_to
|
438
|
+
run_create_commands commands, save_to, run_mplayer
|
443
439
|
popup.dispose
|
444
440
|
}
|
445
441
|
# LODO warn if they will overwrite a file in the end...
|
@@ -447,7 +443,7 @@ EOL
|
|
447
443
|
|
448
444
|
attr_accessor :background_thread, :after_success_once
|
449
445
|
|
450
|
-
def run_create_commands batch_commands, save_to
|
446
|
+
def run_create_commands batch_commands, save_to, run_mplayer
|
451
447
|
@buttons.each{|b| b.set_enabled false}
|
452
448
|
success = true
|
453
449
|
lines = batch_commands.lines.to_a
|
@@ -461,7 +457,7 @@ EOL
|
|
461
457
|
if line =~ /@rem /
|
462
458
|
success = true # these fail fof some reason?
|
463
459
|
else
|
464
|
-
p 'line failed: ' + line unless success
|
460
|
+
p 'line failed: ' + line + ' maybe time frame is past end of DVD, or Also note that if your DVD has scratches that cause it to skip, the time signatures will be off, so clean your discs!' unless success
|
465
461
|
end
|
466
462
|
end
|
467
463
|
@progress_bar.set_value(10 + idx/total_size*90)
|
@@ -470,23 +466,22 @@ EOL
|
|
470
466
|
@buttons.each{|b| b.set_enabled true}
|
471
467
|
if success
|
472
468
|
saved_to = save_to + '.avi'
|
473
|
-
if
|
474
|
-
|
469
|
+
if run_mplayer
|
470
|
+
system_non_blocking "smplayer #{saved_to}"
|
475
471
|
else
|
476
472
|
NonBlockingDialog.new(" Done--you may now watch file #{saved_to} in SMPlayer or VLC player")
|
477
473
|
show_file = "explorer /e,/select,\"#{File.expand_path(saved_to).to_filename}\""
|
478
474
|
system_non_blocking show_file
|
479
|
-
#self.close # ?
|
480
475
|
end
|
481
476
|
else
|
482
477
|
show_blocking_message_dialog("Failed--please examine screen output and report back!\nAlso consult the troubleshooting section of the README file.", "Failed", JOptionPane::ERROR_MESSAGE)
|
483
478
|
end
|
484
|
-
@after_success_once = nil
|
485
479
|
end
|
486
480
|
|
487
481
|
# returns e:\, volume, md5sum
|
488
482
|
def choose_dvd_drive
|
489
483
|
opticals = DriveInfo.get_dvd_drives_as_win32ole
|
484
|
+
show_blocking_message_dialog 'insert dvd first' unless opticals.find{|d| d.VolumeName }
|
490
485
|
names = opticals.map{|d| d.Name + "\\" + " (" + (d.VolumeName || 'Insert DVD and re-select') + ")"}
|
491
486
|
|
492
487
|
if opticals.length != 1
|
@@ -1,6 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
You create an edit decision list for sensible cinema to use against whatever you want.
|
2
|
+
|
3
|
+
An Edit Decision List looks something like this:
|
4
|
+
|
5
|
+
https://github.com/rdp/sensible-cinema/blob/master/zamples/edit_decision_lists/example_edit_decision_list.txt
|
6
|
+
|
7
|
+
Basically your job is to create an appropriate file (like that one) somewhere,
|
8
|
+
then start sensible-cinema and instruct it to use your new file.
|
9
|
+
|
10
|
+
For a DVD, the steps might look like this:
|
11
|
+
|
12
|
+
open Sensible cinema in create mode
|
13
|
+
insert DVD, click "create new edit list" button
|
4
14
|
|
5
15
|
click "open ripped version of DVD unedited", right click, create new file, name it something.txt, right click, "open", and then select it.
|
6
16
|
|
@@ -28,9 +38,12 @@ Also after you're done, you can delete any left over files that are still there.
|
|
28
38
|
Also after you're done, you can submit it back to the project by emailing me with an attachment: rogerdpack@gmail.com
|
29
39
|
|
30
40
|
Also if you want sensible-cinema to be able to auto-choose your EDL, then include its unique id (click the "Get a disk's unique id" button).
|
31
|
-
|
41
|
+
|
42
|
+
I typically like to make two edit lists per DVD. One that takes out swearing, sex, and gruesome violence, and another
|
43
|
+
"more paranoid" version that takes out basically anything that could be offensive to anybody :) ("dang", "fetch", "too tense" of scenes...)
|
44
|
+
|
32
45
|
A few pointers:
|
33
46
|
You can just watch the DVD (using any DVD player), and get timestamps that way, before starting this.
|
34
47
|
A good one is "smplayer" (the [ and ] keys control playback speed)
|
35
48
|
You can watch the DVD using VLC Player, which has a "fast forward" button, just recognize that VLC's timestamps are slightly off,
|
36
|
-
so they'll only be approximate, but it might still help.
|
49
|
+
so they'll only be approximate, but it might still help.
|
data/sensible-cinema.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{sensible-cinema}
|
8
|
-
s.version = "0.18.
|
8
|
+
s.version = "0.18.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Roger Pack"]
|
@@ -26,7 +26,6 @@ Gem::Specification.new do |s|
|
|
26
26
|
"RUN SENSIBLE CINEMA CLICK HERE.bat",
|
27
27
|
"Rakefile",
|
28
28
|
"TODO",
|
29
|
-
"USAGE_TERMS.TXT",
|
30
29
|
"VERSION",
|
31
30
|
"bin/sensible-cinema",
|
32
31
|
"bin/sensible-cinema-cli",
|
@@ -34,7 +33,7 @@ Gem::Specification.new do |s|
|
|
34
33
|
"experimental_readme.txt",
|
35
34
|
"ext/mkrf_conf.rb",
|
36
35
|
"gplv3.txt",
|
37
|
-
"how_to_create",
|
36
|
+
"how_to_create.txt",
|
38
37
|
"lib/add_any_bundled_gems_to_load_path.rb",
|
39
38
|
"lib/blanker.rb",
|
40
39
|
"lib/drive_info.rb",
|
@@ -103,6 +103,10 @@ module SensibleSwing
|
|
103
103
|
@show_blocking_message_dialog_last_args = args
|
104
104
|
}
|
105
105
|
@subject.stub!(:get_user_input) {'01:00'}
|
106
|
+
@subject.stub!(:system_blocking) { |command|
|
107
|
+
@system_blocking_command = command
|
108
|
+
}
|
109
|
+
|
106
110
|
@subject.stub!(:system_non_blocking) { |command|
|
107
111
|
@command = command
|
108
112
|
Thread.new {} # fake out the return...
|
@@ -160,7 +164,7 @@ module SensibleSwing
|
|
160
164
|
@subject.background_thread.join
|
161
165
|
@args[-1].should == 1
|
162
166
|
@args[-2].should == "01:00"
|
163
|
-
@command.should match /
|
167
|
+
@command.should match /smplayer/
|
164
168
|
@command.should_not match /fulli/
|
165
169
|
end
|
166
170
|
|
@@ -221,10 +225,36 @@ module SensibleSwing
|
|
221
225
|
end
|
222
226
|
|
223
227
|
it "should create an edl and pass it through to mplayer" do
|
224
|
-
@subject.instance_variable_get(:@mplayer_edl).simulate_click
|
225
|
-
@
|
226
|
-
@
|
228
|
+
@subject.instance_variable_get(:@mplayer_edl).simulate_click.join
|
229
|
+
@system_blocking_command.should match(/mplayer.*-edl/)
|
230
|
+
@system_blocking_command.should match(/-dvd-device /)
|
231
|
+
end
|
232
|
+
|
233
|
+
it "should only prompt for drive once" do
|
234
|
+
count = 0
|
235
|
+
@subject.stub!(:choose_dvd_drive) {
|
236
|
+
raise 'bad' if count == 1
|
237
|
+
count = 1
|
238
|
+
['drive', 'volume', '19d121ae8dc40cdd70b57ab7e8c74f76']
|
239
|
+
}
|
240
|
+
@subject.choose_dvd_and_edl_for_it
|
241
|
+
@subject.choose_dvd_and_edl_for_it
|
242
|
+
count.should == 1
|
243
|
+
end
|
244
|
+
|
245
|
+
it "should only prompt for save to filename once" do
|
246
|
+
count = 0
|
247
|
+
@subject.stub!(:new_filechooser) {
|
248
|
+
count += 1
|
249
|
+
FakeFileChooser.new
|
250
|
+
}
|
251
|
+
@subject.get_save_to_filename 'yo'
|
252
|
+
@subject.get_save_to_filename 'yo'
|
253
|
+
count.should == 1
|
227
254
|
end
|
228
255
|
|
229
256
|
end
|
257
|
+
|
258
|
+
it "should prompt you if you need to enter a dvd"
|
259
|
+
|
230
260
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 18
|
8
|
-
-
|
9
|
-
version: 0.18.
|
8
|
+
- 4
|
9
|
+
version: 0.18.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Roger Pack
|
@@ -164,7 +164,6 @@ files:
|
|
164
164
|
- RUN SENSIBLE CINEMA CLICK HERE.bat
|
165
165
|
- Rakefile
|
166
166
|
- TODO
|
167
|
-
- USAGE_TERMS.TXT
|
168
167
|
- VERSION
|
169
168
|
- bin/sensible-cinema
|
170
169
|
- bin/sensible-cinema-cli
|
@@ -172,7 +171,7 @@ files:
|
|
172
171
|
- experimental_readme.txt
|
173
172
|
- ext/mkrf_conf.rb
|
174
173
|
- gplv3.txt
|
175
|
-
- how_to_create
|
174
|
+
- how_to_create.txt
|
176
175
|
- lib/add_any_bundled_gems_to_load_path.rb
|
177
176
|
- lib/blanker.rb
|
178
177
|
- lib/drive_info.rb
|
data/USAGE_TERMS.TXT
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
Copyright 2010 Roger Pack
|
2
|
-
|
3
|
-
Sensible Cinema
|
4
|
-
|
5
|
-
|
6
|
-
USING THIS FREEWARE MIGHT BE ILLEGAL IN SOME COUNTRIES
|
7
|
-
|
8
|
-
Please check with your legal advisor, and if this is the case in your country, you are NOT licensed to use this freeware.
|
9
|
-
|
10
|
-
LICENSE TERMS AND CONDITIONS
|
11
|
-
|
12
|
-
YOU ACKNOWLEDGE THAT LICENSOR MAKES NO WARRANTIES TO YOU IN CONNECTION WITH THIS LICENSE,
|
13
|
-
INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE,
|
14
|
-
NON-INFRINGEMENT AND LEGALITY IN YOUR COUNTRY. YOU AGREE TO DEFEND, INDEMNIFY AND HOLD HARMLESS LICENSOR FROM
|
15
|
-
ANY AND ALL CLAIMS OF INFRINGEMENT (INCLUDING THOSE MADE BY THIRD PARTIES) RESULTING IN WHOLE OR IN PART FROM YOUR USE OF THE FREEWARE.
|