sensible-cinema 0.23.2 → 0.23.3
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.TXT +1 -1
- data/README +21 -125
- data/Rakefile +9 -3
- data/TODO +48 -60
- data/VERSION +1 -1
- data/bin/sensible-cinema +134 -93
- data/change_log_with_feature_list.txt +4 -0
- data/{development.txt → developer_how_to_contribute_to_the_project.txt} +11 -11
- data/documentation/how_to_create_your_own_delete_lists.txt +67 -0
- data/documentation/how_to_get_files_from_dvd.txt +30 -0
- data/{is_it_legal_to_copy_dvds.txt → documentation/is_it_legal_to_copy_dvds.txt} +79 -79
- data/{experimental_ocr_readme.txt → experimental_online_player_ocr_readme.txt} +0 -0
- data/history_and_related_works_list.txt +93 -0
- data/lib/convert_thirty_fps.rb +12 -0
- data/lib/edl_parser.rb +2 -2
- data/lib/subtitle_profanity_finder.rb +2 -2
- data/lib/swing_helpers.rb +1 -2
- data/sensible-cinema.gemspec +9 -8
- data/spec/notes +5 -3
- data/spec/sensible_cinema_gui.spec.rb +4 -18
- data/spec/subtitle_profanity_finder.spec.rb +3 -3
- data/todo.build_library.txt +1 -1
- data/todo.propaganda +2 -0
- data/www/index.html +12 -8
- metadata +9 -8
- data/how_to_create_your_own_delete_lists.txt +0 -56
- data/how_to_get_files_from_dvd.txt +0 -24
- data/lib/auto_convert.rb +0 -5
data/LICENSE.TXT
CHANGED
|
@@ -15,4 +15,4 @@ unzip.exe is herein included, under the info-zip license: http://www.info-zip.or
|
|
|
15
15
|
|
|
16
16
|
some binary builds of dvdid are also distributed here. See http://www.srcf.ucam.org/~cjk32/dvdid
|
|
17
17
|
|
|
18
|
-
See first also the file "is_it_legal_to_copy_dvds.txt" for more information on legal
|
|
18
|
+
See first also the file "documentation/is_it_legal_to_copy_dvds.txt" for more information on legal implications in your country.
|
data/README
CHANGED
|
@@ -45,17 +45,17 @@ Enjoy your movies!
|
|
|
45
45
|
|
|
46
46
|
== Installation ==
|
|
47
47
|
|
|
48
|
-
Installation instructions available here: http://rogerdpack.t28.net/sensible-cinema
|
|
49
|
-
NB that you want to download
|
|
48
|
+
Installation and usage instructions available here: http://rogerdpack.t28.net/sensible-cinema
|
|
49
|
+
NB that you want to download it sourceforge, not from github downloads.
|
|
50
50
|
|
|
51
51
|
== Creating Your Own Delete Lists, or modifying previously existing ones ==
|
|
52
52
|
|
|
53
|
-
See the
|
|
53
|
+
See the accompanying documentation/how_to_create_your_own_delete_lists.txt file.
|
|
54
54
|
|
|
55
55
|
== Creating an edited DVD ==
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
I don't actually know how to do this I've never burned a DVD.
|
|
58
|
+
See also is_it_legal_to_copy_dvds.txt for some caveats you should understand first.
|
|
59
59
|
Windows DVD Maker might help, http://www.dvdflick.net might help.
|
|
60
60
|
iDVD might help on mac.
|
|
61
61
|
DO NOT MAKE ILLEGAL COPIES OF DVD's. See is_it_legal_to_copy_dvds.txt.
|
|
@@ -148,95 +148,14 @@ See also the "Overly Verbose History" section.
|
|
|
148
148
|
and they told us the model we got was defective, and that the new one was much better and we could get it at a discount, but
|
|
149
149
|
the next one just died also."
|
|
150
150
|
|
|
151
|
-
==
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
Once I discovered all of these previously existing programs, I knew the right elements were ready for
|
|
160
|
-
something like sensible cinema.
|
|
161
|
-
|
|
162
|
-
See also the "related" section, and "motivation" section.
|
|
163
|
-
|
|
164
|
-
Originally the project started as a prototype to "watch hulu (online) and netflix instant movies
|
|
165
|
-
edited" (it uses/used screen snapshots (of specific locations where the digits are expected, based on windows position)
|
|
166
|
-
and then tracks, using OCR of the on-screen (convert to timestamp), to monitor it for specific times relative
|
|
167
|
-
to an EDL, and react appropriately.
|
|
168
|
-
However, this functionality, though working and available, is disabled currently for potential patent
|
|
169
|
-
issues. Some older released versions had it enabled, but not the later releases.
|
|
170
|
-
Then I realized I could basically have the same effect by instructing a video player (VLC) to "play from second x to y"
|
|
171
|
-
ok "now play from z to q muted" etc. (so kind of a stop and go video player, kind of like controlling the remote for you).
|
|
172
|
-
It basically was implementing Edit Decision Lists (EDL's) using playlists and
|
|
173
|
-
VLC.
|
|
174
|
-
I just passed VLC a playlist, it did all the work for me, without any necessary real-time tracking. This seemed patent friendly,
|
|
175
|
-
so I went with this. There are a few released versions with this feature enabled.
|
|
176
|
-
They avoid real-time tracking by specifying "play from here to here"
|
|
177
|
-
not "skip from here to here" as some other editing players do.
|
|
178
|
-
|
|
179
|
-
Then it occurred to me that one could grab the several clean segments
|
|
180
|
-
off a movie file, and piece them together to create an edited clean version ( a la cleanflix ). This also avoids
|
|
181
|
-
realtime tracking, so I also included this ability.
|
|
182
|
-
The playlist option is disabled in later releases, as it was deemed too user-non-friendly, and because VLC timing
|
|
183
|
-
is "different" than standard DVD players, so I decided to just use standardized timing, though it worked fine
|
|
184
|
-
for VLC playbacks.
|
|
185
|
-
I replaced it with support for mplayer's EDL format, which works better, and has consistent timing, though is still a bit buggy.
|
|
186
|
-
|
|
187
|
-
You can see a full list of other features that have been published and demonstrated
|
|
188
|
-
in the accompanying file change_log_with_feature_list.txt. Each feature mentioned works
|
|
189
|
-
in some released version of sensible-cinema though some features have been removed in subsequent versions
|
|
190
|
-
(they're all available as rubygems).
|
|
191
|
-
|
|
192
|
-
Who knows what the future will hold...
|
|
193
|
-
|
|
194
|
-
[1] http://www.oreillynet.com/sysadmin/blog/2005/06/make_your_own_phantom_edit_wit.html
|
|
195
|
-
|
|
196
|
-
== Related ==
|
|
197
|
-
|
|
198
|
-
The concepts I use aren't novel. Some other previously existing related type examples:
|
|
199
|
-
|
|
200
|
-
Edited "airplane edit" style movies.
|
|
201
|
-
Commercial TV (ABC, NBC) show their own (edited) movies.
|
|
202
|
-
http://en.wikipedia.org/wiki/Linear_video_editing
|
|
203
|
-
http://en.wikipedia.org/wiki/Edit_decision_list#Systems_supporting_EDL_playback.2C_not_just_EDL_cutting lists a lot of players that support EDL DVD playback in some form or another.
|
|
204
|
-
http://imdb.com tends to have reasonably good lists of what occurs in movies (find a movie, click on "parent's guide" on the left). Sometimes it even lists the time signatures for events (ex: "Labyrinth" http://www.imdb.com/title/tt0091369/parentalguide) which you could use to translate into a sensible-cinema compatible list.
|
|
205
|
-
Normal DVD's versus "directors cut" versions of movies (one is at times preferable, content wise)
|
|
206
|
-
http://en.wikipedia.org/wiki/Edit_decision_list (it's a linear editing tool, after all--so see the vast list of those)
|
|
207
|
-
Clean Flicks (used to) sell edited movies
|
|
208
|
-
http://www.videoredo.com/en/index.htm lets you "cut out" offensive content (commercials et al) and burn DVD's from mpeg's/h264 streams
|
|
209
|
-
http://www.microsoft.com/windows/windowsmedia/howto/articles/device_control.aspx Windows Media Encoder supports EDL's by timestamp
|
|
210
|
-
http://www.mplayerhq.hu/DOCS/HTML/en/edl.html
|
|
211
|
-
http://www.sharewareconnection.com/fast-compress-content-and-anti-profanity.htm replaces profanity in web pages with euphemized content.
|
|
212
|
-
http://www.oreillynet.com/sysadmin/blog/2005/06/make_your_own_phantom_edit_wit.html (mplayer has had this ability for awhile, with no complaints).
|
|
213
|
-
http://clearplay.com a commercial "filtering" DVD player See the "motivation" section for a description.
|
|
214
|
-
It does offer a few features that sensible cinema supports but disables, for patent reasons, like automatic (user flexible) content decisions. Ours are manual, etc.
|
|
215
|
-
http://en.wikipedia.org/wiki/RiffTrax has an interesting idea of "overlaying" audio over the original video, and synchronizing between the two (their re-player does, anyway).
|
|
216
|
-
http://forum.bsplayer.com/feature-requests-feedback-suggestions/7157-chapter-playlist-scene-cut-3.html
|
|
217
|
-
http://www.inmatrix.com zoom player's "scene cut editor"
|
|
218
|
-
http://wiki.xbmc.org/?title=EDL_(commercial_skipping)_and_SceneMarker_support (XBMC's scene cut supporter--also contains links to some other editors' support for EDL's)
|
|
219
|
-
http://dvdshrink.info "Re-author" mode: to make "movie-only" backups, compilations, combine "flippers",.... DvdShrink has the ability to "crop or cut parts of a title" etc.
|
|
220
|
-
The VCR with its record button, coupled with the stop+rewind button.
|
|
221
|
-
http://kb2.adobe.com/cps/191/tn_19151.html Adobe Director MX 2004 can "script" DVD playback.
|
|
222
|
-
DVD's themselves allow for "scripted" playback of certain content, allowing controls for jumping from location to location, switching audio/video tracks, etc.
|
|
223
|
-
http://code.google.com/p/movie-content-editor (player written in Python, controls VLC based on subtitles and user-input, using edit decision lists in realtime)
|
|
224
|
-
http://forums.gbpvr.com/showthread.php?10606-Automated-Cutting-and-Transcoding-Guide-Using-Mencoder/page45
|
|
225
|
-
http://www.imdb.com/swiki/special?ParentalGuideHelp (search for "scene description")
|
|
226
|
-
http://www.mythtv.org/wiki/Removing_Commercials
|
|
227
|
-
showanalyzer http://www.dragonglobal.biz/showanalyzer.html and comskip analyze videos to look for "segments to cut out" automatically (commercials, in this case, but the principle still applies)
|
|
228
|
-
Old-school: using the remote control with the pause, mute, stop, fast forward, and play buttons, along with previous knowledge of "questionable" scene locations
|
|
229
|
-
The scissors and old VHS tapes (Clean Flicks' origin, if I remember correctly). http://www.familysafemedia.com/home_movie_editor.html (was a helper kit for cutting VHS tape)
|
|
230
|
-
Windows Movie Maker. Allows for users to cut and copy scenes of movies. Really any editor can do this.
|
|
231
|
-
http://forum.videolan.org/viewtopic.php?f=7&t=56998 VLC Media Player using EDL's via playlists
|
|
232
|
-
Corel WinDVD has "Quick Clip" settings for capturing from DVD.
|
|
233
|
-
Microsoft's built-in magnifier basically copies DVD's screen output if mouse is placed over playing DVD.
|
|
234
|
-
http://superuser.com/questions/85278/how-can-i-cut-scenes-out-of-a-dvd
|
|
235
|
-
http://blog.josephhall.com/2008/09/command-line-dvd-authoring-part-1.html
|
|
236
|
-
AviSynth can script dvd playback http://forum.doom9.org/archive/index.php/t-109558.html
|
|
237
|
-
ps3 media server has edl support: https://github.com/chocolateboy/PMS-EDL maybe would work with DVD's dunno
|
|
238
|
-
Anydvd HD's "magic file replacement" for DVD's/blu-ray's
|
|
239
|
-
RiffTrax allows for an audio "overlay" to a DVD playback, have their own player to coordinate the two.
|
|
151
|
+
== History ==
|
|
152
|
+
|
|
153
|
+
See the file history_and_related_works_list.txt for an overly verbose history.
|
|
154
|
+
Also see the file change_log_with_feature_list.txt.
|
|
155
|
+
|
|
156
|
+
== Related Works ==
|
|
157
|
+
|
|
158
|
+
See the file history_and_related_works_list.txt
|
|
240
159
|
|
|
241
160
|
== License ==
|
|
242
161
|
|
|
@@ -249,30 +168,7 @@ See first also the file "is_it_legal_to_copy_dvds.txt" for more information on l
|
|
|
249
168
|
|
|
250
169
|
== Troubleshooting ==
|
|
251
170
|
|
|
252
|
-
|
|
253
|
-
Baking soda toothpaste might help with cleaning it.
|
|
254
|
-
If it still errs, report it, along with a screen snapshot and steps of
|
|
255
|
-
how to reproduce the problem, preferably. See the feedback section.
|
|
256
|
-
|
|
257
|
-
It can fail also because a deletion is past end of DVD, or
|
|
258
|
-
Also make sure you aren't out of disk space.
|
|
259
|
-
|
|
260
|
-
Try playback in "VLC Media Player"
|
|
261
|
-
|
|
262
|
-
You try to play back a sensible cinema-ized video file and it plays back without
|
|
263
|
-
audio or video (example: windows media player)?
|
|
264
|
-
|
|
265
|
-
This probably means you're using windows media player, and don't have "codecs" installed
|
|
266
|
-
to handle this type of audio. Not to fear, just download the "ffdshow tryouts" (google for it)
|
|
267
|
-
and, when it gives you the option, be sure to check "mpeg2 video" and then
|
|
268
|
-
it should "just work." You could also optionally just play the file in VLC Media Player or smplayer
|
|
269
|
-
(there's a button for that). Installing "AC3Filter" may help if you can hear no audio.
|
|
270
|
-
Really VLC Media Player is your best bet though.
|
|
271
|
-
|
|
272
|
-
If the end result picture is too grainy/pixelated or if the overall process is too slow, let me know and I'll work on
|
|
273
|
-
making it better. No really, I have some ideas, but want to see if there's need first for improvement in those areas.
|
|
274
|
-
|
|
275
|
-
Finally, report back! If there are problems that arise, I want to hear about them so we can help you through it.
|
|
171
|
+
See the file documentation/troubleshooting.txt, or contact (see the feedback/development section).
|
|
276
172
|
|
|
277
173
|
== Thanks ==
|
|
278
174
|
|
|
@@ -284,21 +180,21 @@ the authors and maintainers of said libraries, and anybody else I forgot to ment
|
|
|
284
180
|
|
|
285
181
|
== Feedback/Development ==
|
|
286
182
|
|
|
287
|
-
Feedback, including feature requests, comments, etc. welcome:
|
|
183
|
+
Feedback, including feature requests, comments, etc. all welcome:
|
|
288
184
|
|
|
289
|
-
Mailing List: http://groups.google.com/group/sensible-cinema
|
|
185
|
+
Mailing List: http://groups.google.com/group/sensible-cinema, or just mail to sensible-cinema@googlegroups.com
|
|
290
186
|
|
|
291
187
|
If you're a developer and want to help out with programmming or look and feel, etc., please do!
|
|
292
|
-
See development.txt
|
|
188
|
+
See development.txt file, and also http://github.com/rdp/sensible-cinema
|
|
293
189
|
|
|
294
190
|
If you want to donate something, please consider donating to a charity of your choice.
|
|
295
|
-
No really.
|
|
191
|
+
No really.
|
|
296
192
|
|
|
297
193
|
== Competition/use of files ==
|
|
298
194
|
|
|
299
195
|
Note that competition/use of files from sensible cinema is welcome!
|
|
300
196
|
|
|
301
|
-
In fact, the current end goal is to publish the delete lists (EDL's)
|
|
302
|
-
own API, meaning that even "for profit" users can use them for whatever other use they want, hopefully
|
|
197
|
+
In fact, the current end goal is to publish the delete lists (EDL's) to a separate repository with its
|
|
198
|
+
own API under the CC license, meaning that even "for profit" users can use them for whatever other use they want, hopefully
|
|
303
199
|
good uses :) More direct direct competitors are also welcome here. I only made this because I had to
|
|
304
|
-
and nothing like it existed, so if something else springs up, I'm happy to use it instead.
|
|
200
|
+
and nothing like it existed, so if something else springs up, I'm actually happy to use it instead, too.
|
data/Rakefile
CHANGED
|
@@ -119,17 +119,23 @@ task 'zip' do
|
|
|
119
119
|
end
|
|
120
120
|
|
|
121
121
|
def sys arg
|
|
122
|
-
|
|
122
|
+
3.times {
|
|
123
|
+
if system arg
|
|
124
|
+
return
|
|
125
|
+
end
|
|
126
|
+
}
|
|
127
|
+
raise arg + ' failed 3x!'
|
|
123
128
|
end
|
|
124
129
|
|
|
125
130
|
task 'deploy' do
|
|
126
131
|
name = 'sensible-cinema-' + cur_ver + ".zip"
|
|
127
132
|
p 'copying to ilab'
|
|
128
133
|
sys "scp #{name} rdp@ilab1.cs.byu.edu:~/incoming"
|
|
134
|
+
p 'creating sf shell'
|
|
135
|
+
sys "ssh rdp@ilab1.cs.byu.edu 'ssh rogerdpack,sensible-cinema@shell.sourceforge.net create'" # needed for the next command to be able to work [weird]
|
|
129
136
|
p 'creating sf dir'
|
|
130
|
-
sys "ssh rdp@ilab1.cs.byu.edu 'ssh -t rogerdpack,sensible-cinema@shell.sourceforge.net create'" # needed for the next command to work.
|
|
131
137
|
sys "ssh rdp@ilab1.cs.byu.edu 'ssh rogerdpack,sensible-cinema@shell.sourceforge.net \"mkdir /home/frs/project/s/se/sensible-cinema/#{cur_ver}\"'"
|
|
132
|
-
p 'copying into sf'
|
|
138
|
+
p 'copying into sf from ilab'
|
|
133
139
|
sys "ssh rdp@ilab1.cs.byu.edu 'scp ~/incoming/#{name} rogerdpack,sensible-cinema@frs.sourceforge.net:/home/frs/project/s/se/sensible-cinema/#{cur_ver}/#{name}'"
|
|
134
140
|
p 'successfully deployed to sf only! ' + cur_ver
|
|
135
141
|
end
|
data/TODO
CHANGED
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
|
|
7
7
|
=== loose ordering/eventually ===
|
|
8
8
|
linearize [?] hmm...
|
|
9
|
-
re-update todo/all docu
|
|
9
|
+
re-update todo/all docu/user feedbacks
|
|
10
10
|
create web site/api-ify
|
|
11
11
|
LLC
|
|
12
12
|
if...back off to just the ffmpeg (plus an "[A,B]" viewer) only...but for now stick with just DVD playback [?] until people want more...
|
|
13
13
|
no propaganda...
|
|
14
14
|
no auto subtitles...
|
|
15
|
-
|
|
15
|
+
fix VLC dvdnav itself +- mplayer DVD EDL
|
|
16
16
|
|
|
17
17
|
== high prio like blocking bugs ==
|
|
18
18
|
|
|
@@ -25,60 +25,57 @@
|
|
|
25
25
|
url -> url inference [hopefully this is cake...]
|
|
26
26
|
fix the failing 9 digit test the fancy shmancy way :P
|
|
27
27
|
can pass in a profanity command line
|
|
28
|
-
can handle dual
|
|
28
|
+
can handle dual dvdid's
|
|
29
29
|
youtube: use the javascript API somehow, like http://universalsubtitles.org/en does
|
|
30
30
|
phase 1: does they use inferred timestamp? can I use that generally, too? [do phase 1--publish simple javascript demo of it muting for awhile after startup]
|
|
31
31
|
just in case youtube takes over the world
|
|
32
32
|
|
|
33
|
-
== yes do ordered ==
|
|
33
|
+
== yes do ordered in conjunction with the above ==
|
|
34
34
|
try buy delete lists from all x,y,z [?] maybe ask for them for free first? ()
|
|
35
|
+
http://www.familysafemovies.com
|
|
36
|
+
cleanflix (earl? that guy [John webster http://www.amazon.com/Make-Edited-Movies-ebook/dp/B004EYT3BU]?)
|
|
37
|
+
cougar video (that looks tough...)
|
|
38
|
+
http://www.cleanplaydvds.com
|
|
39
|
+
cleanfilms.com (now dead) "clean films"
|
|
40
|
+
that one on state street (John webster?)
|
|
41
|
+
http://www.edited-movies.com/buy-edited-movies/
|
|
42
|
+
http://www.clean-edited-movies.com/clean_flicks.htm ray lines ?
|
|
43
|
+
maybe more listed here: http://www.clean-edited-movies.com/clean_flicks.htm
|
|
44
|
+
Almost overnight, competitors to CleanFlicks popped up with twists on the CleanFlicks brand -- CleanFilms, Clean Flix, Clean-Flicks, Family Focus Films
|
|
45
|
+
family flix
|
|
46
|
+
http://theeditedmovieencyclopedia.blogspot.com/2008/08/clean-play-dvds-grand-opening-e-mail.html has grande list
|
|
35
47
|
next timing thing (notes file)
|
|
36
48
|
|
|
37
|
-
== yes do, un-ordered currently, from the various release options ==
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if they disdain to choose a filename the whole thing exits.
|
|
45
|
-
an "advanced" screen for obscure things...
|
|
46
|
-
maybe after tooltips? I need some user feedback here...
|
|
47
|
-
note realtime: clearplay
|
|
48
|
-
tell them "I need it as a raw mpeg file, use makemkv with tsmuxer to transform it to an mpeg, or use mplayer to grab it"
|
|
49
|
-
"just look at the title track in the EDL, then..."
|
|
49
|
+
== yes do, un-ordered currently, from the various future release options ==
|
|
50
|
+
don't use eval!
|
|
51
|
+
warn/redirect if wrong looking file extension...
|
|
52
|
+
add the "create .edl file for xbmc et al" button
|
|
53
|
+
add a "watch edited from file" option...don't *force* too...?
|
|
54
|
+
check if some other buttons are outdated...
|
|
55
|
+
unit tests (all)
|
|
56
|
+
if they disdain to choose a save to filename the whole thing exits.
|
|
50
57
|
tell them "to edit easily..."
|
|
51
|
-
|
|
52
|
-
double check--are my ffmpeg splits really really really the same as mplayer's EDL splits? really?
|
|
53
|
-
"hardware DVD player/commercial DVD software"
|
|
58
|
+
double check--are my ffmpeg splits really really really the same as mplayer's EDL DVD splits? really?
|
|
54
59
|
"you could watch it under mplayer with the OSD turned on"
|
|
55
60
|
[+ button for same?]
|
|
56
|
-
"you could watch it with a normal DVD player (hardware or software, a la powerDDVD et al)"
|
|
57
|
-
add button for "convert from DVD Player [mplayer OSD, commercial]" to accurate timestamp [single timestamp]
|
|
58
|
-
"you could edit it in basically any editor--they are usually pretty accurate"
|
|
59
|
-
"you could edit your file "raw" file "with avidemux, except video will be slightly off, but audio will be on"
|
|
60
|
-
"VLC [or any GUI] is always slightly off."
|
|
61
61
|
can I avoid requiring use of tsmuxer first?
|
|
62
|
+
auto tsmuxer/mediainfo [yikes]?
|
|
63
|
+
MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr --vbv-len=500 V_MPEG-2, "G:\Video\c\title00.mkv", fps=23.976, ar=As source, track=1, lang=eng A_AC3, "G:\Video\c\title00.mkv", track=2, lang=eng
|
|
62
64
|
check with blu-ray...do they match timing-wise? sub-title wise?
|
|
63
65
|
donate tsmuxer, makemkv, http://ffmpeg.zeranoe.com/builds, mulder [?] smplayer
|
|
64
|
-
auto tsmuxer/mediainfo [yikes]?
|
|
65
|
-
MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr --vbv-len=500 V_MPEG-2, "G:\Video\c\title00.mkv", fps=23.976, ar=As source, track=1, lang=eng A_AC3, "G:\Video\c\title00.mkv", track=2, lang=eng
|
|
66
|
-
instructions: reference the sintel DVD :) (+download it from my site here)
|
|
67
66
|
add an mencoder convert with mplayer_breaks button :P
|
|
68
67
|
can I just use mencoder -hr-edl-seek (off mpeg) to avoid the fulli phase? please? does it work super-accurately, after that?
|
|
69
68
|
maybe just under an "advanced" window...
|
|
70
69
|
youtube/hulu timings
|
|
71
|
-
Watch...unedited smplayer button doesn't play from the right device if you have two :P
|
|
72
|
-
get LLC before a "real" domain name
|
|
73
|
-
always force them to have a DVD in the drive :P
|
|
74
|
-
upconverter
|
|
75
70
|
split LLC's website+consumer
|
|
76
|
-
|
|
77
|
-
|
|
71
|
+
get LLC before a "real" domain name
|
|
72
|
+
always force them to have a DVD in the drive :P ?
|
|
73
|
+
upconverter
|
|
74
|
+
employee instructions: watch @ realtime after profanity filter first pass :P
|
|
78
75
|
clear runnings
|
|
79
76
|
have ben and chris test it out, have it work, then ask about video quality
|
|
80
|
-
me try
|
|
81
|
-
try disney digital copy
|
|
77
|
+
me try
|
|
78
|
+
try disney digital copy
|
|
82
79
|
C player:
|
|
83
80
|
use DVD navigator
|
|
84
81
|
just use mplayer EDL syntax, plus a title track (or just detect track change, if long enough, assume... :P) :)
|
|
@@ -94,29 +91,16 @@
|
|
|
94
91
|
can come out of full screen more easily :P
|
|
95
92
|
note pay for XP http://windows.microsoft.com/en-US/windows/downloads/windows-media-player/plug-ins search for the cheapest
|
|
96
93
|
note to them windows vista/7: use ac3filter [?]
|
|
97
|
-
donate menumeter $
|
|
98
|
-
|
|
99
|
-
fix/create the "play previously created edited file for current DVD" button
|
|
100
|
-
vendorize smplayer * 2
|
|
101
|
-
test if latest smplayer can work with edl and seek [?]
|
|
102
|
-
be able to use smplayer, never just mplayer [yikes]
|
|
103
|
-
apparently just using webdl is like r30369 yipers
|
|
94
|
+
donate menumeter $ makemkv
|
|
95
|
+
reate the "play previously created edited file for current DVD" button
|
|
104
96
|
note better to previewer "you are about to preview these specific edits..." ?
|
|
105
97
|
ask for more beta testers for use, ask for more beta testers for creation, too
|
|
106
|
-
|
|
98
|
+
beta release: rinse and repeat with various ppl
|
|
107
99
|
youtube videos -> new account name
|
|
108
|
-
note "pay us/somebody to do it for you on the google group"?
|
|
109
|
-
note "this is the full list--your help is wanted/needed"
|
|
110
100
|
create a semi-accurate phantom edit EDL
|
|
111
101
|
http://www.chefelf.com/forums/index.php?showtopic=6176
|
|
112
102
|
karlie?
|
|
113
103
|
inventionzy: blu-ray OCR
|
|
114
|
-
accomodate 2 disk unique id's...yeah
|
|
115
|
-
don't exit program if they don't select a disk originally :) e.g. if they cancel out of "Please pick a DVD Delete list file"
|
|
116
|
-
tell them "you can open the file for more specific editing accuracy of timestamps via microsoft Windows Movie Maker" or whatever it is (try it out first :P)
|
|
117
|
-
7: Windows Live Movie Maker
|
|
118
|
-
previous: Windows Movie Maker
|
|
119
|
-
re-run with several DVD's
|
|
120
104
|
port to mac OS X--try everything out (all buttons), make sure all works...
|
|
121
105
|
appears that, for now, have to just use mplayer dvd://
|
|
122
106
|
ppc dvdid?
|
|
@@ -124,11 +108,8 @@
|
|
|
124
108
|
bundle a copy of smplayer locally?
|
|
125
109
|
typically delete unedited.fulli file automatically
|
|
126
110
|
except if it's a specific scene run test...
|
|
127
|
-
the final "edited.avi" really "could/should" be playable in WMP...
|
|
128
|
-
|
|
129
|
-
use smplayer with my mplayer always...unless I'm moving away from that...
|
|
130
|
-
@makemkv: show us the title numbers, and number them *by those*
|
|
131
|
-
generic EDL run through should be through smplayer...do I need the other way around, even?
|
|
111
|
+
the final "edited.avi" really "could/should" be playable in WMP...if possible
|
|
112
|
+
generic/consumer EDL run through should be through smplayer...do I need the other way around, even?
|
|
132
113
|
|
|
133
114
|
== other lists ==
|
|
134
115
|
|
|
@@ -142,7 +123,8 @@
|
|
|
142
123
|
canceling from the "dvd id" box exits the whole app LOL
|
|
143
124
|
|
|
144
125
|
== DVD-realtime backlog once do, now not do, unordered ==
|
|
145
|
-
|
|
126
|
+
investigate boxee edl (just fer fun...maybe possible?) http://getsatisfaction.com/boxee/topics/commercial_skipping_edl_support
|
|
127
|
+
investigate xbmc dvd edl
|
|
146
128
|
for mplayer realtime it needs to start early, but end on time
|
|
147
129
|
mplayer instructions are obscured
|
|
148
130
|
mplayer EDL allow this:
|
|
@@ -158,12 +140,17 @@
|
|
|
158
140
|
can I make playback more smooth by upping mplayer cache? does smplayer pass it a parameter?
|
|
159
141
|
lua VLC EDL plugin? LOL yeah right.
|
|
160
142
|
investigate: can I use zoomplayer max?
|
|
143
|
+
investigate dvdrsbvdl (windows media center edl plugin)
|
|
161
144
|
|
|
162
145
|
== DVD/DVD-realtime backlog (totally unordered, some very low prio, basically all never do) ==
|
|
163
|
-
|
|
146
|
+
@makemkv: show us the title numbers, and number them *by those*
|
|
164
147
|
@macports: set notestxt \
|
|
165
148
|
13 "The MPlayer developers do not believe in making regular releases. \
|
|
166
149
|
14 You are likely better off using the mplayer-devel port." *before* and after (?) (double check it--would one way work ok? mplayer)
|
|
150
|
+
can I use mplayer's "-edlout" to simplify something something, or maybe I should slave mode mplayer for my own means of the same?
|
|
151
|
+
create real plugins for boxee, XBMC et al
|
|
152
|
+
can "blur out" scenes, or specific pixels on frames, like that guy bleeping out his own profanity just lips plus bleep
|
|
153
|
+
a new button (maybe just in advanced mode?) "play EDL mplayer from file (no transcoding)" [if anybody ever would want/need it--seems related to the new c-based player kind of...?]
|
|
167
154
|
if it doesn't parse a file you choose it annoyingly loops *forever* "error pooping" "error pooping" [?]
|
|
168
155
|
"real" dvdid for blu-ray, can work with them (once I figure out timing info...)
|
|
169
156
|
accept the "user inputable" profanities, based on the DVD (like "thor" or what not...)
|
|
@@ -340,7 +327,8 @@ warn when labels both exist and don't match...
|
|
|
340
327
|
@mplayer warn before overwrite
|
|
341
328
|
@mplayer you cannot convert mkv files correctly you silly!
|
|
342
329
|
bounty dvdnav
|
|
343
|
-
fix dvdnav?
|
|
330
|
+
fix dvdnav stuffs?
|
|
331
|
+
ask swank if individuals can rent too?
|
|
344
332
|
|
|
345
333
|
== random non-DVD backlog ... or never do DVD. 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). ==
|
|
346
334
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.23.
|
|
1
|
+
0.23.3
|
data/bin/sensible-cinema
CHANGED
|
@@ -30,12 +30,14 @@ raise 'need jruby' unless OS.java?
|
|
|
30
30
|
raise 'need newer jruby!' unless RUBY_DESCRIPTION >= 'jruby 1.6.0' # may not need this since we still have to accomodate for so many oddities :P
|
|
31
31
|
|
|
32
32
|
alias system_original system
|
|
33
|
+
require 'fileutils'
|
|
33
34
|
require_relative '../lib/mencoder_wrapper'
|
|
34
35
|
require_relative '../lib/storage'
|
|
35
36
|
require_relative '../lib/edl_parser'
|
|
36
37
|
require_relative '../lib/mplayer_edl'
|
|
37
38
|
require_relative '../lib/play_audio'
|
|
38
39
|
require_relative '../lib/subtitle_profanity_finder'
|
|
40
|
+
require_relative '../lib/convert_thirty_fps'
|
|
39
41
|
|
|
40
42
|
require 'tmpdir'
|
|
41
43
|
require_relative '../lib/swing_helpers'
|
|
@@ -79,7 +81,7 @@ module SensibleSwing
|
|
|
79
81
|
# currently advanced mode only *adds* buttons
|
|
80
82
|
def new_jbutton title, only_on_create_mode, tooltip = nil
|
|
81
83
|
button = JButton.new title
|
|
82
|
-
button.tool_tip= tooltip
|
|
84
|
+
button.tool_tip = tooltip
|
|
83
85
|
button.set_bounds(44, @starting_button_y, @button_width, 23)
|
|
84
86
|
add = true
|
|
85
87
|
if we_are_in_create_mode
|
|
@@ -96,19 +98,29 @@ module SensibleSwing
|
|
|
96
98
|
button
|
|
97
99
|
end
|
|
98
100
|
|
|
99
|
-
def
|
|
100
|
-
|
|
101
|
+
def add_text_line line
|
|
102
|
+
return unless we_are_in_create_mode
|
|
103
|
+
jlabel = JLabel.new line
|
|
104
|
+
happy = Font.new("Tahoma", Font::PLAIN, 11)
|
|
105
|
+
jlabel.setFont(happy)
|
|
106
|
+
jlabel.set_bounds(44,@starting_button_y ,460,14)
|
|
107
|
+
@panel.add jlabel
|
|
108
|
+
increment_button_location 18
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def increment_button_location how_much = 30
|
|
112
|
+
@starting_button_y += how_much
|
|
101
113
|
end
|
|
102
114
|
|
|
103
115
|
def force_accept_license_first
|
|
104
116
|
require_blocking_license_accept_dialog 'Sensible Cinema', 'gplv3', 'http://www.gnu.org/licenses/gpl.html', 'Sensible Cinema license agreement',
|
|
105
117
|
"Sensible Cinema is distributed under the gplv3.\nBY CLICKING \"accept\" YOU SIGNIFY THAT YOU HAVE READ, UNDERSTOOD AND AGREED TO ABIDE BY THE TERMS OF THIS AGREEMENT"
|
|
106
|
-
require_blocking_license_accept_dialog 'Sensible Cinema', 'is_it_legal_to_copy_dvds.txt file', File.expand_path(File.dirname(__FILE__) + "/../is_it_legal_to_copy_dvds.txt"),
|
|
107
|
-
'is_it_legal_to_copy_dvds.txt file', 'I acknowledge that I have read, understand, accept and agree to abide by the implications noted in the is_it_legal_to_copy_dvds.txt file'
|
|
118
|
+
require_blocking_license_accept_dialog 'Sensible Cinema', 'is_it_legal_to_copy_dvds.txt file', File.expand_path(File.dirname(__FILE__) + "/../documentation/is_it_legal_to_copy_dvds.txt"),
|
|
119
|
+
'is_it_legal_to_copy_dvds.txt file', 'I acknowledge that I have read, understand, accept and agree to abide by the implications noted in the documentation/is_it_legal_to_copy_dvds.txt file'
|
|
108
120
|
Storage['main_license_accepted'] = VERSION
|
|
109
121
|
end
|
|
110
122
|
|
|
111
|
-
Storage = Storage.new("
|
|
123
|
+
Storage = Storage.new("sensible_cinema_storage")
|
|
112
124
|
|
|
113
125
|
def initialize
|
|
114
126
|
super "Sensible-Cinema #{VERSION} (GPL)"
|
|
@@ -123,10 +135,10 @@ module SensibleSwing
|
|
|
123
135
|
panel.set_layout nil
|
|
124
136
|
add panel # why can't I just slap these down?
|
|
125
137
|
|
|
126
|
-
jlabel = JLabel.new 'Welcome to Sensible Cinema!' + (we_are_in_create_mode ? " Hover over buttons for descriptions." : "")
|
|
138
|
+
jlabel = JLabel.new 'Welcome to Sensible Cinema!' + (we_are_in_create_mode ? " Hover over buttons for tooltip \"help\" descriptions." : "")
|
|
127
139
|
happy = Font.new("Tahoma", Font::PLAIN, 11)
|
|
128
140
|
jlabel.setFont(happy)
|
|
129
|
-
jlabel.set_bounds(44,44,
|
|
141
|
+
jlabel.set_bounds(44,44,460,14)
|
|
130
142
|
panel.add jlabel
|
|
131
143
|
@starting_button_y = 120
|
|
132
144
|
@button_width = 400
|
|
@@ -139,7 +151,7 @@ module SensibleSwing
|
|
|
139
151
|
do_mplayer_edl
|
|
140
152
|
}
|
|
141
153
|
|
|
142
|
-
@create = new_jbutton( "Create edited copy of DVD on Your Hard Drive
|
|
154
|
+
@create = new_jbutton( "Create edited copy of a DVD file on Your Hard Drive", false)
|
|
143
155
|
@create.tool_tip = <<-EOL
|
|
144
156
|
This grabs from your DVD and creates a new file on your hard disk like dvd_name_edited.mpg for you to watch later.
|
|
145
157
|
The file you create will contain the whole movie edited.
|
|
@@ -149,17 +161,19 @@ module SensibleSwing
|
|
|
149
161
|
do_copy_dvd_to_hard_drive false
|
|
150
162
|
}
|
|
151
163
|
|
|
152
|
-
@create_new_edl_for_current_dvd = new_jbutton("Create new Delete List for a
|
|
153
|
-
"If your DVD doesn't have an EDL created for it, this will be your first step--create
|
|
164
|
+
@create_new_edl_for_current_dvd = new_jbutton("Create new Delete List for a DVD", true,
|
|
165
|
+
"If your DVD doesn't have an EDL created for it, this will be your first step--create an EDL file for it.")
|
|
154
166
|
@create_new_edl_for_current_dvd.on_clicked do
|
|
155
167
|
create_brand_new_edl
|
|
156
168
|
end
|
|
157
169
|
|
|
158
|
-
@open_help_file = new_jbutton("
|
|
159
|
-
|
|
170
|
+
@open_help_file = new_jbutton("View Sensible Cinema Documentation", false).on_clicked do
|
|
171
|
+
system_blocking("explorer \"#{__DIR__.to_filename}..\\documentation\"") rescue nil # says it fails in error...
|
|
160
172
|
end
|
|
161
173
|
|
|
162
|
-
|
|
174
|
+
add_text_line 'Realtime create Options:'
|
|
175
|
+
|
|
176
|
+
@open_list = new_jbutton("Open/Edit a previously created Delete List", true, "If your DVD has a previously existing EDL for it, you can open it to edit it with this button.")
|
|
163
177
|
@open_list.on_clicked {
|
|
164
178
|
dialog = FileDialog.new(self, "Pick file to edit")
|
|
165
179
|
dialog.set_directory EDL_DIR
|
|
@@ -175,7 +189,7 @@ module SensibleSwing
|
|
|
175
189
|
This is useful if you want to just kind of watch the movie to enjoy it, and look for scenes to cut out.
|
|
176
190
|
You can use the built-in OSD (on-screen-display) to see what time frame the questionable scenes are at
|
|
177
191
|
(type "o" to toggle it). However, just realize that the OSD is in 30 fps, and our time stamps are all in 29.97
|
|
178
|
-
fps, so you'll need to convert it to be able to use it in a file.
|
|
192
|
+
fps, so you'll need to convert it (the convert timestamp button) to be able to use it in a file.
|
|
179
193
|
EOL
|
|
180
194
|
@play_smplayer.on_clicked {
|
|
181
195
|
play_dvd_smplayer_unedited
|
|
@@ -183,21 +197,79 @@ module SensibleSwing
|
|
|
183
197
|
|
|
184
198
|
@play_mplayer_raw = new_jbutton( "Watch full DVD unedited (realtime mplayer)", true)
|
|
185
199
|
@play_mplayer_raw.tool_tip = <<-EOL
|
|
186
|
-
This is also useful for comparing subtitle files to see
|
|
187
|
-
|
|
188
|
-
If you turn on subtitles (v button), then compare your file at say, the 1 hour mark, or 2 hour mark,
|
|
200
|
+
This is also useful for comparing subtitle files to see if they have accurate timings.
|
|
201
|
+
If you turn on subtitles (use the v button), then compare your srt file at say, the 1 hour mark, or 2 hour mark,
|
|
189
202
|
with the subtitles that mplayer displays, it *should* match exactly with the output in the command line,
|
|
190
|
-
like "
|
|
203
|
+
like "V: 3600.0" should match your subtitle line "01:00:00,000 --> ..."
|
|
191
204
|
EOL
|
|
192
205
|
@play_mplayer_raw.on_clicked {
|
|
193
206
|
play_dvd_smplayer_unedited true
|
|
194
207
|
}
|
|
195
208
|
|
|
196
|
-
# @watch_created_file = new_jbutton( "Watch edited file
|
|
209
|
+
# @watch_created_file = new_jbutton( "Watch the edited file version of DVD", false).on_clicked {
|
|
197
210
|
# raise 'todo' # TODO
|
|
198
211
|
# }
|
|
199
212
|
|
|
200
|
-
|
|
213
|
+
# TODO "Watch a file using an EDL on it"
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
@display_unique = new_jbutton( "Display current DVD's unique ID", true )
|
|
217
|
+
@display_unique.tool_tip = "This is useful to setup a DVD's 'unique ID' within an EDL for it. \nIf your EDL doesn't have a line like disk_unique_id => \"...\" then you will want to run this to be able to add that line in."
|
|
218
|
+
@display_unique.on_clicked {
|
|
219
|
+
drive, volume, dvd_id = choose_dvd_drive
|
|
220
|
+
# display it, allow them to copy and paste it out
|
|
221
|
+
show_copy_pastable_string("#{drive} #{volume} for your copying+pasting pleasure (highlight, then ctrl+c to copy)\n
|
|
222
|
+
This is USED to identify a disk to match it to its EDL, later.", "\"disk_unique_id\" => \"#{dvd_id}\",")
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
@convert_timestamp = new_jbutton( "Convert timestamp from DVD player time to EDL time", true)
|
|
226
|
+
@convert_timestamp.tool_tip=<<-EOL
|
|
227
|
+
Our EDL's assume 29.97 fps (which is what a DVD is). Unfortunately most hardware/commercial DVD players
|
|
228
|
+
assume that the DVD is 30 fps, which means that if you watch a movie with them, then use those timestamps
|
|
229
|
+
for your EDL file, you will be off, at the end of a 2 hour film, by 8 seconds. So all your edits will be wrong.
|
|
230
|
+
How to fix: convert your times from "DVD player" time to "EDL accurate" time by using this button.
|
|
231
|
+
This is necessary for hardware DVD player timestamps, PowerDVD, Windows Media Player (playing a DVD),
|
|
232
|
+
but not necessary for smplayer timestamps (or mplayer's "V: 3600" in the command line), which are already 29.97.
|
|
233
|
+
smplayer's on-screen-display (the 'o' key) is accurate (and doesn't suffer from dvd_mplayer_splits)
|
|
234
|
+
but is 30 fps, so timestamps would need to be converted.
|
|
235
|
+
Dont use VLC for DVD timestamps at all--it can get up to 30s off! VLC playing back a file is usually pretty accurate to 29.97.
|
|
236
|
+
In general, GUI's like VLC or smplayer are always a tidge off (maybe 0.3s) from the right timestamp, so take that into consideration.
|
|
237
|
+
Mplayers "V: 3600" is usually right on, however.
|
|
238
|
+
EOL
|
|
239
|
+
@convert_timestamp.on_clicked {
|
|
240
|
+
thirty_fps = get_user_input("Enter your DVD (30 fps) timestamp, I'll convert it to 29.97 (usable in EDL's):", "1:00:00.1")
|
|
241
|
+
thirty_fps_in_seconds = EdlParser.translate_string_to_seconds thirty_fps
|
|
242
|
+
twenty_nine_seven_fps = ConvertThirtyFps.from_thirty(thirty_fps_in_seconds)
|
|
243
|
+
human_twenty_nine_seven = EdlParser.translate_time_to_human_readable twenty_nine_seven_fps, true
|
|
244
|
+
show_copy_pastable_string("29.97 (sensible cinema usable) value would be: ", human_twenty_nine_seven)
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
@parse_srt = new_jbutton("Parse a subtitle file (.srt) to detect profanities", true)
|
|
248
|
+
@parse_srt.tool_tip = <<-EOL
|
|
249
|
+
You can download a .srt file and parse it to automaticaly search for profanities.
|
|
250
|
+
Basically download it from opensubtitles.org (possibly from other places, too),
|
|
251
|
+
(enter dvd name in the search box, click a result, click one from the list with an English flag, then click 'Download(zip)')
|
|
252
|
+
Once you download the zip, unzip it, and then compare the timestamps in it with those on the DVD (see the button "Watch DVD unedited (realtime mplayer)")
|
|
253
|
+
EOL
|
|
254
|
+
@parse_srt.on_clicked {
|
|
255
|
+
fc = new_filechooser
|
|
256
|
+
fc.set_title "Pick srt file:"
|
|
257
|
+
if old_dir = Storage['old_srt_dir']
|
|
258
|
+
fc.set_current_directory JFile.new(old_dir)
|
|
259
|
+
end
|
|
260
|
+
filename = fc.go
|
|
261
|
+
Storage['old_srt_dir'] = fc.get_current_directory.to_s
|
|
262
|
+
Storage['start_time']
|
|
263
|
+
|
|
264
|
+
parsed = SubtitleProfanityFinder.edl_output [filename]
|
|
265
|
+
File.write(EdlTempFile, "# add these into your mute section if they apply\n" + parsed)
|
|
266
|
+
open_file_to_edit_it EdlTempFile
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
add_text_line 'Create Options that first create a local intermediary file unless it already exists:'
|
|
271
|
+
|
|
272
|
+
@preview_section = new_jbutton( "Preview a certain time frame from fulli file (edited)", true )
|
|
201
273
|
@preview_section.tool_tip = <<-EOL
|
|
202
274
|
This allows you to preview an edit easily.
|
|
203
275
|
It is the equivalent of saying \"watch this file edited from exactly minute x second y to minute z second q"
|
|
@@ -207,28 +279,34 @@ module SensibleSwing
|
|
|
207
279
|
do_copy_dvd_to_hard_drive true
|
|
208
280
|
}
|
|
209
281
|
|
|
210
|
-
@preview_section_unedited = new_jbutton("Preview a certain time frame (unedited)", true)
|
|
282
|
+
@preview_section_unedited = new_jbutton("Preview a certain time frame from fulli file (unedited)", true)
|
|
211
283
|
@preview_section.tool_tip = "Allows you to view a certain time frame unedited (ex: 10:00 to 10:05), so you can narrow down to pinpoint where questionable scenes are, etc. This is the only way to view a specific scene if there are not cuts within that scene yet."
|
|
212
284
|
@preview_section_unedited.on_clicked {
|
|
213
285
|
do_copy_dvd_to_hard_drive true, false, true
|
|
214
286
|
}
|
|
215
287
|
|
|
216
|
-
@rerun_preview = new_jbutton( "Re-run most recently watched preview time frame", true )
|
|
288
|
+
@rerun_preview = new_jbutton( "Re-run most recently watched preview time frame from fulli file", true )
|
|
217
289
|
@rerun_preview.tool_tip = "This will re-run the preview that you most recently performed. Great for checking to see if you last edits were successful or not."
|
|
218
290
|
@rerun_preview.on_clicked {
|
|
219
291
|
repeat_last_copy_dvd_to_hard_drive
|
|
220
292
|
}
|
|
221
293
|
|
|
222
|
-
|
|
223
|
-
@fast_preview
|
|
294
|
+
# Maybe this button should go too...
|
|
295
|
+
@fast_preview = new_jbutton("fast preview all from fulli file (smplayer EDL)", true)
|
|
296
|
+
@fast_preview.tool_tip = <<-EOL
|
|
297
|
+
Plays smplayer on a file with an EDL.
|
|
298
|
+
This gives you a rough estimate to see if your edits are accurate, and is really fast to seek, etc.
|
|
299
|
+
This is useful because you can't use mplayer on a DVD for accurate timestamps if it has any
|
|
300
|
+
timestamp splits in it [because some DVD's are buggy]
|
|
301
|
+
EOL
|
|
224
302
|
@fast_preview.on_clicked {
|
|
225
303
|
success, wrote_to_here_fulli = do_copy_dvd_to_hard_drive false, true
|
|
226
304
|
sleep 0.5 # lodo take out ???
|
|
227
305
|
background_thread.join if background_thread # let it write out the original fulli, if necessary [?]
|
|
228
306
|
nice_file = wrote_to_here_fulli #+ ".fast.mpg"
|
|
229
307
|
if false#!File.exist?(nice_file)
|
|
230
|
-
p = show_non_blocking_message_dialog("Creating quick lookup file--NB that for each changed deletion,
|
|
231
|
-
you'll need to restart the fast preview SMplayer
|
|
308
|
+
p = show_non_blocking_message_dialog("Creating quick lookup file--NB that for each changed deletion setting,
|
|
309
|
+
you'll need to save your file and restart the fast preview SMplayer instance.
|
|
232
310
|
Also note that the start and end times will be slightly off if reality [delayed]
|
|
233
311
|
Also note that while doing fast preview, it can be doing a normal preview as well
|
|
234
312
|
in the background, simultaneously.")
|
|
@@ -241,54 +319,16 @@ module SensibleSwing
|
|
|
241
319
|
set_smplayer_opts "-edl #{EdlTempFile}"
|
|
242
320
|
thread = do_mplayer_edl( "smplayer_portable #{nice_file}") # note the smplayer, but it's for the fast file...
|
|
243
321
|
}
|
|
244
|
-
|
|
245
|
-
# TODO remove me...
|
|
246
|
-
@watch_unedited = new_jbutton("Watch full DVD unedited (while simultaneously grabbing file to hard drive)", true)
|
|
247
|
-
@watch_unedited.on_clicked {
|
|
248
|
-
success_no_run, wrote_to_here_fulli = do_copy_dvd_to_hard_drive false, true, true
|
|
249
|
-
sleep 5 unless success_no_run
|
|
250
|
-
command = "smplayer_portable #{wrote_to_here_fulli}"
|
|
251
|
-
system_non_blocking command
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
# until I can let them know *why* they would ever need this button...
|
|
255
|
-
@display_unique = new_jbutton( "Calculate DVD's unique ID", true )
|
|
256
|
-
@display_unique.tool_tip = "This is useful to setup a DVD's 'unique ID' within an EDL for it. If your EDL doesn't have a line like disk_unique_id => \"...\" then you will want to run this to add it in."
|
|
257
|
-
@display_unique.on_clicked {
|
|
258
|
-
drive, volume, dvd_id = choose_dvd_drive
|
|
259
|
-
# display it, allow them to copy and paste it out
|
|
260
|
-
get_user_input("#{drive} #{volume} for your copying+pasting pleasure (highlight, then ctrl+c to copy)\n
|
|
261
|
-
This is USED to identify a disk to match it to its EDL, later.", "\"disk_unique_id\" => \"#{dvd_id}\",")
|
|
262
|
-
}
|
|
263
322
|
|
|
264
|
-
|
|
323
|
+
add_text_line 'Contact:'
|
|
324
|
+
|
|
325
|
+
@upload = new_jbutton("Upload/E-mail suggestion/Contact/Submit anything", true) # keep this one last! :)
|
|
265
326
|
@upload.tool_tip = "We welcome all feedback! For example if you create a new DVD EDL, please submit it back to us so that others can benefit from it!"
|
|
266
327
|
@upload.on_clicked {
|
|
267
328
|
system_non_blocking("start mailto:sensible-cinema@googlegroups.com")
|
|
268
329
|
system_non_blocking("start http://groups.google.com/group/sensible-cinema")
|
|
269
330
|
}
|
|
270
331
|
|
|
271
|
-
@parse_srt = new_jbutton("Parse a subtitle file (.srt) to detect profanities", true)
|
|
272
|
-
@parse_srt.tool_tip = <<-EOL
|
|
273
|
-
You can download a .srt file and parse it to automaticaly search for profanities.
|
|
274
|
-
Basically download it from opensubtitles.org (possibly from other places, too),
|
|
275
|
-
(enter dvd name in the search box, click a result, click one from the list with an English flag, then click 'Download(zip)')
|
|
276
|
-
Once you download the zip, unzip it, and then compare the timestamps in it with those on the DVD (see the button "Watch DVD unedited (realtime mplayer)")
|
|
277
|
-
EOL
|
|
278
|
-
@parse_srt.on_clicked {
|
|
279
|
-
fc = new_filechooser
|
|
280
|
-
fc.set_title "Pick srt file:"
|
|
281
|
-
if old_dir = Storage['old_srt_dir']
|
|
282
|
-
fc.set_current_directory JFile.new(old_dir)
|
|
283
|
-
end
|
|
284
|
-
filename = fc.go
|
|
285
|
-
Storage['old_srt_dir'] = fc.get_current_directory.to_s
|
|
286
|
-
Storage['start_time']
|
|
287
|
-
|
|
288
|
-
parsed = SubtitleProfanityFinder.edl_output [filename]
|
|
289
|
-
File.write(EdlTempFile, "# add these into your mute section if they apply\n" + parsed)
|
|
290
|
-
open_file_to_edit_it EdlTempFile
|
|
291
|
-
}
|
|
292
332
|
|
|
293
333
|
@progress_bar = JProgressBar.new(0, 100)
|
|
294
334
|
@progress_bar.set_bounds(44,@starting_button_y,@button_width,23)
|
|
@@ -314,18 +354,16 @@ module SensibleSwing
|
|
|
314
354
|
check_for_dependencies
|
|
315
355
|
end
|
|
316
356
|
|
|
317
|
-
require 'fileutils'
|
|
318
|
-
|
|
319
357
|
def set_smplayer_opts to_this
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
358
|
+
smplayer_prefs_file = File.expand_path("~/.smplayer/smplayer.ini")
|
|
359
|
+
old_prefs = File.read(smplayer_prefs_file) rescue ''
|
|
360
|
+
old_prefs = "[advanced]\nmplayer_additional_options=" unless old_prefs.contain? 'mplayer_additional_options='
|
|
361
|
+
new_prefs = old_prefs.gsub(/mplayer_additional_options=.*/, "mplayer_additional_options=#{to_this}")
|
|
362
|
+
FileUtils.mkdir_p File.dirname(smplayer_prefs_file) # case it doesn't exist'
|
|
363
|
+
File.write(smplayer_prefs_file, new_prefs)
|
|
364
|
+
p 'wrote', new_prefs.length, smplayer_prefs_file, to_this
|
|
365
|
+
# no worky doze File.write(File.expand_path('~/.mplayer/config'), to_this)
|
|
366
|
+
smplayer_prefs_file
|
|
329
367
|
end
|
|
330
368
|
|
|
331
369
|
def create_brand_new_edl
|
|
@@ -431,7 +469,7 @@ module SensibleSwing
|
|
|
431
469
|
command = "#{exe} dvdnav://#{title_track_maybe_nil}/#{drive} -osd-fractions 2 -nocache "
|
|
432
470
|
p command
|
|
433
471
|
@play_smplayer_warn ||= show_non_blocking_message_dialog "Directions:
|
|
434
|
-
'o' key: turn on on-screen
|
|
472
|
+
'o' key: turn on on-screen-display timestamps (note: these are 30 fps timestamps so will need to be converted to use).
|
|
435
473
|
'v' key: turn off subtitles.
|
|
436
474
|
'.' key: step one frame.
|
|
437
475
|
'f' for full screen."
|
|
@@ -480,11 +518,11 @@ module SensibleSwing
|
|
|
480
518
|
puts 'Please confirm license agreement in open window.'
|
|
481
519
|
old = ['no', 'yes', 'ok'].map{|name| 'OptionPane.' + name + 'ButtonText'}.map{|name| [name, UIManager.get(name)]}
|
|
482
520
|
UIManager.put("OptionPane.yesButtonText", 'Accept')
|
|
483
|
-
UIManager.put("OptionPane.noButtonText", "View
|
|
521
|
+
UIManager.put("OptionPane.noButtonText", "View File (#{license_name})")
|
|
484
522
|
# cancel button stays the same...
|
|
485
523
|
|
|
486
524
|
message ||= "Sensible Cinema requires a separately installed program (#{program}). You can install this program
|
|
487
|
-
separately, or Sensible Cinema can download it for you.
|
|
525
|
+
separately to the vendor/cache directory, or Sensible Cinema can download it for you.
|
|
488
526
|
By clicking accept, below, you are confirming that you have read and agree to be bound by the
|
|
489
527
|
terms of its license (the #{license_name}), located at #{license_url_should_also_be_embedded_by_you_in_message}.
|
|
490
528
|
Click 'View License' to view it. If you do not agree to these terms, click 'Cancel'. You also agree that this is a
|
|
@@ -497,6 +535,7 @@ module SensibleSwing
|
|
|
497
535
|
# 2 is cancel
|
|
498
536
|
if returned == 1
|
|
499
537
|
system_non_blocking("start #{license_url_should_also_be_embedded_by_you_in_message}")
|
|
538
|
+
puts "Please restart after reading license agreement, to be able to then accept it."
|
|
500
539
|
System.exit 1
|
|
501
540
|
end
|
|
502
541
|
if returned == 2
|
|
@@ -639,12 +678,16 @@ module SensibleSwing
|
|
|
639
678
|
|
|
640
679
|
include_class javax.swing.UIManager
|
|
641
680
|
|
|
642
|
-
def get_user_input(message, default = '')
|
|
681
|
+
def get_user_input(message, default = '', cancel_ok = false)
|
|
643
682
|
received = JOptionPane.showInputDialog(message, default)
|
|
644
|
-
raise 'user canceled' unless received
|
|
683
|
+
raise 'user canceled' unless received unless cancel_ok
|
|
645
684
|
received
|
|
646
685
|
end
|
|
647
686
|
|
|
687
|
+
def show_copy_pastable_string(message, value)
|
|
688
|
+
get_user_input message, value, true
|
|
689
|
+
end
|
|
690
|
+
|
|
648
691
|
def parse_edl path
|
|
649
692
|
EdlParser.parse_file path
|
|
650
693
|
end
|
|
@@ -659,10 +702,10 @@ module SensibleSwing
|
|
|
659
702
|
edit_list_path = single_edit_list_matches_dvd(dvd_id)
|
|
660
703
|
if !edit_list_path && choose_file
|
|
661
704
|
fc = FileDialog.new(self)
|
|
662
|
-
fc.set_title "Please pick a DVD Delete List File (
|
|
705
|
+
fc.set_title "Please pick a DVD Delete List File (none found that seem to match #{dvd_volume_name})--or create one for it"
|
|
663
706
|
fc.set_directory EDL_DIR
|
|
664
707
|
edit_list_path = fc.go
|
|
665
|
-
raise 'cancelled' unless edit_list_path
|
|
708
|
+
raise 'cancelled choosing an EDL' unless edit_list_path
|
|
666
709
|
end
|
|
667
710
|
@_edit_list_path = edit_list_path
|
|
668
711
|
end
|
|
@@ -692,7 +735,7 @@ module SensibleSwing
|
|
|
692
735
|
@_get_import_from_filename ||=
|
|
693
736
|
begin
|
|
694
737
|
file_from_chooser = new_filechooser Storage['get_import_from_filename_dir']
|
|
695
|
-
file_from_chooser.set_title "Please choose the file that is your ripped version of #{dvd_title} title ##{dvd_title_track} (.mpg or .ts--see
|
|
738
|
+
file_from_chooser.set_title "Please choose the file that is your ripped version of #{dvd_title} title ##{dvd_title_track} (.mpg or .ts--see documentation/how_to_get_files_from_dvd.txt file)"
|
|
696
739
|
outgoing = file_from_chooser.go
|
|
697
740
|
Storage['get_import_from_filename_dir'] = File.dirname(outgoing)
|
|
698
741
|
outgoing
|
|
@@ -763,7 +806,7 @@ module SensibleSwing
|
|
|
763
806
|
save_to_edited = get_save_to_filename dvd_friendly_name
|
|
764
807
|
fulli = MencoderWrapper.calculate_fulli_filename save_to_edited
|
|
765
808
|
if exit_early_if_fulli_exists
|
|
766
|
-
if fulli_dot_done_file_exists
|
|
809
|
+
if fulli_dot_done_file_exists? save_to_edited
|
|
767
810
|
return [true, fulli]
|
|
768
811
|
end
|
|
769
812
|
# make it create a dummy response file for us :)
|
|
@@ -811,16 +854,15 @@ module SensibleSwing
|
|
|
811
854
|
to #{file_from} (#{dvd_title}).
|
|
812
855
|
Copying to #{save_to}.
|
|
813
856
|
EOL
|
|
814
|
-
if !fulli_dot_done_file_exists save_to
|
|
857
|
+
if !fulli_dot_done_file_exists? save_to
|
|
815
858
|
popup_message += "This could take quite awhile (several hours), and will prompt you with a chime noise when it is done.\n
|
|
816
859
|
You can close this window and minimize sensible cinema and continue using your computer while it runs in the background."
|
|
817
860
|
end
|
|
818
861
|
|
|
819
862
|
if !start_time
|
|
820
863
|
# assume a full run..
|
|
821
|
-
popup_message += "
|
|
864
|
+
popup_message += "NB that the created file will be playable only with VLC (possibly also with smplayer), but probably not with windows media player."
|
|
822
865
|
end
|
|
823
|
-
|
|
824
866
|
|
|
825
867
|
popup = show_non_blocking_message_dialog(popup_message, "OK")
|
|
826
868
|
|
|
@@ -910,8 +952,7 @@ module SensibleSwing
|
|
|
910
952
|
@saved_opticals = opticals # since we force them to have their disc already in there...guess this is ok for os x :)
|
|
911
953
|
return @_choose_dvd_drive
|
|
912
954
|
else
|
|
913
|
-
|
|
914
|
-
java.lang.System.exit 1
|
|
955
|
+
raise 'did not select a drive...'
|
|
915
956
|
end
|
|
916
957
|
end
|
|
917
958
|
|