sensible-cinema 0.16.3 → 0.16.5
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/LICENSE +55 -53
- data/README +9 -12
- data/TODO +16 -9
- data/VERSION +1 -1
- data/bin/sensible-cinema +72 -26
- data/how_to_create +35 -0
- data/lib/drive_info.rb +1 -1
- data/lib/mencoder_wrapper.rb +1 -1
- data/lib/swing_helpers.rb +9 -2
- data/sensible-cinema.gemspec +3 -1
- data/spec/mencoder_wrapper.spec.rb +1 -0
- data/zamples/edit_decision_lists/dvds/bob the builder pets in a pickle.txt +9 -0
- data/zamples/edit_decision_lists/dvds/happiest baby on the block.txt +1 -1
- data/zamples/edit_decision_lists/example_edit_decision_list.txt +4 -10
- metadata +4 -2
data/LICENSE
CHANGED
|
@@ -1,53 +1,55 @@
|
|
|
1
|
-
All files
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
In
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
1
|
+
All files (c) Roger Pack 2010
|
|
2
|
+
All files are released under the GPLv3 license [1] unless otherwise specified. Ping me if you want/need this changed.
|
|
3
|
+
|
|
4
|
+
May contain some 3rd party libraries/executables under their own (separate, open source) licenses.
|
|
5
|
+
|
|
6
|
+
Is this legal?
|
|
7
|
+
|
|
8
|
+
Unclear. In general ripping personal DVD's is fine.
|
|
9
|
+
It is controversial to use open source software to play/rip DVD's.
|
|
10
|
+
There are a few conflicting views.
|
|
11
|
+
Sensible-cinema doesn't actually do any decryption or decoding, nor has any knowledge of it,
|
|
12
|
+
but calls out to another separate program to rip. It doesn't even have knowledge
|
|
13
|
+
as to whether it is ripping something encrypted or not. We don't distribute sensible-cinema with
|
|
14
|
+
that program, either.
|
|
15
|
+
You can ask the authors of that program if it is legal. Apparently
|
|
16
|
+
libdvdcss that it uses has never been challenged in court, and uses a slightly different algorithm
|
|
17
|
+
than those that have.
|
|
18
|
+
Note also that fair use does allow one to "record" things (especially things that they own)
|
|
19
|
+
for personal use/backup.
|
|
20
|
+
Using sensible-cinema is probably not any more unethical than ripping your DVD collection to your hard
|
|
21
|
+
drive so you can keep your DVD's all in one place. It's about the same as ripping a DVD, editing
|
|
22
|
+
it in Windows Movie Maker to take out the bad scenes, then watching that.
|
|
23
|
+
Also note that if you watch an edited DVD, your are using a DVD player that conforms
|
|
24
|
+
with DMCA specifications, so that might have some influence.
|
|
25
|
+
|
|
26
|
+
In general, you are responsible for your actions and use of this program.
|
|
27
|
+
It is possible that the authors of sensible-cinema are not cupable of anything
|
|
28
|
+
regarding its use themselves, since they re-distribute no edited media,
|
|
29
|
+
nor distribute cracking codes. In general, check your country's rules first.
|
|
30
|
+
|
|
31
|
+
In terms of copyright, it could be legal under the The Family Home Movie Act of 2005,
|
|
32
|
+
at least in the United States, when viewed using the "playlist" option (v 0.10'ish, then later removed).
|
|
33
|
+
In general, if I have the original DVD sitting next to my TV, I don't feel bad about watching
|
|
34
|
+
its edited copy at the same time, but please consult a laywer first if you have any concerns.
|
|
35
|
+
|
|
36
|
+
Do not redistribute copied commercial DVD's. We have learned from clean flicks that
|
|
37
|
+
redistributing edited commercial DVD's is illegal in the US. We hope that sensible-cinema
|
|
38
|
+
is more legal, since you can get the DVD's from wherever you want, and it doesn't change their
|
|
39
|
+
structure at all. Please don't redistribute.
|
|
40
|
+
|
|
41
|
+
DO NOT MAKE ILLEGAL COPIES.
|
|
42
|
+
|
|
43
|
+
Note that this software might well be legal in the EU,
|
|
44
|
+
as it is only software and therefore thus possibly not subject to patents (see "What about patent licenses?" in [2]).
|
|
45
|
+
If it's not legal in your country, don't use it!
|
|
46
|
+
|
|
47
|
+
A more ancient history of various related thoughts was described here:
|
|
48
|
+
http://betterlogic.com/roger/?p=2618
|
|
49
|
+
|
|
50
|
+
Also note that several ideas have been released in the code that are disabled in the final release. Please see the blog
|
|
51
|
+
for release notes http://betterlogic.com/roger, as well as http://ruby-forum.com (ruby talk ML there), and rubygems.org
|
|
52
|
+
which lists the various releases, and github.com/rdp/sensible-cinema which lists commits and changes and releases.
|
|
53
|
+
|
|
54
|
+
[1] http://www.gnu.org/licenses/gpl.html, also gplv3 file.
|
|
55
|
+
[2] http://www.videolan.org/support/faq.html
|
data/README
CHANGED
|
@@ -15,11 +15,6 @@ To program sensible-cinema, you create an edit decision list it can use.
|
|
|
15
15
|
|
|
16
16
|
An Edit List looks something like this example:
|
|
17
17
|
|
|
18
|
-
mutes:
|
|
19
|
-
"01:00:00" : "01:01:02.5" # mute from exactly one hour to one hour, one minute, two seconds and a half will be muted.
|
|
20
|
-
blank_outs:
|
|
21
|
-
"01:00:00" : "01:01:02.5" # also blank out (overlay with blank window) the same.
|
|
22
|
-
|
|
23
18
|
Here's one with more detail
|
|
24
19
|
|
|
25
20
|
https://github.com/rdp/sensible-cinema/blob/master/zamples/edit_decision_lists/example_edit_decision_list.txt
|
|
@@ -33,10 +28,10 @@ Once you're done then you can contribute your scene descriptions file if desired
|
|
|
33
28
|
|
|
34
29
|
== FAQ ==
|
|
35
30
|
|
|
36
|
-
Q. How do I watch these on my
|
|
37
|
-
A. You can burn a DVD with it. First create
|
|
38
|
-
Dvd Flick
|
|
39
|
-
For OS X iDVD might work well.
|
|
31
|
+
Q. How do I watch these on my TV?
|
|
32
|
+
A. You can burn a DVD with it. First create it on your hard drive. Then use
|
|
33
|
+
Dvd Flick ()a good one for windows) (here's a screencast of using it within http://rogerdpack.t28.net/sensible-cinema)
|
|
34
|
+
For OS X : iDVD might work well.
|
|
40
35
|
You might be able to "beam" it to your PS3 and play it from there, using PS3 media server (or windows media player), or put it on a flash drive and play it from that.
|
|
41
36
|
|
|
42
37
|
== Caveats ==
|
|
@@ -48,7 +43,8 @@ You can employ somebody to do it, or do it yourself, then submit it.
|
|
|
48
43
|
|
|
49
44
|
== License ==
|
|
50
45
|
|
|
51
|
-
See the LICENSE file for licensing, usage terms (basically gplv3).
|
|
46
|
+
See the LICENSE file for licensing, usage terms (basically gplv3 for all the source).
|
|
47
|
+
(c) 2010 Roger Pack
|
|
52
48
|
|
|
53
49
|
== Related ==
|
|
54
50
|
|
|
@@ -80,6 +76,7 @@ http://superuser.com/questions/85278/how-can-i-cut-scenes-out-of-a-dvd
|
|
|
80
76
|
|
|
81
77
|
== Feedback ==
|
|
82
78
|
|
|
83
|
-
Feedback, including feature requests, welcome.
|
|
79
|
+
Feedback, including feature requests, comments, welcome.
|
|
84
80
|
|
|
85
|
-
http://github.com/rdp/sensible-cinema (message me or create an issue for feedback/any requests/bugs)
|
|
81
|
+
http://github.com/rdp/sensible-cinema (message me or create an issue for feedback/any requests/bugs)
|
|
82
|
+
rogerdpack@gmail.com
|
data/TODO
CHANGED
|
@@ -1,27 +1,33 @@
|
|
|
1
1
|
== medium ==
|
|
2
2
|
|
|
3
3
|
== probably next up+low prio ==
|
|
4
|
-
|
|
5
|
-
compare computer DVD playback with physical player...
|
|
6
|
-
release .zip
|
|
7
|
-
|
|
4
|
+
|
|
8
5
|
== slightly lower than that ==
|
|
9
6
|
|
|
10
|
-
make sure no subtitles on national treasure...
|
|
11
7
|
partner for filters (Jon, Karlie if interested...give beta)
|
|
12
8
|
lotsa filters somehow
|
|
9
|
+
my dvd's
|
|
13
10
|
beta release/rinse and repeat with various ppl (once it's releasable...)
|
|
14
11
|
can generate mplayer EDL's and play them...hmm...smplayer them?
|
|
15
12
|
update license too...
|
|
16
13
|
a real'ish website
|
|
17
|
-
"run create mode" button (?)
|
|
18
14
|
license the first time they run it (gplv3)
|
|
15
|
+
checkbox for other license or something?
|
|
19
16
|
bring that window to the top! (before done dialog...)
|
|
17
|
+
assert that at least one drive has a DVD in it...
|
|
18
|
+
compare computer DVD playback with physical player...
|
|
19
|
+
just run previews in smplayer :P
|
|
20
|
+
ffmpeg easier
|
|
20
21
|
|
|
21
22
|
== DVD backlog (unordered, some very low prio) ==
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
smaller .zip
|
|
25
|
+
bundle 7z [?]
|
|
26
|
+
remove note about it
|
|
27
|
+
using, burning, creating "howto's"
|
|
28
|
+
better
|
|
29
|
+
usability test?
|
|
30
|
+
|
|
25
31
|
using+burning screencast
|
|
26
32
|
editing screencast
|
|
27
33
|
instructions on how to do their own (private) EDL or do one and submit it (public), or email their friends :P
|
|
@@ -29,8 +35,9 @@
|
|
|
29
35
|
add a way to get the label rather easily...
|
|
30
36
|
add an option "just save full disk (unedited) to hard drive..."
|
|
31
37
|
note to people: can edit those to your liking
|
|
32
|
-
a real DVD player...plz? smplayer chokes on bob's big plan...chokes in a bad way...
|
|
33
38
|
|
|
39
|
+
DRY up dependency installation code
|
|
40
|
+
install them to cache2 or something...so I can cleanup the deploy code...
|
|
34
41
|
advertise urug, ruby flow :)
|
|
35
42
|
"Re-run most recent" disabled when there isn't one [?]
|
|
36
43
|
unit test the GUI
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.16.
|
|
1
|
+
0.16.5
|
data/bin/sensible-cinema
CHANGED
|
@@ -24,13 +24,12 @@ module SensibleSwing
|
|
|
24
24
|
setDefaultCloseOperation JFrame::EXIT_ON_CLOSE
|
|
25
25
|
panel = JPanel.new
|
|
26
26
|
panel.set_layout nil
|
|
27
|
-
setSize 350,400
|
|
28
27
|
add panel # why can't I just slap these down?
|
|
29
28
|
|
|
30
29
|
jlabel = JLabel.new 'Welcome to Sensible Cinema!'
|
|
31
30
|
happy = Font.new("Tahoma", Font::PLAIN, 11)
|
|
32
31
|
jlabel.setFont(happy)
|
|
33
|
-
jlabel.set_bounds(44,44,
|
|
32
|
+
jlabel.set_bounds(44,44,160,14)
|
|
34
33
|
panel.add jlabel
|
|
35
34
|
|
|
36
35
|
button_width = 270
|
|
@@ -42,7 +41,7 @@ module SensibleSwing
|
|
|
42
41
|
c.set_bounds(44,120,button_width,23)
|
|
43
42
|
panel.add c
|
|
44
43
|
|
|
45
|
-
b = JButton.new("Watch
|
|
44
|
+
b = JButton.new("Watch DVD from hard drive unedited") # LODO watch in realtime option--then rippers and watchers can combine
|
|
46
45
|
b.on_clicked {
|
|
47
46
|
ENV['PATH'] = ENV['PATH'] + ";d:\\Program Files\\SMPlayer;c:\\Program Files\\SMPlayer"
|
|
48
47
|
path = RubyWhich.new.which('smplayer')
|
|
@@ -50,13 +49,20 @@ module SensibleSwing
|
|
|
50
49
|
JOptionPane.showMessageDialog(self, "It appears that you need to install a dependency: SMPlayer.\n
|
|
51
50
|
Click ok to be directed to its download website.
|
|
52
51
|
Also note that if it ever hangs, kill the process, and then use VLC instead
|
|
53
|
-
(though VLC only has approximate timings).", "Lacking dependency", JOptionPane::ERROR_MESSAGE)
|
|
52
|
+
(though VLC only has approximate timings).", "Lacking dependency", JOptionPane::ERROR_MESSAGE)
|
|
54
53
|
system("start http://smplayer.sourceforge.net/downloads.php")
|
|
55
54
|
else
|
|
56
|
-
wrote_to_here_fulli = do_copy_dvd_to_hard_drive false, true
|
|
55
|
+
success_no_run, wrote_to_here_fulli = do_copy_dvd_to_hard_drive false, true
|
|
57
56
|
command = "smplayer #{wrote_to_here_fulli}"
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
on_success = proc {
|
|
58
|
+
puts command
|
|
59
|
+
Thread.new { system(command) }
|
|
60
|
+
}
|
|
61
|
+
if success_no_run
|
|
62
|
+
on_success.call
|
|
63
|
+
else
|
|
64
|
+
@after_success_once = on_success # shenanigans to be able to let this thread run...
|
|
65
|
+
end
|
|
60
66
|
end
|
|
61
67
|
}
|
|
62
68
|
b.set_bounds(44,150,button_width,23)
|
|
@@ -75,8 +81,8 @@ module SensibleSwing
|
|
|
75
81
|
dialog = FileDialog.new(self, "Pick file to edit")
|
|
76
82
|
dialog.set_directory EDL_DIR
|
|
77
83
|
filename = dialog.go
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
open_file_to_edit_it filename if filename
|
|
85
|
+
}
|
|
80
86
|
f.set_bounds(44,260,button_width,23)
|
|
81
87
|
panel.add f if ARGV.index("--create-mode")
|
|
82
88
|
|
|
@@ -98,17 +104,44 @@ module SensibleSwing
|
|
|
98
104
|
reload.set_bounds(44,290,button_width,20)
|
|
99
105
|
panel.add reload if ARGV.index("--create-mode")
|
|
100
106
|
|
|
107
|
+
@progress_bar = JProgressBar.new(0, 100)
|
|
108
|
+
@progress_bar.set_bounds(44,280,button_width,23)
|
|
109
|
+
@progress_bar.visible = false
|
|
110
|
+
panel.add @progress_bar
|
|
111
|
+
|
|
112
|
+
g = JButton.new("Create New Edit List for current DVD")
|
|
113
|
+
g.on_clicked do
|
|
114
|
+
drive, volume, md5 = choose_dvd_drive
|
|
115
|
+
input = <<-EOL
|
|
116
|
+
# comments can go after a # on any line.
|
|
117
|
+
"mutes" => [
|
|
118
|
+
#"00:00:01", "00:00:02",
|
|
119
|
+
],
|
|
120
|
+
|
|
121
|
+
"blank_outs" => [
|
|
122
|
+
#"01:01:00" , "01:02:00"
|
|
123
|
+
],
|
|
124
|
+
"disk_unique_id" => "#{md5}",
|
|
125
|
+
"title" => "#{volume}",
|
|
126
|
+
EOL
|
|
127
|
+
puts input
|
|
128
|
+
filename = volume.gsub(' ', '_') + '.txt'
|
|
129
|
+
File.write(filename, input) unless File.exist?(filename) # lodo let them choose name (?)
|
|
130
|
+
open_file_to_edit_it filename
|
|
131
|
+
|
|
132
|
+
end
|
|
133
|
+
g.set_bounds(44,320,button_width,20)
|
|
134
|
+
panel.add g if ARGV.index("--create-mode")
|
|
135
|
+
|
|
101
136
|
@exit = JButton.new("Exit").on_clicked {
|
|
102
137
|
self.close
|
|
103
138
|
}
|
|
104
|
-
@exit.set_bounds(44,
|
|
139
|
+
@exit.set_bounds(44,350,button_width,23)
|
|
105
140
|
panel.add @exit
|
|
141
|
+
|
|
142
|
+
setSize 350,430
|
|
106
143
|
|
|
107
|
-
@
|
|
108
|
-
@progress_bar.set_bounds(44,280,button_width,23)
|
|
109
|
-
@progress_bar.visible = false
|
|
110
|
-
panel.add @progress_bar
|
|
111
|
-
@buttons = [b,c,d,e,f,reload,@exit]
|
|
144
|
+
@buttons = [b,c,d,e,reload,@exit]
|
|
112
145
|
check_for_dependencies
|
|
113
146
|
end
|
|
114
147
|
|
|
@@ -153,7 +186,11 @@ module SensibleSwing
|
|
|
153
186
|
end
|
|
154
187
|
end
|
|
155
188
|
end
|
|
156
|
-
|
|
189
|
+
|
|
190
|
+
def open_file_to_edit_it filename
|
|
191
|
+
Thread.new { system("notepad \"#{filename}\"")} # blocks otherwise...
|
|
192
|
+
end
|
|
193
|
+
|
|
157
194
|
def single_edit_list_matches_dvd md5
|
|
158
195
|
return unless md5 # ignore nil searches, where it wasn't set in the .txt file
|
|
159
196
|
matching = Dir[EDL_DIR + '/*.txt'].select{|file|
|
|
@@ -214,16 +251,19 @@ module SensibleSwing
|
|
|
214
251
|
# how does save_to map to fulli?
|
|
215
252
|
fulli = save_to + ".fulli.tmp.avi"
|
|
216
253
|
if want_full_list
|
|
254
|
+
# make it create a dummy response file for us :)
|
|
255
|
+
start_time = "00:00"
|
|
256
|
+
end_time = "00:01"
|
|
217
257
|
if File.exist? fulli + ".done"
|
|
218
258
|
# just return the full path early...
|
|
219
|
-
return fulli
|
|
259
|
+
return [true, fulli]
|
|
220
260
|
end
|
|
221
261
|
end
|
|
222
262
|
generate_and_run_bat_file save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track
|
|
223
|
-
fulli
|
|
224
|
-
|
|
263
|
+
[false, fulli]
|
|
264
|
+
end
|
|
225
265
|
|
|
226
|
-
|
|
266
|
+
def generate_and_run_bat_file save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track
|
|
227
267
|
Storage['last_params'] = [save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track]
|
|
228
268
|
bat_file = MencoderWrapper.get_bat_commands descriptors, drive, save_to, start_time, end_time, dvd_title_track
|
|
229
269
|
temp_dir = Dir.tmpdir
|
|
@@ -265,12 +305,18 @@ module SensibleSwing
|
|
|
265
305
|
}
|
|
266
306
|
@progress_bar.visible=false
|
|
267
307
|
@buttons.each{|b| b.set_enabled true}
|
|
268
|
-
if success
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
308
|
+
if true#success
|
|
309
|
+
if @after_success_once
|
|
310
|
+
procy = @after_success_once
|
|
311
|
+
@after_success_once = nil
|
|
312
|
+
procy.call
|
|
313
|
+
else
|
|
314
|
+
saved_to = save_to + '.avi' # LODO pass this out?
|
|
315
|
+
JOptionPane.showMessageDialog(nil, " Done--you may now watch file #{saved_to} in SMPlayer or VLC player", "Done!", JOptionPane::INFORMATION_MESSAGE)
|
|
316
|
+
show_file = "explorer /e,/select,\"#{File.expand_path(saved_to).to_filename}\""
|
|
317
|
+
system show_file
|
|
318
|
+
#self.close # ?
|
|
319
|
+
end
|
|
274
320
|
else
|
|
275
321
|
JOptionPane.showMessageDialog(nil, " Failed--please examine screen output and report back!", "Failed", JOptionPane::ERROR_MESSAGE)
|
|
276
322
|
end
|
data/how_to_create
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
first play it in VLC, discover which title is the main title:
|
|
2
|
+
|
|
3
|
+
now open Sensible cinema in create mode
|
|
4
|
+
|
|
5
|
+
click "open ripped version of DVD unedited", right click, create new file, name it something.txt, right click, "open", and then select it.
|
|
6
|
+
|
|
7
|
+
it will rip that fella to the hard drive (for the save to filename, use the default).
|
|
8
|
+
It will take quite awhile, but will get everything set up for quick editing after that.
|
|
9
|
+
|
|
10
|
+
In the meantime, make your file look like this:
|
|
11
|
+
|
|
12
|
+
https://github.com/rdp/sensible-cinema/blob/master/zamples/edit_decision_lists/example_edit_decision_list.txt
|
|
13
|
+
|
|
14
|
+
After it finishes ripping it, it will start you watching it in mplayer, which should give you a reasonable view of good timestamps.
|
|
15
|
+
|
|
16
|
+
Add timestamps to your file as necessary, then (exit smplayer and) click "Preview edited section of current DVD" (use the default filename always),
|
|
17
|
+
give it a range "around" the edit you just added, then it will give you an .avi file with just that segment.
|
|
18
|
+
Watch it (in VLC or smplayer), and see if your edit worked. If it didn't, edit it, hit "re-run most recent preview"
|
|
19
|
+
If it did, then click "Open ripped version of DVD" again, and continue playing from where you were before.
|
|
20
|
+
|
|
21
|
+
When you're done finally, then click "Create edited copy of DVD on your hard drive".
|
|
22
|
+
It will re-rip and do it all (will take forever), but will give you your final product.
|
|
23
|
+
Alternatively, you could get a final product by clicking "Preview edited section of current DVD" and putting in a start timestamp of
|
|
24
|
+
00:00 and an end timestamp of 9999 or what not. Same deal, but will take you less time.
|
|
25
|
+
|
|
26
|
+
Also after you're done, you can delete any left over files that are still there.
|
|
27
|
+
|
|
28
|
+
Also after you're done, you can submit it back to the project by emailing me with an attachment: rogerdpack@gmail.com
|
|
29
|
+
|
|
30
|
+
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
|
+
|
|
32
|
+
A few pointers:
|
|
33
|
+
You can just watch the DVD (using any DVD player), and get timestamps that way, before starting this.
|
|
34
|
+
You can watch the DVD using VLC Player, which has a "fast forward" button, just recognize that VLC's timestamps are slightly off,
|
|
35
|
+
so they'll only be approximate, but it might still help.
|
data/lib/drive_info.rb
CHANGED
data/lib/mencoder_wrapper.rb
CHANGED
|
@@ -13,7 +13,7 @@ class MencoderWrapper
|
|
|
13
13
|
if File.exist?(@big_temp) && File.exist?(@big_temp + '.done')
|
|
14
14
|
''
|
|
15
15
|
else
|
|
16
|
-
"call mencoder dvd://#{@dvd_title_track} -oac copy -lavcopts keyint=1 -ovc lavc -o #{@big_temp} -dvd-device #{this_drive} && echo got_file > #{@big_temp}.done\n"
|
|
16
|
+
"call mencoder dvd://#{@dvd_title_track} -sid 1000 -oac copy -lavcopts keyint=1 -ovc lavc -o #{@big_temp} -dvd-device #{this_drive} && echo got_file > #{@big_temp}.done\n"
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
|
data/lib/swing_helpers.rb
CHANGED
|
@@ -8,7 +8,8 @@ module SensibleSwing
|
|
|
8
8
|
include_class java.awt.event.ActionListener
|
|
9
9
|
JFile = java.io.File
|
|
10
10
|
include_class java.awt.FileDialog
|
|
11
|
-
|
|
11
|
+
include_class java.lang.System
|
|
12
|
+
|
|
12
13
|
class JButton
|
|
13
14
|
def initialize *args
|
|
14
15
|
super *args
|
|
@@ -18,7 +19,13 @@ module SensibleSwing
|
|
|
18
19
|
def on_clicked &block
|
|
19
20
|
raise unless block
|
|
20
21
|
add_action_listener do |e|
|
|
21
|
-
|
|
22
|
+
begin
|
|
23
|
+
block.call
|
|
24
|
+
rescue Exception => e
|
|
25
|
+
puts 'got fatal exception', e
|
|
26
|
+
puts e.backtrace.join("\n")
|
|
27
|
+
System.exit(1) # LODO no exit
|
|
28
|
+
end
|
|
22
29
|
end
|
|
23
30
|
self
|
|
24
31
|
end
|
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.16.
|
|
8
|
+
s.version = "0.16.5"
|
|
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"]
|
|
@@ -31,6 +31,7 @@ Gem::Specification.new do |s|
|
|
|
31
31
|
"experimental_readme.txt",
|
|
32
32
|
"ext/mkrf_conf.rb",
|
|
33
33
|
"gplv3.txt",
|
|
34
|
+
"how_to_create",
|
|
34
35
|
"lib/add_any_bundled_gems_to_load_path.rb",
|
|
35
36
|
"lib/blanker.rb",
|
|
36
37
|
"lib/drive_info.rb",
|
|
@@ -120,6 +121,7 @@ Gem::Specification.new do |s|
|
|
|
120
121
|
"vendor/gocr049.exe",
|
|
121
122
|
"vendor/unzip.exe",
|
|
122
123
|
"zamples/edit_decision_lists/category descriptions.txt",
|
|
124
|
+
"zamples/edit_decision_lists/dvds/bob the builder pets in a pickle.txt",
|
|
123
125
|
"zamples/edit_decision_lists/dvds/bobs_big_plan.txt",
|
|
124
126
|
"zamples/edit_decision_lists/dvds/happiest baby on the block.txt",
|
|
125
127
|
"zamples/edit_decision_lists/dvds/old_and_inaccurate/White Christmas.txt",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"mutes" => [
|
|
2
2
|
"6:18" , "6:19.1", "religious reference", "religious reference", "2"
|
|
3
3
|
],
|
|
4
|
+
"disk_unique_id" => "19d121ae8dc40cdd70b57ab7e8c74f76",
|
|
4
5
|
"title" => "Happiest baby on the block",
|
|
5
|
-
"dvd_drive_label" => "HAPPIEST_BABY_ON_THE_BLOCK",
|
|
6
6
|
"source" => "DVD",
|
|
7
7
|
"dvd_title_track" => 1,
|
|
8
8
|
"other notes" => "has a couple (modest) shots of nursing moms which aren't cut."
|
|
@@ -18,29 +18,23 @@
|
|
|
18
18
|
# note: items can be out of chronological order, that's ok
|
|
19
19
|
|
|
20
20
|
# you can also have blank outs
|
|
21
|
-
# and you can also refer to a category, instead of having to write out the real word.
|
|
22
21
|
# example:
|
|
23
22
|
|
|
24
23
|
"blank_outs" => [
|
|
25
24
|
# this first one blanks (by overlaying *over* the video, a black window)
|
|
26
25
|
# from one hour one minute to one hour two minutes, like:
|
|
27
|
-
"01:01:00" , "01:02:00", "nudity", "
|
|
28
|
-
# you can also use decimals, like 3 minutes 3 seconds and a half to 3 minutes 4 seconds and a half (one second blank out):
|
|
26
|
+
"01:01:00" , "01:02:00", "nudity", "Kate Winslet's...",
|
|
27
|
+
# you can also always optionally use decimals, like 3 minutes 3 seconds and a half to 3 minutes 4 seconds and a half (one second blank out):
|
|
29
28
|
"00:03:03.5", "00:03:04.5",
|
|
30
|
-
# if you don't want to be explicit, you can reference a *number*
|
|
31
|
-
# from the category descriptions.yml file, like
|
|
32
|
-
"01:01:00", "01:02:00", "profanity", "bodily function 1",
|
|
33
|
-
# (instead of "01:01:00", "01:02:00", "s***")
|
|
34
29
|
],
|
|
35
30
|
|
|
36
|
-
# (if something's not categorized yet then just write it in your file and I'll add it later, or just notify me)
|
|
37
|
-
|
|
38
31
|
# you can also add other notes, too, like title, source, whatever you want
|
|
39
32
|
# these are basically free form and not used for anything else yet
|
|
40
33
|
"missing_content" => "this doesn't list some mild name calling",
|
|
41
34
|
"title" => "Forever Strong",
|
|
42
35
|
"source" => "Hulu",
|
|
43
36
|
"url" => "http://www.byutv.org/watch/1790-100",
|
|
44
|
-
"whatever_else_you_want" => "this is the old version of the film"
|
|
37
|
+
"whatever_else_you_want" => "this is the old version of the film",
|
|
38
|
+
"disk_unique_id" => "19d121ae8dc40cdd70b57ab7e8c74f76", # for DVD's to be able to differentiate (and auto select) themselves.
|
|
45
39
|
|
|
46
40
|
# NB that you have to put commas just about everywhere. That might help
|
metadata
CHANGED
|
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
|
5
5
|
segments:
|
|
6
6
|
- 0
|
|
7
7
|
- 16
|
|
8
|
-
-
|
|
9
|
-
version: 0.16.
|
|
8
|
+
- 5
|
|
9
|
+
version: 0.16.5
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- Roger Pack
|
|
@@ -169,6 +169,7 @@ files:
|
|
|
169
169
|
- experimental_readme.txt
|
|
170
170
|
- ext/mkrf_conf.rb
|
|
171
171
|
- gplv3.txt
|
|
172
|
+
- how_to_create
|
|
172
173
|
- lib/add_any_bundled_gems_to_load_path.rb
|
|
173
174
|
- lib/blanker.rb
|
|
174
175
|
- lib/drive_info.rb
|
|
@@ -258,6 +259,7 @@ files:
|
|
|
258
259
|
- vendor/gocr049.exe
|
|
259
260
|
- vendor/unzip.exe
|
|
260
261
|
- zamples/edit_decision_lists/category descriptions.txt
|
|
262
|
+
- zamples/edit_decision_lists/dvds/bob the builder pets in a pickle.txt
|
|
261
263
|
- zamples/edit_decision_lists/dvds/bobs_big_plan.txt
|
|
262
264
|
- zamples/edit_decision_lists/dvds/happiest baby on the block.txt
|
|
263
265
|
- zamples/edit_decision_lists/dvds/old_and_inaccurate/White Christmas.txt
|