sensible-cinema 0.20.1 → 0.20.5
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +11 -2
- data/README +16 -13
- data/RUN SENSIBLE CINEMA CLICK HERE.bat +1 -1
- data/Rakefile +7 -3
- data/TODO +26 -10
- data/VERSION +1 -1
- data/bin/{sensible-cinema → sensible-cinema.rb} +17 -11
- data/create or edit sensible cinema delete list files.bat +1 -1
- data/go.bat +1 -1
- data/goc.bat +1 -1
- data/lib/edl_parser.rb +22 -0
- data/lib/mencoder_wrapper.rb +1 -1
- data/lib/overlayer.rb +1 -15
- data/lib/swing_helpers.rb +2 -2
- data/lib/vlc_programmer.rb +1 -2
- data/sensible-cinema.gemspec +4 -4
- data/spec/edl_parser.spec.rb +27 -1
- data/spec/mencoder_wrapper.spec.rb +1 -1
- data/spec/notes +12 -1
- data/spec/overlayer.spec.rb +1 -8
- data/zamples/edit_decision_lists/dvds/COOL_RUNNINGS.txt +10 -10
- data/zamples/edit_decision_lists/dvds/Harry Potter 2.txt +3 -2
- metadata +5 -5
data/ChangeLog
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
== 0.20.3 ==
|
2
|
+
|
3
|
+
Minor aesthetics, also it works now with mplayer EDL mode.
|
4
|
+
|
1
5
|
== 0.20.0 ==
|
2
6
|
|
3
7
|
Add a "fast preview" option which makes editing...faster. Also it incorporates the "arbitrary precision" around settings.
|
@@ -115,7 +119,7 @@ Now it offers you a button to either play it on your computer, using VLC, or rip
|
|
115
119
|
|
116
120
|
== From various previous releases ==
|
117
121
|
It now provides for screen tracking of DVD's, youtube, hulu, and anything else you want to play on VLC, and has
|
118
|
-
automatic detection of CD-Drives for ripping/playing back. It can handle full screen or
|
122
|
+
automatic detection of CD-Drives for ripping/playing back. It can handle full screen or windowed playback.
|
119
123
|
It can rip from user specified "title tracks" now. It has a nice GUI. The GUI can tell you which DVD is in which
|
120
124
|
drive so you know more easily which one to choose.
|
121
125
|
|
@@ -126,4 +130,9 @@ via some console or other player, or can be copied to a disc and played in a DVD
|
|
126
130
|
|
127
131
|
When screen tracking, it uses input to the system (simulated keystrokes) to simulate a user "mute"
|
128
132
|
It overlays the playing screen (movie) with a separate window in order to simulate a "blank out" or
|
129
|
-
"skip this scene" which can be used with or without the mutes, as well.
|
133
|
+
"skip this scene" which can be used with or without the mutes, as well.
|
134
|
+
|
135
|
+
Note that previous releases had this functionality: VLC could "grab" the various sections from a DVD, one at a time, and
|
136
|
+
either play them back in sequence [serially], or save all of them, appending to a single final "file", using either
|
137
|
+
a batch file to accomplish the same, or an XSPF playlist that designated the start and stop times and fed that
|
138
|
+
into the player.
|
data/README
CHANGED
@@ -1,15 +1,18 @@
|
|
1
|
-
Sensible-cinema (also known to us as "paranoid cinema" [inside joke ha ha]
|
2
|
-
programmed delete lists (
|
1
|
+
Sensible-cinema (also known to us as "paranoid cinema" [our own inside joke ha ha]) is a program that allows you to apply
|
2
|
+
pre-programmed delete lists (e.g. Edit Decision Lists [2]) to DVD's you already own.
|
3
3
|
|
4
|
-
I.e. you can edit a DVD to "mute out" or skip certain scenes.
|
4
|
+
I.e. you can play or edit a DVD to "mute out" or skip certain scenes.
|
5
5
|
|
6
|
-
|
7
|
-
a few freely available open source programs [3]
|
8
|
-
to accomplish the editing for you. Then you can sit back and relax as you watch the "sensible"
|
9
|
-
version of your DVD.
|
6
|
+
This allows you to sit back and relax as you watch a more "sensiblized" showing of your DVD.
|
10
7
|
|
11
8
|
To use it, basically install it, insert an original DVD that you want to see edited, then run sensible cinema.
|
12
|
-
It will pop up some windows where you choose what to do
|
9
|
+
It will pop up some windows where you choose what to do.
|
10
|
+
You can either watch it edited, or created an edited version of the DVD, on your hard drive.
|
11
|
+
You could burn that edited file to a new DVD, if you desire and have a DVD burner on your computer.
|
12
|
+
|
13
|
+
How? Sensible is essentially a linear editor [1] that applies Edit Decision Lists [2] to videos, by wrapping
|
14
|
+
a few freely available open source programs [3]
|
15
|
+
to accomplish the editing for you.
|
13
16
|
|
14
17
|
Note that the whole process can at times take hours, so budget some time for it.
|
15
18
|
|
@@ -172,11 +175,11 @@ Also make sure you aren't out of disk space.
|
|
172
175
|
|
173
176
|
Also you could try a different computer (desktop computers' DVD drives seem to work better at times than laptops')
|
174
177
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
178
|
+
Also (for power users) make sure your version of ffmpeg is relatively new, as older versions (r19313) is known to crop wrong.
|
179
|
+
If you don't know what this means then you're probably ok and don't have to worry about it.
|
180
|
+
|
181
|
+
"DVDNAV stream read error!"
|
182
|
+
this typically means a dirty or scratched DVD.
|
180
183
|
|
181
184
|
== Feedback ==
|
182
185
|
|
@@ -3,5 +3,5 @@
|
|
3
3
|
@set RUBYOPT=
|
4
4
|
@echo This window will display lots of debug message output!
|
5
5
|
@java -version || echo need to install java first && pause
|
6
|
-
@cd sensible-cinema && java -cp "./vendor/cache/jruby-complete-1.5.5.jar" org.jruby.Main bin\sensible-cinema || echo ERROR. Please look for error message, above, and report back the error you see, or fix it && pause
|
6
|
+
@cd sensible-cinema && java -cp "./vendor/cache/jruby-complete-1.5.5.jar" org.jruby.Main bin\sensible-cinema.rb || echo ERROR. Please look for error message, above, and report back the error you see, or fix it && pause
|
7
7
|
@rem taskkill /f /im mencoder.exe
|
data/Rakefile
CHANGED
@@ -75,13 +75,14 @@ task 'bundle_dependencies' => 'gemspec' do
|
|
75
75
|
system("#{Gem.ruby} -S gem unpack #{d.name}")
|
76
76
|
}
|
77
77
|
to_here = "jruby-complete-1.5.5.jar"
|
78
|
+
p 'do you need to delete your old jruby complete...do you?'
|
78
79
|
unless File.exist? to_here
|
79
|
-
url = "/downloads/1.
|
80
|
+
url = "/downloads/1.6.0.RC1/jruby-complete-1.6.0.RC1.jar"
|
80
81
|
puts 'downloading in jruby-complete.jar file ' + url
|
81
82
|
# jruby complete .jar file
|
82
83
|
Net::HTTP.start("jruby.org.s3.amazonaws.com") { |http|
|
83
84
|
resp = http.get(url)
|
84
|
-
puts 'copying
|
85
|
+
puts 'copying jruby complete in... '
|
85
86
|
open(to_here, "wb") { |file|
|
86
87
|
file.write(resp.body)
|
87
88
|
}
|
@@ -125,11 +126,12 @@ task 'deploy' do
|
|
125
126
|
p 'copying in'
|
126
127
|
raise unless system("scp #{name} rdp@ilab1.cs.byu.edu:~/incoming")
|
127
128
|
p 'copying over'
|
128
|
-
raise unless system("ssh rdp@ilab1.cs.byu.edu \"scp ~/incoming/#{name} wilkboar@
|
129
|
+
raise unless system("ssh rdp@ilab1.cs.byu.edu \"scp ~/incoming/#{name} wilkboar@freemusicformormons.com:~/www/rogerdpackt28/sensible-cinema\"")
|
129
130
|
end
|
130
131
|
|
131
132
|
desc 'j -S rake bundle_dependencies create_distro_dir ... (releases with clean cache dir, which we need now)'
|
132
133
|
task 'full_release' => [:bundle_dependencies, :create_distro_dir, :build] do # :release sigh
|
134
|
+
system("cp -r vendor/cache ../cache.bak")
|
133
135
|
gems = Dir['pkg/*.gem']
|
134
136
|
gems[0..-2].each{|f| File.delete f} # kill old versions...
|
135
137
|
system("#{Gem.ruby} -S gem push #{gems[-1]}")
|
@@ -137,5 +139,7 @@ task 'full_release' => [:bundle_dependencies, :create_distro_dir, :build] do # :
|
|
137
139
|
Rake::Task["zip"].execute
|
138
140
|
Rake::Task["deploy"].execute
|
139
141
|
system("git push origin master")
|
142
|
+
system("cp -r ../cache.bak/* vendor/cache")
|
143
|
+
|
140
144
|
puts "don't forget to blog about it...and upload .zip of it..."
|
141
145
|
end
|
data/TODO
CHANGED
@@ -5,18 +5,21 @@
|
|
5
5
|
edl straight DVD replay:
|
6
6
|
work cars
|
7
7
|
clear runnings
|
8
|
-
finalize
|
9
8
|
have ben and chris test it out
|
10
|
-
|
9
|
+
|
11
10
|
== slightly lower than that, somewhat ordered ==
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
the "warning delet lists not there" comes up when you hit the fast preview button
|
13
|
+
use .done for the fast files :)
|
14
|
+
is there an easy way to change priority?
|
15
|
+
if yes then just for the system loop :)
|
16
|
+
ask for more beta testers
|
17
|
+
note: you need to re-offset your start and end times
|
17
18
|
change it to be aggressive sometimes yes, other times no
|
18
19
|
note: can make several different versions, with different filenames, and should rewatch the film after finalizing it (edited), like "grab to hard drive" and have a friend watch it, if desired.
|
19
|
-
|
20
|
+
note to previewer "you are about to preview these edits"
|
21
|
+
note you can use fast preview with the other going in the background
|
22
|
+
add "revision"...
|
20
23
|
the "edited.avi" *must* be playable in WMP
|
21
24
|
don't exit program if they don't select a disk :)
|
22
25
|
if they type in a "new" start time, use that as the default end time input too
|
@@ -24,6 +27,7 @@
|
|
24
27
|
don't use them linear, just linearize
|
25
28
|
mpeg is lossy (at least my current one pass conversion still is...) and smplayer can't play it right unedited
|
26
29
|
frame accurate splitter naive
|
30
|
+
vendorize ffmpeg
|
27
31
|
more DL's
|
28
32
|
my dvd's (loose timestamps...)
|
29
33
|
cars backport real EDL :)
|
@@ -52,13 +56,20 @@
|
|
52
56
|
use DVD navigator ?
|
53
57
|
http://msdn.microsoft.com/en-us/library/dd388584(v=VS.85).aspx
|
54
58
|
with an avi file sink?
|
59
|
+
|
60
|
+
D:\dev\sensible-cinema-never-commit-from-here>mv vendor\cache.bak ..
|
61
|
+
|
55
62
|
|
56
63
|
== DVD backlog (unordered, some very low prio, basically all never do) ==
|
57
64
|
|
65
|
+
@smplayer: provide a command line param for "extra params to run this time around" or what not...
|
66
|
+
create a "fantom edit"
|
67
|
+
check if a newer version of smplayer (+- forum links) can replace raw usage of mplayer now?
|
68
|
+
integrate sub-titles-zy-er (like the Python fella)
|
69
|
+
or maybe...use theirs?
|
70
|
+
@mplayer: some way to not have to use phreaky pipes in doze ("+1")
|
58
71
|
@ffmpeg: do you get slower the farther into large files you are?
|
59
|
-
FHE friendly: always harddup, "watch as grabbed" button [plus other ramifications]
|
60
72
|
@ffmpeg: gop 12 for ntsc-dvd?
|
61
|
-
@ffmpeg: doesn't grab the right time frames?
|
62
73
|
@mplayer: why you can't play it when VLC can? huh? (audio sync)
|
63
74
|
can watch conference like a music video :)
|
64
75
|
can play "this section then that, with this one's audio
|
@@ -96,6 +107,7 @@
|
|
96
107
|
can pull from imdb at package time [?]
|
97
108
|
delete fulli file automatically
|
98
109
|
except if it's a specific scene run...
|
110
|
+
FHE friendly: an option for "watch EDL as grabbed" (always harddup?)
|
99
111
|
.exe installer
|
100
112
|
just unzips, runs the .bat file for them [?] :)
|
101
113
|
full msi
|
@@ -128,7 +140,6 @@
|
|
128
140
|
instructions on how to do their own (private) DL or do one and submit it (public), or email their friends :P
|
129
141
|
add an option "just save full disk (unedited) to hard drive..."
|
130
142
|
note to people: can edit these to your liking, resubmit
|
131
|
-
imagemagick (ffmpeg) easier install...
|
132
143
|
DRY up dependency installation code
|
133
144
|
install dep's to cache2 or something...so I can avoid redownload after a release...
|
134
145
|
"Re-run most recent" disabled when there isn't one [?]
|
@@ -175,6 +186,11 @@ a single netflix descriptor, just in case
|
|
175
186
|
|
176
187
|
== 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). ==
|
177
188
|
|
189
|
+
figure out why I need to uses dvdnav:// sometimes, dvd:// others to not crash :P
|
190
|
+
|
191
|
+
if sued, could use straight mplayer -ss (+- one at a time, or possibly in a playlist [?] like VLC can...)
|
192
|
+
-hr-edl-seek ?
|
193
|
+
|
178
194
|
fade in/fade out volume, video
|
179
195
|
make the other stuff work again, since I no longer use YAML...
|
180
196
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.20.
|
1
|
+
0.20.5
|
@@ -18,8 +18,7 @@ This file is part of Sensible Cinema.
|
|
18
18
|
=end
|
19
19
|
|
20
20
|
print 'Loading Sensible Cinema...'
|
21
|
-
|
22
|
-
require File.dirname(__FILE__) + "/../lib/add_any_bundled_gems_to_load_path.rb"
|
21
|
+
require File.expand_path(File.dirname(__FILE__) + "/../lib/add_any_bundled_gems_to_load_path.rb")
|
23
22
|
require 'sane' # failure here means you haven't bundled your dependencies...[rake task]
|
24
23
|
|
25
24
|
require_relative '../lib/mencoder_wrapper'
|
@@ -112,7 +111,7 @@ module SensibleSwing
|
|
112
111
|
do_mplayer_edl
|
113
112
|
}
|
114
113
|
|
115
|
-
@watch_unedited = new_jbutton("Watch a DVD unedited (while grabbing to hard drive)", true)
|
114
|
+
@watch_unedited = new_jbutton("Watch a DVD unedited (while grabbing to hard drive--saves overall time)", true)
|
116
115
|
@watch_unedited.on_clicked {
|
117
116
|
success_no_run, wrote_to_here_fulli = do_copy_dvd_to_hard_drive false, true, true
|
118
117
|
sleep 5 unless success_no_run
|
@@ -431,7 +430,7 @@ EOL
|
|
431
430
|
freespace = get_freespace(save_to)
|
432
431
|
if freespace < 16_000_000_000
|
433
432
|
show_blocking_message_dialog("Warning: there may not be enough space on the disk for #{save_to}
|
434
|
-
(depending on DVD size, you may need like 16G free, but typically will need around 10GB free--you
|
433
|
+
(depending on DVD size, you may need like 16G free, but typically will need around 10GB free--you have #{freespace/1_000_000_000}GB free). Click OK to continue.")
|
435
434
|
end
|
436
435
|
save_to
|
437
436
|
end
|
@@ -450,8 +449,14 @@ EOL
|
|
450
449
|
# only show this message once :)
|
451
450
|
@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 a deleted section 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 a long time as it sets up the video for previewing.\nSubsequent previews will be faster, though, as long as you use the same filename.\n
|
452
451
|
Also note that if you change your delete list, you'll need to close, and regenerate the video to see it with your new settings.", "Preview")
|
452
|
+
old_start = Storage['start_time']
|
453
453
|
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'])
|
454
|
-
|
454
|
+
default_end = Storage['end_time']
|
455
|
+
if start_time and start_time != old_start
|
456
|
+
default_end = EdlParser.translate_string_to_seconds(start_time) + 10
|
457
|
+
default_end = EdlParser.translate_time_to_human_readable(default_end)
|
458
|
+
end
|
459
|
+
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)", default_end)
|
455
460
|
unless start_time and end_time
|
456
461
|
JOptionPane.showMessageDialog(nil, " Please choose start and end", "Failed", JOptionPane::ERROR_MESSAGE)
|
457
462
|
return
|
@@ -502,10 +507,11 @@ EOL
|
|
502
507
|
temp_dir = Dir.tmpdir
|
503
508
|
temp_file = temp_dir + '/vlc.temp.bat'
|
504
509
|
File.write(temp_file, commands)
|
505
|
-
popup = NonBlockingDialog.new(
|
506
|
-
"Applying
|
507
|
-
"
|
508
|
-
"
|
510
|
+
popup = NonBlockingDialog.new(
|
511
|
+
"Applying #{File.basename edit_list_path} \n against #{drive} (#{dvd_title}).\n" +
|
512
|
+
"Copying to #{save_to}.\n" +
|
513
|
+
"This could take quite awhile, and will prompt you and chime a noise when it is done.\n" +
|
514
|
+
"You can close this window and continue working while it runs in the background.\n" +
|
509
515
|
"NB that the created file will be playable only with VLC (possibly with smplayer).",
|
510
516
|
"OK")
|
511
517
|
|
@@ -549,7 +555,7 @@ EOL
|
|
549
555
|
show_file = "explorer /e,/select,\"#{File.expand_path(saved_to).to_filename}\""
|
550
556
|
system_blocking show_file # returns immediately
|
551
557
|
PlayAudio.play(File.expand_path(File.dirname(__FILE__)) + "/../vendor/music.wav")
|
552
|
-
show_blocking_message_dialog "Done--you may now watch file #{saved_to} in VLC player (possibly smplayer)"
|
558
|
+
show_blocking_message_dialog "Done--you may now watch file\n #{saved_to}\n in VLC player (or possibly smplayer)"
|
553
559
|
end
|
554
560
|
else
|
555
561
|
show_blocking_message_dialog("Failed--please examine console output and report back!\nAlso consult the troubleshooting section of the README file.", "Failed", JOptionPane::ERROR_MESSAGE)
|
@@ -564,7 +570,7 @@ EOL
|
|
564
570
|
return @_choose_dvd_drive
|
565
571
|
end
|
566
572
|
show_blocking_message_dialog 'insert a dvd first' unless opticals.find{|d| d.VolumeName }
|
567
|
-
names = opticals.map{|d| d.Name + "\\" + " (" + (d.VolumeName || 'Insert DVD
|
573
|
+
names = opticals.map{|d| d.Name + "\\" + " (" + (d.VolumeName || 'Insert DVD to use') + ")"}
|
568
574
|
|
569
575
|
if opticals.length != 1
|
570
576
|
dialog = GetDisk.new(self, names)
|
@@ -3,5 +3,5 @@
|
|
3
3
|
@set RUBYOPT=
|
4
4
|
@echo This window will display lots of debug message output!
|
5
5
|
@java -version || echo need to install java first && pause
|
6
|
-
@cd sensible-cinema && java -cp "./vendor/cache/jruby-complete-1.5.5.jar" org.jruby.Main bin\sensible-cinema --create-mode || echo ERROR. Please look for error message, above, and report back the error you see, or fix it && pause
|
6
|
+
@cd sensible-cinema && java -cp "./vendor/cache/jruby-complete-1.5.5.jar" org.jruby.Main bin\sensible-cinema.rb --create-mode || echo ERROR. Please look for error message, above, and report back the error you see, or fix it && pause
|
7
7
|
@taskkill /f /im mencoder.exe
|
data/go.bat
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
call j bin\sensible-cinema
|
1
|
+
call j bin\sensible-cinema.rb
|
2
2
|
taskkill /f /im mencoder.exe
|
data/goc.bat
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
call j bin\sensible-cinema --create-mode
|
1
|
+
call j bin\sensible-cinema.rb --create-mode
|
2
2
|
taskkill /f /im mencoder.exe
|
data/lib/edl_parser.rb
CHANGED
@@ -148,6 +148,28 @@ class EdlParser
|
|
148
148
|
total += 60* 60 * hours.to_i
|
149
149
|
total
|
150
150
|
end
|
151
|
+
|
152
|
+
def self.translate_time_to_human_readable seconds
|
153
|
+
# 3600 => "1:00:00"
|
154
|
+
out = ''
|
155
|
+
hours = seconds.to_i / 3600
|
156
|
+
if hours > 0
|
157
|
+
out << "%d" % hours
|
158
|
+
out << ":"
|
159
|
+
end
|
160
|
+
seconds = seconds - hours*3600
|
161
|
+
minutes = seconds.to_i / 60
|
162
|
+
out << "%02d" % minutes
|
163
|
+
seconds = seconds - minutes * 60
|
164
|
+
out << ":"
|
165
|
+
# avoid .0 at the end
|
166
|
+
if seconds != seconds.to_i
|
167
|
+
out << "%04.1f" % seconds
|
168
|
+
else
|
169
|
+
out << "%02d" % seconds
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
151
173
|
|
152
174
|
|
153
175
|
end
|
data/lib/mencoder_wrapper.rb
CHANGED
@@ -30,7 +30,7 @@ class MencoderWrapper
|
|
30
30
|
end
|
31
31
|
audio_codec = these_settings['audio_codec'] || 'lavc' # not copy...sniff...or you can't hear cars...
|
32
32
|
video_opts = "-ovc lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=1:vstrict=0:acodec=ac3:abitrate=192:autoaspect -ofps 30000/1001"
|
33
|
-
out + "call mencoder dvdnav://#{@dvd_title_track} -of mpeg -mpegopts format=dvd:tsaf -alang en -nocache -sid 1000 -oac #{audio_codec} #{video_opts} -o #{@big_temp} -dvd-device #{this_drive} && echo
|
33
|
+
out + "call mencoder dvdnav://#{@dvd_title_track} -of mpeg -mpegopts format=dvd:tsaf -alang en -nocache -sid 1000 -oac #{audio_codec} #{video_opts} -o #{@big_temp} -dvd-device #{this_drive} && echo done_grabbing > #{@big_temp}.done\n"# -vf harddup
|
34
34
|
end
|
35
35
|
|
36
36
|
def calculate_final_filename to_here_final_file
|
data/lib/overlayer.rb
CHANGED
@@ -142,21 +142,7 @@ class OverLayer
|
|
142
142
|
all[type] = new.sort
|
143
143
|
end
|
144
144
|
all
|
145
|
-
end
|
146
|
-
|
147
|
-
def translate_time_to_human_readable seconds
|
148
|
-
# 3600 => "1:00:00"
|
149
|
-
out = ''
|
150
|
-
hours = seconds.to_i / 3600
|
151
|
-
out << "%d" % hours
|
152
|
-
out << ":"
|
153
|
-
seconds = seconds - hours*3600
|
154
|
-
minutes = seconds.to_i / 60
|
155
|
-
out << "%02d" % minutes
|
156
|
-
seconds = seconds - minutes * 60
|
157
|
-
out << ":"
|
158
|
-
out << "%04.1f" % seconds
|
159
|
-
end
|
145
|
+
end
|
160
146
|
|
161
147
|
def timestamp_changed to_this_exact_string_might_be_nil, delta
|
162
148
|
if @just_unblanked
|
data/lib/swing_helpers.rb
CHANGED
@@ -96,7 +96,7 @@ module SensibleSwing
|
|
96
96
|
get_content_pane.set_layout nil
|
97
97
|
lines.each_with_index{|line, idx|
|
98
98
|
jlabel = JLabel.new line
|
99
|
-
jlabel.set_bounds(10, 15*idx,
|
99
|
+
jlabel.set_bounds(10, 15*idx, 550, 24)
|
100
100
|
get_content_pane.add jlabel
|
101
101
|
}
|
102
102
|
close = JButton.new( close_button_text ).on_clicked {
|
@@ -104,7 +104,7 @@ module SensibleSwing
|
|
104
104
|
}
|
105
105
|
close.set_bounds(125,30+15*lines.length,70,25)
|
106
106
|
get_content_pane.add close
|
107
|
-
set_size
|
107
|
+
set_size 550, 100+15*lines.length # XXX variable width? or use swing build in better?
|
108
108
|
set_visible true
|
109
109
|
setDefaultCloseOperation JFrame::DISPOSE_ON_CLOSE
|
110
110
|
setLocationRelativeTo nil # center it on the screen
|
data/lib/vlc_programmer.rb
CHANGED
data/sensible-cinema.gemspec
CHANGED
@@ -5,13 +5,13 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{sensible-cinema}
|
8
|
-
s.version = "0.20.
|
8
|
+
s.version = "0.20.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"]
|
12
|
-
s.date = %q{2011-01-
|
12
|
+
s.date = %q{2011-01-24}
|
13
13
|
s.email = %q{rogerdpack@gmail.com}
|
14
|
-
s.executables = ["sensible-cinema", "sensible-cinema
|
14
|
+
s.executables = ["sensible-cinema-cli", "sensible-cinema.rb"]
|
15
15
|
s.extensions = ["ext/mkrf_conf.rb"]
|
16
16
|
s.extra_rdoc_files = [
|
17
17
|
"ChangeLog",
|
@@ -27,8 +27,8 @@ Gem::Specification.new do |s|
|
|
27
27
|
"Rakefile",
|
28
28
|
"TODO",
|
29
29
|
"VERSION",
|
30
|
-
"bin/sensible-cinema",
|
31
30
|
"bin/sensible-cinema-cli",
|
31
|
+
"bin/sensible-cinema.rb",
|
32
32
|
"create or edit sensible cinema delete list files.bat",
|
33
33
|
"experimental_readme.txt",
|
34
34
|
"ext/mkrf_conf.rb",
|
data/spec/edl_parser.spec.rb
CHANGED
@@ -152,4 +152,30 @@ describe EdlParser do
|
|
152
152
|
|
153
153
|
it "should handle edge cases, like where an entry overlaps the divider, or the added stuff causes it to"
|
154
154
|
|
155
|
-
|
155
|
+
def translate x
|
156
|
+
EdlParser.translate_string_to_seconds x
|
157
|
+
end
|
158
|
+
|
159
|
+
def english y
|
160
|
+
EdlParser.translate_time_to_human_readable y
|
161
|
+
end
|
162
|
+
|
163
|
+
it "should translate strings to ints well" do
|
164
|
+
translate("00.09").should == 0.09
|
165
|
+
translate("1.1").should == 1.1
|
166
|
+
translate("01").should == 1
|
167
|
+
translate("1:01").should == 61
|
168
|
+
translate("1:01:01.1").should == 60*61+1.1
|
169
|
+
translate("1:01:01").should == 60*61+1
|
170
|
+
end
|
171
|
+
|
172
|
+
it "should translate ints to english timestamps well" do
|
173
|
+
english(60).should == "01:00"
|
174
|
+
english(60.1).should == "01:00.1"
|
175
|
+
english(3600).should == "1:00:00"
|
176
|
+
english(3599).should == "59:59"
|
177
|
+
english(3660).should == "1:01:00"
|
178
|
+
english(3660 + 0.1).should == "1:01:00.1"
|
179
|
+
end
|
180
|
+
|
181
|
+
end
|
@@ -70,7 +70,7 @@ describe MencoderWrapper do
|
|
70
70
|
end
|
71
71
|
|
72
72
|
it "should create a .done file after ripping" do
|
73
|
-
@out.should include("&& echo
|
73
|
+
@out.should include("&& echo done_grabbing > to_here.fulli_unedited.tmp.mpg.done")
|
74
74
|
end
|
75
75
|
|
76
76
|
def go
|
data/spec/notes
CHANGED
@@ -1,4 +1,12 @@
|
|
1
|
+
MPlayer git-20100211-1-g1c6846f-Kovensky-mt (C) 2000-2009 MPlayer Team
|
2
|
+
can play dvd:// and dvdnav:// with seeking at the beginning without crashing...[because old, maybe?]
|
3
|
+
mulder's: http://mulder.googlecode.com/files/MPUI.2010-10-17.Full-Package.exe crashes like normal [dvdnav only]
|
4
|
+
smplayers seem to always play dvd:// so never crash [?]
|
5
|
+
|
6
|
+
the internet seems to "not tell me" if transcode's avisplit is frame accurate or not.
|
7
|
+
|
1
8
|
watching a DVD "from the DVD" in smplayer seemed to have the right audio always. yep.
|
9
|
+
i.e. transcoding from dvd flick fixed it [probably]
|
2
10
|
|
3
11
|
previewing section on HP 2 hours or so and the first thing overlapped the muted section in error...went too long...huh?
|
4
12
|
call ffmpeg -i C:\HP_AND_THE_CHAMBER_OF_SECRETS_edited_version.fulli_unedited.tmp.mpg -vcodec copy -acodec copy -ss 7260.0 -t 10.499 C:\HP_AND_THE_CHAMBER_OF_SECRETS_edited_version.1.avi
|
@@ -6,6 +14,9 @@ previewing section on HP 2 hours or so and the first thing overlapped the muted
|
|
6
14
|
call ffmpeg -i C:\HP_AND_THE_CHAMBER_OF_SECRETS_edited_version.fulli_unedited.tmp.mpg -vcodec copy -acodec copy -ss 7272.0 -t 3.999 C:\HP_AND_THE_CHAMBER_OF_SECRETS_edited_version.3.avi
|
7
15
|
|
8
16
|
resulted in sectors of 13.17 1.93, 5.03 instead of 10.5, 1.5, and 4. huh?
|
17
|
+
with FFmpeg version SVN-r19313, [BAD VERSION probably]
|
18
|
+
call ffmpeg -i C:\HP_AND_THE_CHAMBER_OF_SECRETS_edited_version.fulli_unedited.tmp.mpg -vcodec copy -acodec copy -ss 7260.0 -t 10.499 yo.1.avi
|
19
|
+
with r32676 seemed much more sane (!)
|
9
20
|
|
10
21
|
$ to fix mplayer out of sync audio:
|
11
22
|
$ ffmpeg -i HP_AND_THE_CHAMBER_OF_SECRETS_edited_version.fulli_unedited.tmp.mpg -target ntsc-dvd -t 1600 yo.mpg
|
@@ -19,7 +30,7 @@ bob "they will come" has no mplayer overlap (45 minutes long)
|
|
19
30
|
|
20
31
|
HP 2 "full and edited version" had a twidge off of audio even in VLC (unsure if that was copy or lavc audio)
|
21
32
|
seems consistent
|
22
|
-
The DVD (flick) appeared to have audio in perfect sync, always.
|
33
|
+
The DVD (flick) burned, then played, appeared to have audio in perfect sync, always.
|
23
34
|
seems to play fine in smplayer
|
24
35
|
the fulli version was *totally off* in smplayer
|
25
36
|
fulli, edited version had some artifacts in VLC
|
data/spec/overlayer.spec.rb
CHANGED
@@ -430,14 +430,7 @@ describe OverLayer do
|
|
430
430
|
@o.status.should include("q") # for quit
|
431
431
|
end
|
432
432
|
end
|
433
|
-
|
434
|
-
it "should have human readable output" do
|
435
|
-
@o.translate_time_to_human_readable(3600).should == "1:00:00.0"
|
436
|
-
@o.translate_time_to_human_readable(3600.0).should == "1:00:00.0"
|
437
|
-
@o.translate_time_to_human_readable(3601).should == "1:00:01.0"
|
438
|
-
@o.translate_time_to_human_readable(3661).should == "1:01:01.0"
|
439
|
-
end
|
440
|
-
|
433
|
+
|
441
434
|
it "should no longer accept human readable style as starting seconds" do
|
442
435
|
proc { OverLayer.new 'temp.yml', "01:01.5" }.should raise_error(ArgumentError)
|
443
436
|
end
|
@@ -6,21 +6,19 @@
|
|
6
6
|
"21:58", "22:07", "butt",
|
7
7
|
"22:34", "22:34.6", "He..",
|
8
8
|
"23:56.5", "23:56.8", "he..",
|
9
|
-
"29:44.
|
10
|
-
"34:08.5", "34:09", "L...",
|
9
|
+
"29:44.5", "29:45", "G.. name",
|
10
|
+
"34:08.5", "34:09.1", "L...",
|
11
11
|
"40:55", "40:56", "g",
|
12
|
-
"47:24.4", "47:25", "A. holes",
|
13
12
|
"48:40", "48:41.1", "G",
|
14
|
-
"
|
13
|
+
"1:01:40.2", "1:01:41", "sled g... does it again",
|
15
14
|
"1:02:03", "1:02:04", "butt whipped",
|
16
15
|
"1:02:36.2", "1:02:37", "butt whipping",
|
17
16
|
"1:11:35", "1:11:35.4", "h..",
|
18
|
-
"1:12:43", "1:12:44", "G",
|
17
|
+
"1:12:43", "1:12:44.5", "G",
|
19
18
|
"1:22:01.5", "1:22:02", "d...",
|
20
|
-
"1:22:53", "1:22:54", "dingaling",
|
21
|
-
"1:23:03", "1:23:03.
|
22
|
-
"1:23:48", "1:23:49", "G.",
|
23
|
-
"1:01:40.2", "1:01:41", "sled g... does it again"
|
19
|
+
"1:22:53.5", "1:22:54", "dingaling",
|
20
|
+
"1:23:03.3", "1:23:03.8", "h.",
|
21
|
+
"1:23:48.5", "1:23:49.5", "G.",
|
24
22
|
],
|
25
23
|
|
26
24
|
|
@@ -28,10 +26,12 @@
|
|
28
26
|
"15:20", "15:30",
|
29
27
|
"38:40.4", "38:43.6", "j. c. what h..",
|
30
28
|
"58:40", "58:41", "bad arsenic, but I dislike lip reading.",
|
29
|
+
"47:24.4", "47:25", "A. holes",
|
31
30
|
"59:08", "59:09", " bad arsenic",
|
32
31
|
"59:15", "59:49", "bad arsenic ...",
|
32
|
+
"59:51.8", "59:52.2", "D",
|
33
33
|
"1:14:30.5", "1:14:47", "psalm",
|
34
|
-
"1:16:57.
|
34
|
+
"1:16:57.3", "1:16:58", "bad a..",
|
35
35
|
],
|
36
36
|
|
37
37
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# comments can go after a # on any line.
|
2
2
|
"mutes" => [
|
3
3
|
"00:09:44", "00:09:46", "darn",
|
4
|
-
"00:12:
|
4
|
+
"00:12:54", "00:12:55", "good L..",
|
5
5
|
"01:20:59", "01:21:00", "h..",
|
6
6
|
"01:21:16", "01:21:17.5", "he..",
|
7
7
|
"02:01:10.5", "02:01:12", "h..",
|
@@ -14,4 +14,5 @@
|
|
14
14
|
"disk_unique_id" => "9a56136cdd5bc321ebff064cd59b8322",
|
15
15
|
"title" => "Harry Potter 2 Chamber of secrets",
|
16
16
|
"grabbed_md5" => "2f0395de5eaf0c64eae859e17ba270fd",
|
17
|
-
"mplayer_dvd_splits" => ["1:16:32"]
|
17
|
+
"mplayer_dvd_splits" => ["1:16:32"]
|
18
|
+
#plenty of violence at the end with the snake, and also the spiders. hmmmm.
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 20
|
8
|
-
-
|
9
|
-
version: 0.20.
|
8
|
+
- 5
|
9
|
+
version: 0.20.5
|
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: 2011-01-
|
17
|
+
date: 2011-01-24 00:00:00 -07:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -148,8 +148,8 @@ dependencies:
|
|
148
148
|
description:
|
149
149
|
email: rogerdpack@gmail.com
|
150
150
|
executables:
|
151
|
-
- sensible-cinema
|
152
151
|
- sensible-cinema-cli
|
152
|
+
- sensible-cinema.rb
|
153
153
|
extensions:
|
154
154
|
- ext/mkrf_conf.rb
|
155
155
|
extra_rdoc_files:
|
@@ -165,8 +165,8 @@ files:
|
|
165
165
|
- Rakefile
|
166
166
|
- TODO
|
167
167
|
- VERSION
|
168
|
-
- bin/sensible-cinema
|
169
168
|
- bin/sensible-cinema-cli
|
169
|
+
- bin/sensible-cinema.rb
|
170
170
|
- create or edit sensible cinema delete list files.bat
|
171
171
|
- experimental_readme.txt
|
172
172
|
- ext/mkrf_conf.rb
|