sensible-cinema 0.19.7 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +4 -0
- data/TODO +63 -90
- data/VERSION +1 -1
- data/bin/sensible-cinema +50 -19
- data/how_to_create.txt +2 -1
- data/lib/mencoder_wrapper.rb +1 -1
- data/sensible-cinema.gemspec +2 -2
- data/spec/notes +6 -0
- data/spec/sensible_cinema_gui.spec.rb +17 -9
- data/zamples/edit_decision_lists/dvds/COOL_RUNNINGS.txt +34 -27
- metadata +4 -4
data/ChangeLog
CHANGED
data/TODO
CHANGED
|
@@ -2,22 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
== up next release ==
|
|
4
4
|
|
|
5
|
-
edl straight
|
|
6
|
-
|
|
7
|
-
clear runnings
|
|
5
|
+
edl straight DVD replay: work HP
|
|
6
|
+
work cars
|
|
7
|
+
clear runnings
|
|
8
8
|
have ben and chris test it out
|
|
9
9
|
|
|
10
10
|
== slightly lower than that, somewhat ordered ==
|
|
11
11
|
|
|
12
|
+
the 0.5 offset only is applying to mutes currently [fix]
|
|
13
|
+
also note that the beginning offset is wrong-o [?]
|
|
14
|
+
"watch edited while grabbing"
|
|
15
|
+
don't exit program if they don't select a disk :)
|
|
16
|
+
if they type in a "new" start time, use that as the default end time input
|
|
12
17
|
linearize edl's
|
|
13
18
|
don't use them linear, just linearize
|
|
14
19
|
mpeg is lossy (at least my current one pass conversion still is...) and smplayer can't play it right unedited
|
|
15
20
|
frame accurate splitter naive
|
|
16
|
-
more
|
|
21
|
+
more DL's
|
|
17
22
|
my dvd's (loose timestamps...)
|
|
18
23
|
cars backport real EDL :)
|
|
19
24
|
enlist chris' help
|
|
20
|
-
need mac port [?]
|
|
25
|
+
first need mac port [?]
|
|
21
26
|
friend dvd's, me DL
|
|
22
27
|
partner for filters (Jon, Karlie if interested...give beta)
|
|
23
28
|
all only after linearize, new year, frame accurate
|
|
@@ -37,16 +42,22 @@
|
|
|
37
42
|
blogs that have ever mentioned clearplay :P
|
|
38
43
|
free google adwords (?)
|
|
39
44
|
advertise urug, ruby flow :)
|
|
40
|
-
only after new year
|
|
41
|
-
|
|
45
|
+
only after new year, new LLC
|
|
46
|
+
use DVD navigator ?
|
|
47
|
+
http://msdn.microsoft.com/en-us/library/dd388584(v=VS.85).aspx
|
|
48
|
+
with an avi file sink?
|
|
42
49
|
|
|
43
50
|
== DVD backlog (unordered, some very low prio, basically all never do) ==
|
|
44
51
|
|
|
52
|
+
@mplayer: why you can't play it when VLC can? huh? (audio sync)
|
|
53
|
+
can watch conference like a music video :)
|
|
54
|
+
can play "this section then that, with this one's audio
|
|
55
|
+
add they 'play from unedited from grab till it hits the first bad spot', if useful [?]
|
|
45
56
|
@smplayer: unable to seek in cars (once I figure out if this is specific to a particular DVD)
|
|
46
|
-
|
|
57
|
+
@mplayer: edl disworks after a certain timestamp (after...)
|
|
47
58
|
disallow:
|
|
48
|
-
"0:45:00.0" , "00:450:10.0", # second 2700
|
|
49
|
-
issues
|
|
59
|
+
"0:45:00.0" , "00:450:10.0", # second 2700
|
|
60
|
+
all github issues
|
|
50
61
|
a website that gives you a "wholesome meter"
|
|
51
62
|
md5 and verify the fulli version... [?]
|
|
52
63
|
only useful once I get the frame accurate stuff done, and any audio tweakage, etc.
|
|
@@ -55,7 +66,7 @@
|
|
|
55
66
|
can I combine commands onto one command line for a quicker anything?
|
|
56
67
|
can I get the original audio tracks back?
|
|
57
68
|
show them how to use smplayer with subtitles
|
|
58
|
-
can overlay with an image
|
|
69
|
+
can overlay with an image (DVD edited file)
|
|
59
70
|
can you forceidx on the original copy and have mplayer replay EDL in realtime accurately or not, with audio?
|
|
60
71
|
if not somehow, wait till video falls through, then see if I can...do something here with audio...yipers..
|
|
61
72
|
sound accurate?
|
|
@@ -63,33 +74,26 @@
|
|
|
63
74
|
calculating disk's unique id... -> gui somewhere
|
|
64
75
|
@dvd flick: auto-detect the aspect ratio, if possible (?)
|
|
65
76
|
ffmpeg handle 3F2R audio [sigh] [cars, should work with temple at lavc, too, bob dvd's are dual, I think...hmm...]
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
dvdnav versus dvd for mplayer edl?
|
|
77
|
+
an 'always blank not skip the mutes' option for paranoia
|
|
78
|
+
dvdnav versus dvd for mplayer edl? (report)
|
|
69
79
|
disallow choosing empty drive? fail more gracefully? (issue 11)
|
|
70
|
-
some status bar that shows which DVD is in currently, how many match it, et al (pre button)
|
|
71
|
-
splitter abs. coords option
|
|
72
80
|
video on how to use imdb
|
|
73
81
|
if times match DVD players
|
|
74
|
-
alternate endings
|
|
75
|
-
@ffmpeg there's no audio when going mpg -> mpg with copy!
|
|
82
|
+
alternate endings et al
|
|
76
83
|
@mplayer you *die* with edl's on many DVD's... ex: on bunny one
|
|
77
84
|
vendor\cache\mencoder\mplayer dvdnav://2 -nocache -edl C:\Users\packrd\AppData\Local\Temp\mplayer.temp.edl -dvd-device f:\
|
|
78
85
|
with "preview segment" can't you preview it once it has passed that segment?
|
|
79
86
|
can pull from imdb at package time [?]
|
|
80
|
-
delete fulli file
|
|
87
|
+
delete fulli file automatically
|
|
81
88
|
except if it's a specific scene run...
|
|
82
|
-
mencoder harddup useful?
|
|
83
89
|
.exe installer
|
|
84
90
|
just unzips, runs the .bat file for them [?] :)
|
|
85
91
|
full msi
|
|
86
92
|
ask if you can somehow more easily grab to "mostly the same" exact codec (ffmpeg, mencoder mailing lists)
|
|
87
|
-
split EDL's somehow into their own project/LLC...
|
|
93
|
+
split EDL's themselves somehow into their own project/LLC...
|
|
88
94
|
add md5 "warning" when something (anything) had failed disc fails doesn't match because of read failure...
|
|
89
95
|
not loop on preview view (smplayer)
|
|
90
|
-
LLC before ever pay anyone, if I ever do
|
|
91
|
-
@DVD flick: support multi-track audio/subtitles (if they're already in the streams...)
|
|
92
|
-
note the mplayer/smplayer as a player fast forward feature...
|
|
96
|
+
LLC before ever pay anyone anything, if I ever do
|
|
93
97
|
several "play now" options...without a navigator of course :)
|
|
94
98
|
visualbasic-like playlist
|
|
95
99
|
one line at a time :P
|
|
@@ -108,97 +112,65 @@
|
|
|
108
112
|
maybe one that is watching the extraction (get info, get info, get info...)...as it includes scene x, it adds it edited to the end of the final output file...
|
|
109
113
|
This seems like the only real way.
|
|
110
114
|
one that's "we're ripping, but play from that via EDL or playlist"
|
|
111
|
-
whichr: return nil
|
|
112
115
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
add an option "just save full disk (unedited) to hard drive..."
|
|
119
|
-
note to people: can edit those to your liking
|
|
120
|
-
|
|
116
|
+
using+burning screencast
|
|
117
|
+
editing screencast
|
|
118
|
+
instructions on how to do their own (private) DL or do one and submit it (public), or email their friends :P
|
|
119
|
+
add an option "just save full disk (unedited) to hard drive..."
|
|
120
|
+
note to people: can edit these to your liking, resubmit
|
|
121
121
|
imagemagick (ffmpeg) easier install...
|
|
122
122
|
DRY up dependency installation code
|
|
123
|
-
install dep's to cache2 or something...so I can
|
|
123
|
+
install dep's to cache2 or something...so I can avoid redownload after a release...
|
|
124
124
|
"Re-run most recent" disabled when there isn't one [?]
|
|
125
|
-
re-do DVD EDL's that need it :P
|
|
126
125
|
warn when labels exist and don't match...
|
|
127
|
-
check all the many options to see if there's a "cross platform way to split files accurately" besides my hacky kludge.
|
|
128
126
|
can rip from a DVD-like local folder (would anybody ever need this?)
|
|
129
|
-
|
|
130
|
-
plus I do some copy, some ac3 audio codec? huh? avoidable?
|
|
131
|
-
@dvd flick do you need that frequent of i-frames?
|
|
132
|
-
rename bat as template.bat
|
|
133
|
-
add a developer readme
|
|
127
|
+
rename bats as template.bats
|
|
134
128
|
can parse IMDB (require they put in the URL by hand fer now)
|
|
135
129
|
add stuffs to imdb hmmm
|
|
136
130
|
IMDB easy mapping
|
|
137
131
|
can blank out the video, with audio continuing through...
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
@VLC: hard crash when ripping that one DVD...long one, about the constitution...
|
|
141
|
-
in general, fine tune burning with various things...
|
|
142
|
-
|
|
143
|
-
@rspec: it appears to *undo* my stub's after the test, so background threads choke (take out after...)
|
|
144
|
-
|
|
145
|
-
make sure can work with very large DVD's...
|
|
146
|
-
can use a fast temp drive, save through it to another :P
|
|
147
|
-
(when they have two...)
|
|
148
|
-
can have collaborators re-selling EDL's
|
|
149
|
-
good license for their stuff like "public domain" or what not :P Can't be a hypocrite now, can I?
|
|
150
|
-
a real website that looks good
|
|
151
|
-
k9 might preserve/shrink well...hmm...auto calculation may be possible...hmm...
|
|
152
|
-
better .exe icon...
|
|
153
|
-
blu-ray support somehow (real-time? rip?)
|
|
154
|
-
use DVD navigator ?
|
|
155
|
-
http://msdn.microsoft.com/en-us/library/dd388584(v=VS.85).aspx
|
|
156
|
-
with an avi file sink?
|
|
157
|
-
double buffering hard drive/incoming copying from DVD might speed things, if your HD is fast.
|
|
158
|
-
might not work for all modes tho...
|
|
159
|
-
make the progress bar map "better" to the actual time that each section should take...
|
|
160
|
-
|
|
161
|
-
Note to people: clean your disks!
|
|
162
|
-
in an exception
|
|
163
|
-
|
|
164
|
-
@mencoder: cannot rip from dvd with -ovc copy -oac copy (tearing)
|
|
132
|
+
@VLC: hard crash when ripping that one DVD...long one, about the constitution...
|
|
133
|
+
in general, fine tune burning with various things...
|
|
165
134
|
|
|
166
|
-
|
|
167
|
-
|
|
135
|
+
can use a fast temp drive, save through it to another :P
|
|
136
|
+
(when they have two...)
|
|
137
|
+
better .exe icon...
|
|
138
|
+
blu-ray support somehow (real-time? rip?)
|
|
139
|
+
double buffering hard drive/incoming copying from DVD might speed things, if your HD is fast.
|
|
140
|
+
might not work for all modes tho...
|
|
141
|
+
make the progress bar map "better" to the actual time that each section should take...
|
|
142
|
+
|
|
143
|
+
@mencoder: cannot rip from dvd with -ovc copy -oac copy (tearing)
|
|
144
|
+
|
|
145
|
+
@ffmpeg: rip to fulli mpeg -> ffmpeg -ovc copy -oac copy out.mpg -> no audio!
|
|
146
|
+
and to .avi sometimes works, sometimes it results in static!
|
|
168
147
|
|
|
169
148
|
burnable to DVD/CD/multi DVD automagically... (auto-burn insert your new disk!)
|
|
170
149
|
can *re-use* original navigation stuffs, less the profanity (is that possible? VobBlanker help, perhaps?)
|
|
171
150
|
can lop off sections to save space (?)
|
|
172
151
|
can burn extras from the DVD, too?
|
|
173
152
|
optionally ?
|
|
174
|
-
transcode to condense..?
|
|
175
|
-
split to allow?
|
|
176
|
-
try to compile transcode in cygwin (yipes)
|
|
177
153
|
|
|
178
154
|
@smplayer: right click on DVD...
|
|
179
155
|
the ac3 thing (I have to specify it...is this necessary? is it always ac3?)
|
|
180
|
-
can have different volume settings
|
|
156
|
+
can have different volume settings, like low volume instead of 0 [?]
|
|
181
157
|
ask VLC "fuzzy menus on the happiest baby dvd expected?"
|
|
182
|
-
right click on DVD player, rip edited with SC?
|
|
183
|
-
@mplayer and VLC "you should seek better, like the ogg vorbis fellas recommend..."
|
|
184
158
|
report to jruby "when one thread dies, the GUI becomes unresponsive" (and others already previously reported to ruby-forum.com...)
|
|
185
159
|
DVD's (right click on DVD player, play with SC?)
|
|
186
|
-
use spiffy differentiation for DVD's on windows
|
|
187
160
|
a "certified clean" list
|
|
188
161
|
advertise my "splitting joining" google doc page. also test the various options there for accurateness :)
|
|
189
|
-
check for "newer version available" or not...
|
|
162
|
+
a check for "newer version available" or not...
|
|
190
163
|
buy blu-ray decrypter, and drive, try it out.
|
|
164
|
+
a single netflix descriptor, just in case
|
|
191
165
|
|
|
192
166
|
== random non-DVD backlog ... note: just plow forward, to "grab" available ideas...except that for now, just what *I* plan on needing for myself (filters for what I need/want). ==
|
|
193
|
-
|
|
194
|
-
copy to one drive, write to another, for speedup
|
|
167
|
+
|
|
195
168
|
fade in/fade out volume, video
|
|
196
169
|
make the other stuff work again, since I no longer use YAML...
|
|
197
170
|
|
|
198
|
-
pass unit tests again jruby
|
|
171
|
+
pass all unit tests again jruby
|
|
199
172
|
|
|
200
173
|
speed up slow unit tests
|
|
201
|
-
can "watch as it is being ripped" (concat, watching it as it grows faster than you watch...)
|
|
202
174
|
make the overlay window uncloseable (?)
|
|
203
175
|
note that youtube can be downloaded then a local edited copy created, from that download. (mb add downloading ability?)
|
|
204
176
|
screencast of things helpful (use, creation...).
|
|
@@ -206,7 +178,7 @@ tune up the levels...
|
|
|
206
178
|
prototypes of the experimental stuff (overlay, track time while recording -> map file, specifiable levels, more?)
|
|
207
179
|
|
|
208
180
|
fix:
|
|
209
|
-
0:01:01.9 next will be at 0:01:02.0s (r [or q to quit]):
|
|
181
|
+
0:01:01.9 next will be at 0:01:02.0s (r [or q to quit]):
|
|
210
182
|
0:01:04.0 next will be at 0:01:06.5s (blanked) (r [or q to quit]): "warning--unable to track screen time for some reason" # *of course you can't track it now!*
|
|
211
183
|
|
|
212
184
|
byu.tv descriptor
|
|
@@ -345,12 +317,12 @@ OCR the captioning as an auto profanity filter? (or perhaps download subtitles t
|
|
|
345
317
|
|
|
346
318
|
--server? optionally higher prio?
|
|
347
319
|
|
|
348
|
-
irb(main):001:0> a = File.open('big1', 'w')
|
|
349
|
-
=> #<File:big1>
|
|
350
|
-
irb(main):002:0> a.seek 10_000_000_000
|
|
351
|
-
=> 0
|
|
352
|
-
irb(main):003:0> a.write 'b'
|
|
353
|
-
=> 1
|
|
320
|
+
irb(main):001:0> a = File.open('big1', 'w')
|
|
321
|
+
=> #<File:big1>
|
|
322
|
+
irb(main):002:0> a.seek 10_000_000_000
|
|
323
|
+
=> 0
|
|
324
|
+
irb(main):003:0> a.write 'b'
|
|
325
|
+
=> 1
|
|
354
326
|
irb(main):004:0> a.close # freeze mri 1.9.2
|
|
355
327
|
=======
|
|
356
328
|
take out all require 'rubygems'ses...
|
|
@@ -372,4 +344,5 @@ donate money to several projects I use/like :)
|
|
|
372
344
|
|
|
373
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:\
|
|
374
346
|
|
|
375
|
-
@jruby: system("mencoder") from a button doesn't get interrupted by an exception [!]
|
|
347
|
+
@jruby: system("mencoder") from a button doesn't get interrupted by an exception [!]
|
|
348
|
+
@vlc: replay mp4's are too dark.
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.20.0
|
data/bin/sensible-cinema
CHANGED
|
@@ -109,21 +109,7 @@ module SensibleSwing
|
|
|
109
109
|
|
|
110
110
|
@mplayer_edl = new_jbutton( "Watch DVD on computer edited realtime (not always be accurate)", false )
|
|
111
111
|
@mplayer_edl.on_clicked {
|
|
112
|
-
|
|
113
|
-
descriptors = EdlParser.parse_file edl_path
|
|
114
|
-
temp_dir = Dir.tmpdir
|
|
115
|
-
temp_file = temp_dir + '/mplayer.temp.edl'
|
|
116
|
-
edl_contents = MplayerEdl.convert_to_edl descriptors, 1.75 # add a sec to mutes to accomodate for mplayer's oddness...
|
|
117
|
-
File.write(temp_file, edl_contents)
|
|
118
|
-
title_track = get_title_track(descriptors)
|
|
119
|
-
# oh the insanity of the console UI...LODO more user friendly player
|
|
120
|
-
@popup ||= NonBlockingDialog.new("Running mplayer. To control it, use space for pause.\n
|
|
121
|
-
Also right and left arrows to seek, F key for full screen,
|
|
122
|
-
q to quit.")
|
|
123
|
-
# LODO dry up mplayer dvd opts...
|
|
124
|
-
command = "mplayer dvd://#{title_track} -nocache -alang en -sid 1000 -edl #{File.expand_path temp_file} -dvd-device #{drive}"
|
|
125
|
-
p command
|
|
126
|
-
Thread.new { system_blocking command; @popup.dispose }
|
|
112
|
+
do_mplayer_edl nil, 0, 0.5
|
|
127
113
|
}
|
|
128
114
|
|
|
129
115
|
@watch_unedited = new_jbutton("Watch a DVD unedited (while grabbing to hard drive)", true)
|
|
@@ -146,7 +132,31 @@ module SensibleSwing
|
|
|
146
132
|
|
|
147
133
|
@rerun_preview = new_jbutton( "Re-run most recently watched preview time frame", true )
|
|
148
134
|
@rerun_preview.on_clicked {
|
|
149
|
-
repeat_last_copy_dvd_to_hard_drive
|
|
135
|
+
repeat_last_copy_dvd_to_hard_drive
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
@fast_preview = new_jbutton( "preview section fast mode", true).on_clicked {
|
|
139
|
+
success, wrote_to_here_fulli = do_copy_dvd_to_hard_drive false, true
|
|
140
|
+
sleep 0.5 # lodo take out ???
|
|
141
|
+
background_thread.join if background_thread # let it write out the original fulli, if necessary [?]
|
|
142
|
+
nice_file = wrote_to_here_fulli + ".fast.mpg"
|
|
143
|
+
if !File.exist?(nice_file)
|
|
144
|
+
p = NonBlockingDialog.new("Creating quick lookup file--NB that for each changed deletion, you'll need to restart the fast preview SMplayer")
|
|
145
|
+
raise 'create failed' unless system_blocking("ffmpeg -i #{wrote_to_here_fulli} -target ntsc-dvd #{nice_file}")
|
|
146
|
+
p.dispose # it will be there for sure
|
|
147
|
+
end
|
|
148
|
+
smplayer_prefs_file = File.expand_path("~/.smplayer/smplayer.ini")
|
|
149
|
+
old_prefs = File.read(smplayer_prefs_file)
|
|
150
|
+
new_prefs = old_prefs.gsub(/mplayer_additional_options=.*/, "mplayer_additional_options=-edl #{EdlTempFile}")
|
|
151
|
+
File.write(smplayer_prefs_file, new_prefs)
|
|
152
|
+
thread = do_mplayer_edl( "smplayer #{nice_file}", 0, 0.5)
|
|
153
|
+
Thread.new { # XX do we need this?
|
|
154
|
+
begin
|
|
155
|
+
thread.join
|
|
156
|
+
ensure
|
|
157
|
+
File.write(smplayer_prefs_file, old_prefs)
|
|
158
|
+
end
|
|
159
|
+
}
|
|
150
160
|
}
|
|
151
161
|
|
|
152
162
|
@open_list = new_jbutton("Open/Edit a Delete List", true)
|
|
@@ -227,6 +237,25 @@ EOL
|
|
|
227
237
|
writeOut.close
|
|
228
238
|
end
|
|
229
239
|
|
|
240
|
+
EdlTempFile = Dir.tmpdir + '/mplayer.temp.edl'
|
|
241
|
+
|
|
242
|
+
def do_mplayer_edl play_this_start, add_secs_end, add_secs_beginning
|
|
243
|
+
drive, dvd_volume_name, md5sum, edl_path, descriptors = choose_dvd_and_edl_for_it
|
|
244
|
+
descriptors = EdlParser.parse_file edl_path
|
|
245
|
+
edl_contents = MplayerEdl.convert_to_edl descriptors, add_secs_end, add_secs_beginning # add a sec to mutes to accomodate for mplayer's oddness...
|
|
246
|
+
File.write(EdlTempFile, edl_contents)
|
|
247
|
+
title_track = get_title_track(descriptors)
|
|
248
|
+
# oh the insanity of the console UI...LODO more user friendly player
|
|
249
|
+
@popup ||= NonBlockingDialog.new("Running mplayer. To control it, use space for pause.\n
|
|
250
|
+
Also right and left arrows to seek, F key for full screen, [, ] to control playback speed.
|
|
251
|
+
q to quit.")
|
|
252
|
+
# LODO dry up mplayer dvd opts...
|
|
253
|
+
play_this_start ||= "mplayer dvd://#{title_track}"
|
|
254
|
+
command = "#{play_this_start} -nocache -alang en -sid 1000 -edl #{File.expand_path EdlTempFile} -dvd-device #{drive}"
|
|
255
|
+
p command
|
|
256
|
+
Thread.new { system_blocking command; @popup.dispose }
|
|
257
|
+
end
|
|
258
|
+
|
|
230
259
|
def show_blocking_license_accept_dialog program, license_name, license_url_should_also_be_embedded_by_you_in_message, title = 'Confirm Acceptance of License Agreement', message = nil
|
|
231
260
|
puts 'Please confirm license agreement in open window'
|
|
232
261
|
old = ['no', 'yes', 'ok'].map{|name| 'OptionPane.' + name + 'ButtonText'}.map{|name| [name, UIManager.get(name)]}
|
|
@@ -345,7 +374,7 @@ EOL
|
|
|
345
374
|
end
|
|
346
375
|
|
|
347
376
|
def get_freespace path
|
|
348
|
-
JFile.new(path).get_usable_space
|
|
377
|
+
JFile.new(File.dirname(path)).get_usable_space
|
|
349
378
|
end
|
|
350
379
|
|
|
351
380
|
def choose_dvd_and_edl_for_it
|
|
@@ -393,8 +422,10 @@ EOL
|
|
|
393
422
|
a = File.open(File.dirname(save_to) + "/test_file_to_see_if_we_have_permission_to_write_to_this_folder", "w")
|
|
394
423
|
a.close
|
|
395
424
|
File.delete a.path
|
|
396
|
-
|
|
397
|
-
|
|
425
|
+
freespace = get_freespace(save_to)
|
|
426
|
+
if freespace < 16_000_000_000
|
|
427
|
+
show_blocking_message_dialog("Warning: there may not be enough space on the disk for #{save_to}
|
|
428
|
+
(depending on DVD size, you may need like 16G free, but typically will need around 10GB free--you only have #{freespace/1_000_000_000}GB free). Click OK to continue.")
|
|
398
429
|
end
|
|
399
430
|
save_to
|
|
400
431
|
end
|
data/how_to_create.txt
CHANGED
|
@@ -35,6 +35,7 @@ A few pointers:
|
|
|
35
35
|
I typically like to make two delete lists per DVD. One that takes out swearing, sex, and gruesome violence, and another
|
|
36
36
|
"more paranoid" version that takes out basically anything that could be offensive to anybody :) ("dang", "fetch", "too tense" of scenes...)
|
|
37
37
|
You can just watch the DVD (using any DVD player), and get timestamps that way, before starting this.
|
|
38
|
-
A good one is "smplayer" (the [ and ] keys control playback speed
|
|
38
|
+
A good one is "smplayer" (the [ and ] keys control playback speed, right and left, page up and page down control seeking),
|
|
39
|
+
and you can turn on subtitles to help locae profanity (as also in VLC).
|
|
39
40
|
You can watch the DVD using VLC Player, which has a "fast forward" button, just recognize that VLC's timestamps are always slightly off,
|
|
40
41
|
so they'll only be approximate, but it might be close.
|
data/lib/mencoder_wrapper.rb
CHANGED
|
@@ -88,7 +88,7 @@ class MencoderWrapper
|
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
def get_section start, endy, should_mute, to_here_final_file
|
|
91
|
-
raise if start == endy # should never actually happen...
|
|
91
|
+
raise 'start == end' if start == endy # should never actually happen...
|
|
92
92
|
# delete 0.001 as per wiki's suggestion.
|
|
93
93
|
endy = endy - start - 0.001
|
|
94
94
|
# very decreased volume is like muting :)
|
data/sensible-cinema.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{sensible-cinema}
|
|
8
|
-
s.version = "0.
|
|
8
|
+
s.version = "0.20.0"
|
|
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"]
|
|
12
|
-
s.date = %q{
|
|
12
|
+
s.date = %q{2011-01-03}
|
|
13
13
|
s.email = %q{rogerdpack@gmail.com}
|
|
14
14
|
s.executables = ["sensible-cinema", "sensible-cinema-cli"]
|
|
15
15
|
s.extensions = ["ext/mkrf_conf.rb"]
|
data/spec/notes
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
$ to fix mplayer out of sync audio:
|
|
2
|
+
$ ffmpeg -i HP_AND_THE_CHAMBER_OF_SECRETS_edited_version.fulli_unedited.tmp.mpg -target ntsc-dvd -t 1600 yo.mpg
|
|
3
|
+
seemed to be as good as adding a harddup via mplayer. except...umm...VLC can play it right so why can't mplayer? Hopefully all doesn't matter [?]
|
|
4
|
+
|
|
5
|
+
ffmpeg "copy copy" on HP fulli seemed to not have audio when that was replayed via mplayer.
|
|
6
|
+
|
|
1
7
|
monsters inc. overlaps at 25 minutes, 50'ish, 70, "when they land" and there's like 30 'select scenes' (chapters) in that time frame...
|
|
2
8
|
|
|
3
9
|
bob "they will come" has no mplayer overlap (45 minutes long)
|
|
@@ -24,7 +24,7 @@ module SensibleSwing
|
|
|
24
24
|
describe MainWindow do
|
|
25
25
|
|
|
26
26
|
it "should be able to start up" do
|
|
27
|
-
MainWindow.new.dispose#
|
|
27
|
+
MainWindow.new.dispose# doesn't crash :)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
it "should auto-select a EDL if it matches a DVD's title" do
|
|
@@ -55,6 +55,7 @@ module SensibleSwing
|
|
|
55
55
|
|
|
56
56
|
it "should warn if you don't have enough disk space" do
|
|
57
57
|
@subject.get_freespace('.').should be > 0
|
|
58
|
+
@subject.get_freespace("c:\\nonexistent").should be > 0
|
|
58
59
|
@subject.stub!(:get_freespace) {
|
|
59
60
|
0
|
|
60
61
|
}
|
|
@@ -133,7 +134,7 @@ module SensibleSwing
|
|
|
133
134
|
}
|
|
134
135
|
|
|
135
136
|
@subject.stub!(:system_non_blocking) { |command|
|
|
136
|
-
@
|
|
137
|
+
@system_non_blocking_command = command
|
|
137
138
|
Thread.new {} # fake out the return...
|
|
138
139
|
}
|
|
139
140
|
@subject.stub!(:open_file_to_edit_it) {}
|
|
@@ -201,8 +202,8 @@ module SensibleSwing
|
|
|
201
202
|
join_background_thread
|
|
202
203
|
@args[-2].should == 1
|
|
203
204
|
@args[-3].should == "01:00"
|
|
204
|
-
@
|
|
205
|
-
@
|
|
205
|
+
@system_non_blocking_command.should match /smplayer/
|
|
206
|
+
@system_non_blocking_command.should_not match /fulli/
|
|
206
207
|
end
|
|
207
208
|
|
|
208
209
|
def prompt_for_start_and_end_times
|
|
@@ -210,7 +211,7 @@ module SensibleSwing
|
|
|
210
211
|
join_background_thread
|
|
211
212
|
@args[-2].should == 1
|
|
212
213
|
@args[-3].should == "01:00"
|
|
213
|
-
@
|
|
214
|
+
@system_non_blocking_command.should match /smplayer/
|
|
214
215
|
end
|
|
215
216
|
|
|
216
217
|
it "should prompt for start and end times" do
|
|
@@ -227,11 +228,18 @@ module SensibleSwing
|
|
|
227
228
|
@subject.stub!(:get_user_input).and_return('06:00', '07:00')
|
|
228
229
|
@subject.unstub!(:get_mencoder_commands)
|
|
229
230
|
click_button(:@preview_section_unedited)
|
|
230
|
-
join_background_thread
|
|
231
|
+
join_background_thread # scary timing spec
|
|
231
232
|
temp_file = temp_dir + '/vlc.temp.bat'
|
|
232
233
|
File.read(temp_file).should include("59.99")
|
|
233
234
|
end
|
|
234
235
|
|
|
236
|
+
it "should call something for fast preview" do
|
|
237
|
+
click_button(:@fast_preview)
|
|
238
|
+
# pending ... @system_non_blocking_command.should =~ /ffmpeg.*ntsc-dvd/
|
|
239
|
+
join_background_thread
|
|
240
|
+
@system_blocking_command.should =~ /mplayer.*fast/ # pending, smplayer
|
|
241
|
+
end
|
|
242
|
+
|
|
235
243
|
it "should be able to rerun the latest start and end times with the rerun button" do
|
|
236
244
|
prompt_for_start_and_end_times
|
|
237
245
|
old_args = @args
|
|
@@ -239,7 +247,7 @@ module SensibleSwing
|
|
|
239
247
|
@args = nil
|
|
240
248
|
click_button(:@rerun_preview).join
|
|
241
249
|
@args.should == old_args
|
|
242
|
-
@
|
|
250
|
+
@system_non_blocking_command.should match(/smplayer/)
|
|
243
251
|
end
|
|
244
252
|
|
|
245
253
|
it "should not die if you pass it the same start and end time frames--graceful acceptance" do
|
|
@@ -272,7 +280,7 @@ module SensibleSwing
|
|
|
272
280
|
it "if the .done files exists, watch unedited should call smplayer ja" do
|
|
273
281
|
FileUtils.touch "abc.fulli_unedited.tmp.mpg.done"
|
|
274
282
|
@subject.instance_variable_get(:@watch_unedited).simulate_click
|
|
275
|
-
@
|
|
283
|
+
@system_non_blocking_command.should == "smplayer abc.fulli_unedited.tmp.mpg"
|
|
276
284
|
FileUtils.rm "abc.fulli_unedited.tmp.mpg.done"
|
|
277
285
|
end
|
|
278
286
|
|
|
@@ -392,7 +400,7 @@ module SensibleSwing
|
|
|
392
400
|
it "should not show the normal buttons in create mode" do
|
|
393
401
|
MainWindow.new.buttons.length.should == 3 # exit button, two normal buttons
|
|
394
402
|
ARGV << "--create-mode"
|
|
395
|
-
MainWindow.new.buttons.length.should ==
|
|
403
|
+
MainWindow.new.buttons.length.should == 10
|
|
396
404
|
ARGV.pop # test cleanup--why not :)
|
|
397
405
|
end
|
|
398
406
|
|
|
@@ -1,46 +1,53 @@
|
|
|
1
|
-
# comments can go after a # on any line.
|
|
1
|
+
# comments can go after a # on any line.
|
|
2
2
|
"mutes" => [
|
|
3
3
|
"14:53.7", "14:55", "greetings sled g..",
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
4
|
+
"15:42", "15:42.8", "sled g...",
|
|
5
|
+
"18:59", "19:00", "sled g..",
|
|
6
|
+
"21:58", "22:07", "butt",
|
|
7
|
+
"22:34", "22:34.6", "He..",
|
|
8
|
+
"23:56.5", "23:56.8", "he..",
|
|
9
|
+
"29:44.8", "29:44.5", "G.. name",
|
|
10
|
+
"34:08.5", "34:09", "L...",
|
|
11
|
+
"40:55", "40:56", "g",
|
|
12
|
+
"47:24.4", "47:25", "A. holes",
|
|
13
|
+
"48:40", "48:41.1", "G",
|
|
14
|
+
"59:51", "59:52", "D",
|
|
15
|
+
"1:02:03", "1:02:04", "butt whipped",
|
|
16
|
+
"1:02:36.2", "1:02:37", "butt whipping",
|
|
17
|
+
"1:11:35", "1:11:35.4", "h..",
|
|
18
|
+
"1:12:43", "1:12:44", "G",
|
|
19
|
+
"1:22:01.5", "1:22:02", "d...",
|
|
20
|
+
"1:22:53", "1:22:54", "dingaling",
|
|
21
|
+
"1:23:03", "1:23:03.3", "h.",
|
|
22
|
+
"1:23:48", "1:23:49", "G.",
|
|
23
|
+
"1:01:40.2", "1:01:41", "sled g... does it again"
|
|
7
24
|
],
|
|
8
25
|
|
|
9
|
-
# 57:20 'ish something father?
|
|
10
26
|
|
|
11
27
|
"blank_outs" => [
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
28
|
+
"15:20", "15:30",
|
|
29
|
+
"38:40.4", "38:43.6", "j. c. what h..",
|
|
30
|
+
"58:40", "58:41", "bad arsenic, but I dislike lip reading.",
|
|
31
|
+
"59:08", "59:09", " bad arsenic",
|
|
32
|
+
"59:15", "59:49", "bad arsenic ...",
|
|
33
|
+
"1:14:30.5", "1:14:47", "psalm",
|
|
34
|
+
"1:16:57.0" , "1:16:57.5", "bad a..",
|
|
19
35
|
],
|
|
20
36
|
|
|
37
|
+
|
|
21
38
|
"disk_unique_id" => "5a0a43f52e5d5e705fdfaa831b38409b",
|
|
22
39
|
"dvd_title_track" => "1",
|
|
23
|
-
"other stuff" => "fighting (punching) in a bar 1:00:30 'ish could use some editing"
|
|
24
|
-
# 1:01:42 "shutup snaka"
|
|
25
40
|
|
|
26
41
|
|
|
27
|
-
#
|
|
28
|
-
|
|
29
|
-
# 22:00 butt
|
|
42
|
+
# not edited out, paranoid list
|
|
43
|
+
|
|
30
44
|
# 32:20 shutup
|
|
31
|
-
# 38:30 40:40 g..
|
|
32
45
|
# 1:16 too early
|
|
33
46
|
# 1:22:30 den???
|
|
34
|
-
# 1:21:50 .. heck
|
|
35
|
-
# 1:20:50 dang swiss
|
|
36
47
|
# 1:13:40 paranoid
|
|
37
|
-
# 1:11:40 gah
|
|
38
|
-
# 47:15 a-h
|
|
39
|
-
# 57:20 ... father
|
|
40
48
|
# 1:07:45 hook
|
|
41
|
-
# cut beating (paranoid)
|
|
42
|
-
# 34:00
|
|
43
49
|
# 3:00 backside
|
|
44
50
|
# 6:57 thigh, hug
|
|
45
|
-
#
|
|
46
|
-
#
|
|
51
|
+
# 1:00:00 fighting in the bar
|
|
52
|
+
# 1:01:42 "shutup snaka"
|
|
53
|
+
# 15:22 irv beats his radio with pool cue should go...
|
metadata
CHANGED
|
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
|
4
4
|
prerelease: false
|
|
5
5
|
segments:
|
|
6
6
|
- 0
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
version: 0.
|
|
7
|
+
- 20
|
|
8
|
+
- 0
|
|
9
|
+
version: 0.20.0
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- Roger Pack
|
|
@@ -14,7 +14,7 @@ autorequire:
|
|
|
14
14
|
bindir: bin
|
|
15
15
|
cert_chain: []
|
|
16
16
|
|
|
17
|
-
date:
|
|
17
|
+
date: 2011-01-03 00:00:00 -07:00
|
|
18
18
|
default_executable:
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|