sensible-cinema 0.28.1 → 0.34.0
Sign up to get free protection for your applications and to get access to all the features.
- data/{README → README.TXT} +35 -14
- data/Rakefile +49 -41
- data/TODO +337 -250
- data/VERSION +1 -1
- data/bin/sensible-cinema +15 -14
- data/bin/sensible-cinema-cli +1 -1
- data/business_ideas.txt +8 -0
- data/change_log_with_feature_list.txt +198 -1
- data/documentation/is_it_legal_to_copy_dvds.txt +44 -30
- data/goc.bat +1 -1
- data/gpl-2.0.txt +339 -0
- data/history_and_related_works_list.txt +37 -33
- data/{cone.png → inventionzy_files/cone.png} +0 -0
- data/legal_draft +23 -0
- data/lib/add_any_bundled_gems_to_load_path.rb +4 -3
- data/lib/check_installed_mac.rb +10 -10
- data/lib/count_down_timer_jruby_swing.rb +4 -4
- data/lib/edl_parser.rb +155 -142
- data/lib/extract/dumpstream.bat +1 -0
- data/lib/extract/get_init.bat +3 -0
- data/lib/extract/pause_early.rb +13 -0
- data/lib/gui/base.rb +707 -0
- data/lib/gui/create-file.rb +244 -0
- data/lib/gui/create.rb +565 -0
- data/lib/gui/dependencies.rb +177 -0
- data/lib/gui/normal.rb +190 -0
- data/lib/gui/{sensible-cinema-upconvert.rb → upconvert.rb} +33 -14
- data/lib/keyboard_input.rb +0 -2
- data/lib/mencoder_wrapper.rb +8 -3
- data/lib/movie_hasher.rb +27 -0
- data/lib/mplayer_edl.rb +1 -0
- data/lib/subtitle_profanity_finder.rb +141 -103
- data/lib/vlc_programmer.rb +1 -1
- data/lib/zoom_player_max_edl.rb +50 -0
- data/{developer_how_to_contribute_to_the_project.txt → notes_for_potential_developers.txt} +18 -11
- data/roadmap_possibilities +12 -0
- data/spec/arse.srt +6 -1
- data/spec/dragon.srt +3 -0
- data/spec/edl_parser.spec.rb +57 -52
- data/spec/mencoder_wrapper.spec.rb +26 -19
- data/spec/mplayer_edl.spec.rb +40 -10
- data/spec/notes +3043 -9
- data/spec/sensible_cinema_gui.spec.rb +8 -3
- data/spec/subtitle_profanity_finder.spec.rb +91 -36
- data/spec/zoom_player_max_edl.spec.rb +29 -0
- data/template_bats/README_DISTRO.TXT +3 -1
- data/template_bats/RUN SENSIBLE CINEMA CLICK HERE WINDOWS.bat +25 -0
- data/template_bats/mac/RUN SENSIBLE CINEMA CLICK HERE.command +2 -1
- data/template_bats/mac/advanced--create or edit sensible cinema edit list files.command +2 -1
- data/template_bats/mac/advanced--run-upconverting-video-player.command +2 -1
- data/template_bats/pc/advanced--create or edit sensible cinema edit list files.bat +2 -0
- data/template_bats/pc/advanced--run-upconverting-video-player.bat +2 -0
- data/todo.inventionzy.txt +69 -2
- data/todo.propaganda +34 -10
- data/todo.upconvert +8 -1
- data/{upconvert_netflix/latest2 → upconvert_from_screen}/go_upscaling.bat +0 -0
- data/{also_see_rogerdpack_youtube_account_and_sourceforge_files_movies_account → upconvert_from_screen/go_upscaling_works} +0 -0
- data/{upconvert_netflix → upconvert_from_screen/old}/latest2/combine_video.avs +0 -0
- data/{upconvert_netflix → upconvert_from_screen/old}/latest2/go_no_upscaling.bat +0 -0
- data/upconvert_from_screen/old/latest2/go_upscaling.bat +12 -0
- data/{upconvert_netflix → upconvert_from_screen/old}/latest2/push2.GRF +0 -0
- data/upconvert_from_screen/old/latest2/push3.grf +0 -0
- data/{upconvert_netflix → upconvert_from_screen/old}/latest2/setup_capture_coords.rb +0 -0
- data/{upconvert_netflix → upconvert_from_screen/old}/latest2/setup_directshow_filter_params.rb +0 -0
- data/{upconvert_netflix → upconvert_from_screen/old}/latest2/upconvert_from_screen_me2.avs +1 -1
- data/{upconvert_netflix → upconvert_from_screen}/old/latest_now_possibly_oudated/push2.GRF +0 -0
- data/{upconvert_netflix → upconvert_from_screen}/old/latest_now_possibly_oudated/upconvert_from_screen_me2.avs +0 -0
- data/{upconvert_netflix → upconvert_from_screen}/old/position_window.png +0 -0
- data/{upconvert_netflix → upconvert_from_screen}/old/push_source_desktop.GRF +0 -0
- data/{upconvert_netflix → upconvert_from_screen/old}/record_screen/record.bat +0 -0
- data/{upconvert_netflix → upconvert_from_screen}/old/upconvert_from_screen.avs +0 -0
- data/{upconvert_netflix → upconvert_from_screen}/old/upconvert_from_screen_me.avs +0 -0
- data/{upconvert_netflix → upconvert_from_screen}/old/upconvert_from_screen_me2.avs +0 -0
- data/{upconvert_netflix → upconvert_from_screen}/old/upconvert_from_screen_me_push_source.avs +0 -0
- data/{upconvert_netflix → upconvert_from_screen}/old/uscreen.GRF +0 -0
- data/{upconvert_netflix → upconvert_from_screen}/old/uscreen_me.GRF +0 -0
- data/upconvert_from_screen/push3.grf +0 -0
- data/upconvert_from_screen/upconvert_from_screen_me2.avs +19 -0
- data/vendor/mplayer_patches/apply.bat +12 -0
- data/vendor/{rdp-win32screenshot-0.0.9/RDP_BRANCH_HAS_MASTER_WITH_CORRECT_VERSION_NUMBER → mplayer_patches/configure_from_betterlogic} +0 -0
- data/vendor/mplayer_patches/libdvdnav/2905259c3b45529b3d8dedba572b6e4f67a2d8f4.diff +19 -0
- data/vendor/mplayer_patches/libdvdnav/83f1c9256f500285e46f1e44bcc74ffce90159db.diff +16 -0
- data/vendor/mplayer_patches/libdvdnav/eb91fb74680d30322461a1b9e425918ad4e2b2df.diff +21 -0
- data/vendor/mplayer_patches/libdvdnav/jump_to_time.diff +654 -0
- data/vendor/mplayer_patches/libdvdnav/non_strict.diff +13 -0
- data/vendor/mplayer_patches/mplayer_edl.diff +354 -0
- data/vendor/mplayer_patches/port_dir/PortIndex.quick +2 -0
- data/vendor/mplayer_patches/port_dir/how_to +13 -0
- data/vendor/mplayer_patches/port_dir/multimedia/mplayer-edl/Portfile +300 -0
- data/vendor/mplayer_patches/port_dir/multimedia/mplayer-edl/files/configure.x11.patch +20 -0
- data/vendor/mplayer_patches/port_dir/multimedia/mplayer-edl/files/llvm-gcc-workaround.patch +11 -0
- data/vendor/mplayer_patches/port_dir/multimedia/rdp-projects/Portfile +43 -0
- data/vendor/{rdp-win32screenshot-0.0.9/RDP_VERSION_IS_IN_RDP_BRANCH → mplayer_patches/updated_lib_too} +0 -0
- data/vendor/{readme.txt → readme.txt.setpriority} +0 -0
- data/www/content_editor.html +28 -28
- data/www/index.html +6 -1
- data/www/upconverting_movie_player.html +13 -3
- data/www/youtube_edl/.htaccess +44 -0
- data/{inventionzy_files/control_youtube.html → www/youtube_edl/control_youtube.rhtml} +39 -33
- data/www/youtube_edl/dispatch.fcgi +25 -0
- data/www/youtube_edl/render_edited.rb +25 -0
- data/{inventionzy_files/serve.rb → www/youtube_edl/server_this_dir.rb} +0 -0
- data/www/youtube_edl/todo +23 -0
- data/www/zoomplayer_max.png +0 -0
- data/zamples/edit_decision_lists/dvds/Harry Potter 2 chamber of secrets.txt +10 -5
- data/zamples/edit_decision_lists/dvds/aladdin.txt +30 -0
- data/zamples/edit_decision_lists/dvds/bambi.txt +1 -1
- data/zamples/edit_decision_lists/dvds/big_buck_bunny_dvd.txt +2 -0
- data/zamples/edit_decision_lists/dvds/bobs_big_plan.txt +2 -2
- data/zamples/edit_decision_lists/dvds/cars_2.txt +26 -0
- data/zamples/edit_decision_lists/dvds/cars_disney.txt +1 -1
- data/zamples/edit_decision_lists/dvds/condor_man_widescreen.txt +22 -0
- data/zamples/edit_decision_lists/dvds/court_jester.txt +10 -13
- data/zamples/edit_decision_lists/dvds/edls_being_edited/making_marriage_work.txt +15 -0
- data/zamples/edit_decision_lists/dvds/edls_being_edited/national_treasure.txt +23 -0
- data/zamples/edit_decision_lists/dvds/edls_being_edited/ratatouille.txt +35 -0
- data/zamples/edit_decision_lists/dvds/edls_being_edited/the_explorers.txt +49 -0
- data/zamples/edit_decision_lists/dvds/finding_neverland.txt +32 -0
- data/zamples/edit_decision_lists/dvds/flight_of_the_navigator.txt +22 -16
- data/zamples/edit_decision_lists/dvds/harry_potter_3_prisoner_of_azkaban.txt +21 -4
- data/zamples/edit_decision_lists/dvds/hitchhiker's_guide_to_the_galaxy.txt +1 -1
- data/zamples/edit_decision_lists/dvds/{edls_being_edited/king_of_kings.txt → king_of_kings.txt} +5 -5
- data/zamples/edit_decision_lists/dvds/nanny_mcphee.txt +31 -0
- data/zamples/edit_decision_lists/dvds/pack_jackson_wedding_2007-03-03.txt +9 -2
- data/zamples/edit_decision_lists/dvds/remember_the_titans.txt +35 -0
- data/zamples/edit_decision_lists/dvds/sintel_open_source_blender_ntsc_dvd.txt +8 -4
- data/zamples/edit_decision_lists/dvds/speed_racer.txt +1 -1
- data/zamples/edit_decision_lists/dvds/tangled.txt +21 -0
- data/zamples/edit_decision_lists/dvds/tron_legacy.txt +4 -1
- data/zamples/edit_decision_lists/files/conference_music_video.txt +10 -0
- data/zamples/edit_decision_lists/notes_on_movies_without_edls_yet/tron.txt +10 -0
- data/zamples/edit_decision_lists/old_not_yet_updated/example_edit_decision_list.txt +1 -1
- metadata +139 -117
- data/conclusions +0 -6
- data/documentation/how_to_create_your_own_delete_lists.txt +0 -69
- data/lib/gui/sensible-cinema-base.rb +0 -620
- data/lib/gui/sensible-cinema-create.rb +0 -331
- data/lib/gui/sensible-cinema-dependencies.rb +0 -28
- data/lib/gui/sensible-cinema-normal.rb +0 -351
- data/lib/gui/sensible-cinema-side-by-side.rb +0 -27
- data/lib/shutdown_kill.rb +0 -32
- data/lib/storage.rb +0 -105
- data/ocr.todo_if_need_speed +0 -6
- data/upconvert_netflix/record_screen/recording/1.png +0 -0
- data/upconvert_netflix/record_screen/recording/10.png +0 -0
- data/upconvert_netflix/record_screen/recording/2.png +0 -0
- data/upconvert_netflix/record_screen/recording/3.png +0 -0
- data/upconvert_netflix/record_screen/recording/4.png +0 -0
- data/upconvert_netflix/record_screen/recording/5.png +0 -0
- data/upconvert_netflix/record_screen/recording/6.png +0 -0
- data/upconvert_netflix/record_screen/recording/7.png +0 -0
- data/upconvert_netflix/record_screen/recording/8.png +0 -0
- data/upconvert_netflix/record_screen/recording/9.png +0 -0
- data/upconvert_netflix/record_screen/recording/d.png +0 -0
- data/vendor/monkey.png +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/.document +0 -5
- data/vendor/rdp-win32screenshot-0.0.9/History.rdoc +0 -53
- data/vendor/rdp-win32screenshot-0.0.9/LICENSE +0 -20
- data/vendor/rdp-win32screenshot-0.0.9/README.rdoc +0 -95
- data/vendor/rdp-win32screenshot-0.0.9/Rakefile +0 -63
- data/vendor/rdp-win32screenshot-0.0.9/VERSION +0 -1
- data/vendor/rdp-win32screenshot-0.0.9/enumerated +0 -55576
- data/vendor/rdp-win32screenshot-0.0.9/lib/aero_offscreen_srccopy_captureblt_doesnt_have_everything.bmp.gz +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/enumerate.rb +0 -6
- data/vendor/rdp-win32screenshot-0.0.9/lib/firefox.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/normal.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/normal2.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/notes +0 -5
- data/vendor/rdp-win32screenshot-0.0.9/lib/snapshot.rb +0 -10
- data/vendor/rdp-win32screenshot-0.0.9/lib/srccopy.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/srccopyplus.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/srccopyplusdirectx.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/vc.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/win32/screenshot.rb +0 -95
- data/vendor/rdp-win32screenshot-0.0.9/lib/win32/screenshot/bitmap_maker.rb +0 -200
- data/vendor/rdp-win32screenshot-0.0.9/lib/win32/util.rb +0 -93
- data/vendor/rdp-win32screenshot-0.0.9/spec/spec.opts +0 -1
- data/vendor/rdp-win32screenshot-0.0.9/spec/spec_helper.rb +0 -85
- data/vendor/rdp-win32screenshot-0.0.9/spec/win32_screenshot_spec.rb +0 -194
- data/vendor/rdp-win32screenshot-0.0.9/spec/win32_screenshot_util_spec.rb +0 -75
- data/vendor/rdp-win32screenshot-0.0.9/win32screenshot.gemspec +0 -69
- data/vendor/tsmuxer_1.10.6/licence.txt +0 -42
- data/zamples/edit_decision_lists/dvds/making_marriage_work.txt +0 -15
- data/zamples/edit_decision_lists/notes/tron.txt +0 -4
- data/zamples/edit_decision_lists/old_not_yet_updated/dvds/making marriage work.txt +0 -9
@@ -28,6 +28,8 @@ module SensibleSwing
|
|
28
28
|
MainWindow.new.dispose# doesn't crash :)
|
29
29
|
end
|
30
30
|
|
31
|
+
it "should have working is_dvd method for mac"
|
32
|
+
|
31
33
|
Test_DVD_ID = 'deadbeef|8b27d001'
|
32
34
|
|
33
35
|
it "should die if you file select a poorly formed edl" do
|
@@ -157,7 +159,8 @@ module SensibleSwing
|
|
157
159
|
end
|
158
160
|
|
159
161
|
after do
|
160
|
-
|
162
|
+
# too dangerous...if it ever joins on a swing thread lights out!
|
163
|
+
#Thread.join_all_others
|
161
164
|
FileUtils.rm_rf EdlParser::EDL_DIR
|
162
165
|
Dir.mkdir EdlParser::EDL_DIR
|
163
166
|
end
|
@@ -337,6 +340,8 @@ module SensibleSwing
|
|
337
340
|
end
|
338
341
|
|
339
342
|
it "if the .done files exists, do_copy... should just call smplayer ja" do
|
343
|
+
require 'tracer'
|
344
|
+
# Tracer.on
|
340
345
|
FileUtils.touch "selected_file.fulli_unedited.tmp.mpg.done"
|
341
346
|
@subject.do_create_edited_copy_via_file(false, true, true).should == [true, "selected_file.fulli_unedited.tmp.mpg"]
|
342
347
|
end
|
@@ -518,7 +523,7 @@ module SensibleSwing
|
|
518
523
|
MplayerEdl.stub(:convert_to_edl) do |d,s,s2,splits|
|
519
524
|
splits1 = splits
|
520
525
|
end
|
521
|
-
@subject.
|
526
|
+
@subject.play_smplayer_edl_non_blocking
|
522
527
|
splits1.should == []
|
523
528
|
end
|
524
529
|
|
@@ -528,7 +533,7 @@ module SensibleSwing
|
|
528
533
|
@subject.stub!(:choose_dvd_drive_or_file) {
|
529
534
|
["mock_dvd_drive", "mockVolume", "abcdef1234"]
|
530
535
|
}
|
531
|
-
@subject.
|
536
|
+
@subject.play_smplayer_edl_non_blocking
|
532
537
|
@show_blocking_message_dialog_last_arg.should =~ /does not contain mplayer replay information \[mplayer_dvd_splits\]/
|
533
538
|
end
|
534
539
|
end
|
@@ -26,32 +26,33 @@ describe SubtitleProfanityFinder do
|
|
26
26
|
|
27
27
|
output = SubtitleProfanityFinder.edl_output 'dragon.srt'
|
28
28
|
|
29
|
-
describe "
|
29
|
+
describe "h..." do
|
30
30
|
it "should include the bad line with timestamp" do
|
31
|
-
output.should match(/0:00:54.93.*"
|
31
|
+
output.should match(/0:00:54.93.*"h\.\.\."/)
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should include the description in its output" do
|
35
|
-
output.should include("e [
|
35
|
+
output.should include("e [h...] b")
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
describe "deity various" do
|
40
|
+
|
40
41
|
it "should parse output plural deity" do
|
41
42
|
output.should include("nordic [deitys] ")
|
42
43
|
end
|
43
44
|
|
44
45
|
it "should parse out deity singular and at very end" do
|
45
46
|
output = SubtitleProfanityFinder.edl_output 'deity_end.srt'
|
46
|
-
output.should include("fortress is our [
|
47
|
+
output.should include("fortress is our [vain use]")
|
47
48
|
end
|
48
49
|
|
49
|
-
it "should
|
50
|
+
it "should remove <i> et al " do
|
50
51
|
output = SubtitleProfanityFinder.edl_output 'deity_end.srt'
|
51
52
|
output.should_not include(" i ")
|
52
53
|
output.should_not include("<i")
|
53
54
|
output.should_not include("huntingand")
|
54
|
-
output.should_not include("
|
55
|
+
output.should_not include(" ")
|
55
56
|
end
|
56
57
|
|
57
58
|
end
|
@@ -59,9 +60,11 @@ describe SubtitleProfanityFinder do
|
|
59
60
|
describe 'full word only profanities' do
|
60
61
|
|
61
62
|
output2 = SubtitleProfanityFinder.edl_output 'arse.srt'
|
63
|
+
|
62
64
|
it 'should not parse it if it\'s in other words' do
|
63
65
|
output2.should_not include "a..ume"
|
64
|
-
output2.should_not include "
|
66
|
+
output2.should_not include "h...o"
|
67
|
+
output2.should_not include "he..o"
|
65
68
|
end
|
66
69
|
|
67
70
|
it 'should parse them at EOL' do
|
@@ -82,6 +85,10 @@ describe SubtitleProfanityFinder do
|
|
82
85
|
output2.should_not include "impa.."
|
83
86
|
end
|
84
87
|
|
88
|
+
it 'should let them end with a .' do
|
89
|
+
output2.should include "line end full word"
|
90
|
+
end
|
91
|
+
|
85
92
|
end
|
86
93
|
|
87
94
|
end
|
@@ -91,16 +98,41 @@ describe SubtitleProfanityFinder do
|
|
91
98
|
out.should include "45.46"
|
92
99
|
out.should include "51.59"
|
93
100
|
end
|
94
|
-
|
95
|
-
|
96
|
-
|
101
|
+
|
102
|
+
def test_this_added_text text, extra = {}
|
103
|
+
SubtitleProfanityFinder.edl_output_from_string(<<-EOL, extra, 0, 0, 0, 0, 100, 100)
|
97
104
|
6
|
98
105
|
00:00:55,068 --> 00:00:59,164
|
99
|
-
|
106
|
+
#{text}
|
100
107
|
|
101
108
|
EOL
|
102
|
-
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should remove some punctuation" do
|
112
|
+
out = test_this_added_text " .- (ab\nc)."
|
113
|
+
out[1][0].single_line_text.should == "(ab c)."
|
114
|
+
out = test_this_added_text "(abc)., "
|
115
|
+
out[1][0].single_line_text.should == "(abc)."
|
116
|
+
end
|
103
117
|
|
118
|
+
it "should let you set replacement text" do
|
119
|
+
out = test_this_added_text "a good day", {'good' => ['replace with', :partial_word, 'category']}
|
120
|
+
good = "\n \"0:00:55.07\" , \"0:00:59.16\", \"profanity\", \"category\", \"a [replace with] day\",\n\n"
|
121
|
+
out[0].should == good
|
122
|
+
out = test_this_added_text "a good day", {'good' => ['replace with', :full_word, 'category']}
|
123
|
+
out[0].should == good
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should accomodate lesser profanities" do
|
127
|
+
out = test_this_added_text "I believe in the Lord"
|
128
|
+
out[0].should include "55.0"
|
129
|
+
assert out[1][0].text =~ /l.../i
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should do full word with dashes" do
|
133
|
+
parsed, entries = test_this_added_text("I believe in heaven and-hell-")
|
134
|
+
assert parsed =~ /heaven/
|
135
|
+
assert parsed !~ /hel/
|
104
136
|
end
|
105
137
|
|
106
138
|
describe "it should take optional user params" do
|
@@ -121,43 +153,41 @@ a butt
|
|
121
153
|
|
122
154
|
describe "it should let you re-factor the timestamps on the fly if desired" do
|
123
155
|
|
124
|
-
# def self.edl_output_from_string subtitles, extra_profanity_hash, subtract_from_each_beginning_ts, add_to_end_each_ts, starting_timestamp_given, starting_timestamp_actual, ending_timestamp_given, ending_timestamp_actual^M
|
125
|
-
|
126
156
|
it "should subtract from beginning etc. etc." do
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
157
|
+
normal = S.edl_output 'dragon.srt'
|
158
|
+
normal.should =~ /0:00:50.23/
|
159
|
+
normal.should =~ /0:00:54.93/
|
160
|
+
subtract = S.edl_output 'dragon.srt', {}, 1.0
|
161
|
+
subtract.should =~ /0:00:49.23/
|
162
|
+
normal.should =~ /0:00:54.93/
|
163
|
+
add = S.edl_output 'dragon.srt', {}, 0.0, 1.0
|
164
|
+
add.should =~ /0:00:55.93/
|
165
|
+
add.should =~ /0:00:50.23/
|
136
166
|
end
|
137
167
|
|
138
168
|
it "should compensate for differing start timestamps" do
|
139
|
-
|
140
|
-
|
141
|
-
|
169
|
+
starts_ten_later_than_srt = S.edl_output 'dragon.srt', {}, 0.0, 0.0, 10.0, 20.0, 110, 120
|
170
|
+
starts_ten_later_than_srt.should =~ /0:01:00.23/ # 50.23 -> this
|
171
|
+
starts_ten_later_than_srt.should =~ /0:01:04.93/
|
142
172
|
end
|
143
173
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
174
|
+
it "should compensate for differing end timestamps with a multiple" do
|
175
|
+
lasts_longer = S.edl_output 'dragon.srt', {}, 0.0, 0.0, 0.0, 0.0, 60.0, 90.0 # actual ends 50% later
|
176
|
+
lasts_longer.should =~ /0:01:15.34/
|
177
|
+
lasts_longer.should =~ /0:01:22.39/
|
178
|
+
end
|
149
179
|
|
150
180
|
describe "combining different initial time offsets with total times" do
|
151
181
|
|
152
182
|
it "should combine different initial time offset with different total time" do
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
183
|
+
lasts_longer_with_initial_add = S.edl_output 'dragon.srt', {}, 0.0, 0.0, begin_srt = 0.0, begin_actual = 10.0, end_srt = 55.0, end_actual = 55.0
|
184
|
+
# this one starts off weird, but then ends at almost exactly the same!
|
185
|
+
lasts_longer_with_initial_add.should =~ /0:00:51.10/
|
186
|
+
lasts_longer_with_initial_add.should =~ /0:00:54.94/ # note--almost on
|
157
187
|
end
|
158
188
|
|
159
189
|
it "should be ok if they line up perfectly with just an offset" do
|
160
|
-
plus_ten = S.edl_output 'dragon.srt', {}, 0.0, 0.0, begin_srt =
|
190
|
+
plus_ten = S.edl_output 'dragon.srt', {}, 0.0, 0.0, begin_srt = 0.0, begin_actual = 10.0, end_srt = 55.0, end_actual = 65.0
|
161
191
|
plus_ten.should =~ /0:01:00.23/
|
162
192
|
plus_ten.should =~ /0:01:04.93/
|
163
193
|
end
|
@@ -166,4 +196,29 @@ a butt
|
|
166
196
|
|
167
197
|
end
|
168
198
|
|
199
|
+
it "should split to human friendlier entries" do
|
200
|
+
yo = S.split_to_entries File.read('dragon.srt')
|
201
|
+
for entry in yo
|
202
|
+
ts_begin = entry.beginning_time
|
203
|
+
ts_end = entry.ending_time
|
204
|
+
for timestamp in [ts_begin, ts_end]
|
205
|
+
assert timestamp.present?
|
206
|
+
assert timestamp.is_a? Float
|
207
|
+
end
|
208
|
+
assert ts_end > ts_begin
|
209
|
+
assert entry.text =~ /\n/m
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
it "should capture times and tweak them, and keep punctuation" do
|
214
|
+
out = S.edl_output_from_string <<-EOL, {}, 0,0,88, 88.16, 7296.5, 7292.4, true
|
215
|
+
1
|
216
|
+
00:01:28,000 --> 00:01:29,036
|
217
|
+
Grandpa(sris)! your's is here?!.,
|
218
|
+
|
219
|
+
EOL
|
220
|
+
assert out[1][0].beginning_time == 88.16
|
221
|
+
out[1][0].text.should match /\(sris\)!/
|
222
|
+
end
|
223
|
+
|
169
224
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
=begin
|
2
|
+
Copyright 2010, Roger Pack
|
3
|
+
This file is part of Sensible Cinema.
|
4
|
+
|
5
|
+
Sensible Cinema is free software: you can redistribute it and/or modify
|
6
|
+
it under the terms of the GNU General Public License as published by
|
7
|
+
the Free Software Foundation, either version 3 of the License, or
|
8
|
+
(at your option) any later version.
|
9
|
+
|
10
|
+
Sensible Cinema is distributed in the hope that it will be useful,
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
GNU General Public License for more details.
|
14
|
+
|
15
|
+
You should have received a copy of the GNU General Public License
|
16
|
+
along with Sensible Cinema. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
=end
|
18
|
+
require File.dirname(__FILE__) + "/common"
|
19
|
+
require_relative '../lib/zoom_player_max_edl'
|
20
|
+
|
21
|
+
describe ZoomPlayerMaxEdl do
|
22
|
+
|
23
|
+
it "should create an edl" do
|
24
|
+
specs = {"name"=>"national treasure", "mutes"=>[], "blank_outs"=>[["01:00:00.0", "01:00:10.0", "violence", "of some sort"]], "dvd_nav_packet_offset"=>[0.4, 0.6143], "volume_name"=>"NATIONAL_TREASURE", "disk_unique_id"=>"91a5aeec|5178a204", "dvd_title_track"=>"1", "dvd_title_track_length"=>7856.8, "dvd_start_offset"=>"0.28", "timestamps_relative_to"=>["dvd_start_offset", "29.97"]}
|
25
|
+
out = ZoomPlayerMaxEdl.convert_to_edl_string specs
|
26
|
+
assert out == "DVDTitle(1)\nCutSegment(\"Start=3596.6178964036\",\"End=3606.60790639361\")\n"
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -3,4 +3,6 @@ For description of the program, see https://github.com/rdp/sensible-cinema/blob/
|
|
3
3
|
For detailed installation/instructions, see http://rogerdpack.t28.net/sensible-cinema
|
4
4
|
|
5
5
|
pc users, use the pc subdirectory
|
6
|
-
mac users, see http://rogerdpack.t28.net/sensible-cinema/content_editor.html for a list of prerequisites and use the mac subdirectory
|
6
|
+
mac users, see http://rogerdpack.t28.net/sensible-cinema/content_editor.html for a list of prerequisites and use the mac subdirectory
|
7
|
+
|
8
|
+
More documentation for it here: https://github.com/rdp/sensible-cinema/wiki
|
@@ -0,0 +1,25 @@
|
|
1
|
+
@echo Welcome to Sensible Cinema...
|
2
|
+
@IF NOT EXIST sensible-cinema\VENDOR\CACHE GOTO NOVENDORDIR
|
3
|
+
@echo This window will display lots of debug output
|
4
|
+
@echo (you can just ignore this window or minimize it, but have to leave it open)
|
5
|
+
@setlocal
|
6
|
+
@rem disable any local rubyopt settings, just in case...
|
7
|
+
@set RUBYOPT=
|
8
|
+
@rem check for java installed...we will be needing that :)
|
9
|
+
@java -version > NUL 2>&1 || echo need to install java JRE first please install it from java.com && pause && GOTO DONE
|
10
|
+
|
11
|
+
@cd sensible-cinema
|
12
|
+
@java -cp "./vendor/jruby-complete-1.6.2.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
|
13
|
+
|
14
|
+
@rem taskkill /f /im mencoder.exe ???
|
15
|
+
|
16
|
+
GOTO DONE
|
17
|
+
|
18
|
+
:NOVENDORDIR
|
19
|
+
@echo "it appears you downloaded sensible cinema straight from github--please download it instead fromhttps://sourceforge.net/projects/sensible-cinema/files/ for it to work properly"
|
20
|
+
@pause
|
21
|
+
@start https://sourceforge.net/projects/sensible-cinema/files
|
22
|
+
|
23
|
+
@rem fall through
|
24
|
+
|
25
|
+
:DONE
|
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env bash
|
2
|
-
cd
|
2
|
+
DIR="$( cd "$( dirname "$0" )" && pwd )"
|
3
|
+
cd $DIR/../sensible-cinema
|
3
4
|
java -Xdock:name="Sensible Cinema" -Xdock:icon="./vendor/profs.png" -cp "./vendor/jruby-complete-1.6.2.jar" org.jruby.Main bin/sensible-cinema $1 $2 $3 || (echo ERROR. Please look for error message, above, and report back the error you see, or fix it && read -p "Press any key to continue...")
|
4
5
|
|
data/todo.inventionzy.txt
CHANGED
@@ -3,8 +3,14 @@
|
|
3
3
|
more blu-ray stuff: can ID them, can playback (through...mkv? VLC? powerdvd OCr/scripted?)
|
4
4
|
some blu-ray player descriptor somehow
|
5
5
|
accomodate splits vs. blanks and work
|
6
|
-
|
6
|
+
|
7
|
+
it can "resync" based on lipsync'ing or some user input (back, forward buttons to subtly resync edits with a currently playing back video) or
|
8
|
+
with user input "tell me where this subtitle is, for you, and also this one" to synchronize it (+- auto-playing to "around" that level so they can check more easily),
|
9
|
+
or you can ask them manually for time entry for the same.
|
10
|
+
OCR'ing subtitles on the fly (or, cache'd OCR'ing them on the fly, to give it time to process) to synchronize or check for profanity or other "questionable" content
|
11
|
+
|
7
12
|
post a demo of it playing back blu-ray edited local computer, +- projector, +- playon (?)
|
13
|
+
can infer a rating based on (looking it upon imdb, letting people vote, etc.)
|
8
14
|
I can forsee some browser window that pulls up some sweet player [mod vlc plugin?] somehow something quality anyway, to play local media, or remote
|
9
15
|
or same thing but for upconverting...but how?
|
10
16
|
bounty NACL VLC :P
|
@@ -17,6 +23,8 @@
|
|
17
23
|
make it so an EDL can be "split" (or subtitles split, same way) so that it can span across multiple youtube videos that have been divided in some way.
|
18
24
|
it can query the currently open browser window, check to see which movie it's playing, and auotmatically spawn off a correct player instance with EDL for that movie
|
19
25
|
based on title or url.
|
26
|
+
when playing a movie, it identifies by colors/tones the movie or the scene, to edit accordingly
|
27
|
+
when there's a profanity mute, to display some extra text on the screen like "and I really want you to be happy!" I guess it could just be like a transparent overlay on the movie
|
20
28
|
netflix "try this srt, does it match?" no "what about this one, now?"
|
21
29
|
it can "infer" where the thumb slider would be, and "drag" it to where it infers the new timestamp location should likely be, for skipping et al.
|
22
30
|
people can "vote" on certain sections, if they're profanity or not, should be skipped or not
|
@@ -88,6 +96,65 @@
|
|
88
96
|
maybe could just "play from x to y" [no exclude info?] instead of "here are the bad parts"
|
89
97
|
stage one: query, auto-download when they hit a netflix movie of some type
|
90
98
|
stage two: chrome plugin for the same, auto-detect, auto-user, auto-download, auto-watch edited :)
|
91
|
-
can insert deleted scenes et al [even external scenes :P] (already showed it somewhat)
|
99
|
+
can insert deleted scenes et al [even external scenes :P] (already showed it able to even do this somewhat)
|
100
|
+
can overlay with an alpha transparent other video, which video is sped up from its original form.
|
101
|
+
or which video is itself edited for content, or displayed with realtime content editing/edited movies.
|
102
|
+
it can overlay with enhanced/modified "other video image" files.
|
103
|
+
it can overlay audiobooks
|
104
|
+
it can overlay it with edited audiobooks/sped up/modified somehow audiobooks
|
105
|
+
it can "enhance" movies, like sharpen them, magnify, zoom, et al
|
106
|
+
it can jump/insert a pre-recorded"clean" version of a certain scene.
|
107
|
+
|
92
108
|
many others were already completed and done from this list and removed
|
93
109
|
there are some more ideas in the TODO file itself, and/or on the blog sites where I have posted other ideas too
|
110
|
+
fan editor, that can jump positions within the same DVD/insert audio overlays/insert videos et al
|
111
|
+
voice recognition for detection of profanity/violence/etc. etc.
|
112
|
+
detect subtitles for "what appears to be suggestive" content or lewd scenes, etc., based on the text, +- natural language processing
|
113
|
+
overlay with transparent movies (other movies)
|
114
|
+
"double check synchronize" button for making sure the edits line up, with or without text saved of subtitles, et al
|
115
|
+
auto-detect "dark scenes" or "skin tones" or "noises" or the like
|
116
|
+
can "fast forward" through scary/otherwise questionable scenes
|
117
|
+
can auto-compute/compare md5's (using any arbitrary hash function)/truncated md5's/streamline (faster) partial md5's/can md5 specific frames to detect times/to lookup correct EDL's on the fly.
|
118
|
+
can use the same or some other mnemonic to download something or to go to some online url for it/related to it.
|
119
|
+
can auto-lookup and display things like images/ratings/user reviews, dynamically, about a piece
|
120
|
+
can "auto-sync" "this EDL maps to this movie in this other player (hulu, for instance) which has synchronization points x,y, so it adjust the
|
121
|
+
timestamps in the EDL accordingly, for that one .
|
122
|
+
can work with compressed audio/video, or uncompressed
|
123
|
+
can work with encryped data/image/audio data, or unencrypted, with or without 3rd party player/codecs etc.
|
124
|
+
can have its "own" metadata stored off somewhere (like user contributed images/photos/comments/blogs/wikis)
|
125
|
+
can link videos to adds/adwords/add providers somehow/voice over/overlay adds, et al.
|
126
|
+
can have overlay (+- transparent) of adds/off-screen/below the video, always, or every so often, based on timestamp (fixed, or specific to a video)
|
127
|
+
can have overlay text (ex: news ticker, adds, chats, comments from users) on a video.
|
128
|
+
integrate with google plus (+- api) somehow, and/or broadcast [?]/realtime "chat" while watching, voice/text, etc.
|
129
|
+
google TV too, and apple TV, as an app., etc. etc. (auto-download EDL's etc)
|
130
|
+
machine learning for video analysis for synchronization/detection of "questionable scenes/audio" [?]
|
131
|
+
can "blank out" or "obscure" certain parts of the screen based on skin color, or region, or region with vectors (moving region), based on timestamp, or pixel color, or hue, or YUV, or combination of the two ("this color in this region, within these time beginnings and endingses")
|
132
|
+
can OCR subtitles from DVD's on the fly, to screen them like tvguardian now does. With or without in an embedded unit.
|
133
|
+
Everything else mentioned here, but in an embedded unit/side by side with other things/as an app in a console device.
|
134
|
+
people can send you a file and you send it back edited to them LOL (file meaning a rip of some DVD they own, +- requiring them to send in an original DVD too LOL.
|
135
|
+
see also business ideas.txt file
|
136
|
+
realtime chat while viewing/editing/use google wave
|
137
|
+
being able to coordinate/synchronize playing 2 dvd's when you're away
|
138
|
+
can display "user contributed" subtitles (edited, fan edit style, etc.)
|
139
|
+
can overlay them "transparently" above various players, arbitrarily, by tracking timestamps on screen, etc.
|
140
|
+
while synchronized, they can chat, like in a video game LOL
|
141
|
+
can overlay an srt file to an "online" OCR tracked player
|
142
|
+
right click on DVD "play edit with ..."
|
143
|
+
bookmarks within edited playback/remember where you last left off
|
144
|
+
you can record the screen of an "edited playback" in order to create an edited version. It's like recording off your TV, right?
|
145
|
+
each EDL can have a "type" specified, like "type a starts at time x, ends at time y" "type b starts at time z, ends at time mu" so that you can re-use the same EDL
|
146
|
+
cross several media types.
|
147
|
+
EDL action "zoom" to a certain part/portion of a movie, for a specified amount of time.
|
148
|
+
during a "tense" scene it can "darken" the scene more, or blur it, or shrink it to a fraction of its original size, or make it faster,
|
149
|
+
or turn down volume, or mute. User preferences to "respond to EDl action type x with reaction y" (where y is blur, mute, skip)
|
150
|
+
have jump/jump to file to be able to insert alternate endings.
|
151
|
+
an avisynth script to "cut" the file to be able to cut out/mute out sections
|
152
|
+
an avisynth script to "cut" the file to be able to watch it playback edited without modifying the original. +- DVD input too.
|
153
|
+
split EDL's based on DVD "title"
|
154
|
+
have some menu system for "choose, now, which path you'd like to take" (ex: which alternate ending)
|
155
|
+
when parsing a subtitle file, can specify an "extra buffer" to put around all of the subsequent mutes that it calculates for you, based on timestamp.
|
156
|
+
scan subtitles for text that "accompanies" violent or sex scenes, edit around those automatically.s
|
157
|
+
when playing they are presented with a list of "groups" of items that can be added to their EDL.
|
158
|
+
One for profanity, one for boredome, etc. and can pick and choose, mix and match the ones that they will apply for that viewing.
|
159
|
+
It then adds them together and uses them.
|
160
|
+
http://openplayback.blogspot.com/ lists some useful ideas
|
data/todo.propaganda
CHANGED
@@ -11,22 +11,45 @@ can I leverage "mymovies" or "xbmc" communities or some odd?
|
|
11
11
|
|
12
12
|
own really long url movie bad scene skipper sensible cinema.t28.net add in there content editor or something lots of google SEO happy words
|
13
13
|
|
14
|
-
clearplay
|
15
|
-
|
14
|
+
clearplay 33000
|
15
|
+
clean movies/films 22000/14800
|
16
|
+
edited movies 8000
|
17
|
+
edited dvds 1300, so prefer movies
|
18
|
+
movie filters 9000
|
19
|
+
clean flicks 1900 [flix 1600]
|
20
|
+
safe cinema 9900 that is just too weird...
|
21
|
+
play clean 22000 LOL
|
22
|
+
edited films 6000
|
23
|
+
edited video 14800 ?
|
24
|
+
|
25
|
+
family edited 1600 (nah on family)
|
26
|
+
clean player 18000 might be to actually clean it though.
|
27
|
+
family friendly movies 3600 (too hard though)
|
28
|
+
play cleaner
|
29
|
+
|
30
|
+
clean editing movie player
|
31
|
+
|
32
|
+
EditingPlayer
|
33
|
+
EditingMoviePlayer
|
34
|
+
MovieEditor
|
35
|
+
MovieCleaner
|
36
|
+
|
37
|
+
EditPlay
|
38
|
+
PlayClean
|
39
|
+
|
40
|
+
edited cinema 0
|
41
|
+
sensible cinema 260 LOL
|
42
|
+
content edited 0
|
43
|
+
skip bad scenes 0 LOL (mute profanity, skip s. scene) all 0
|
16
44
|
edited dvd 1000
|
17
|
-
|
18
|
-
clean flicks 1600 [flix 1900]
|
19
|
-
clean movies 5400
|
20
|
-
profanity filter 3600
|
21
|
-
clean films 880
|
45
|
+
profanity filter 3600 (don't think profanity is going to cut it)
|
22
46
|
edited films 5400
|
23
|
-
clearplay player 1300
|
24
47
|
lds movies 2400
|
25
48
|
lds videos 2900
|
26
|
-
cleanflicks
|
49
|
+
cleanflicks 1600
|
27
50
|
family friendly movies 2900
|
28
51
|
family videos 135K
|
29
|
-
cleanflix
|
52
|
+
cleanflix 800 [nah]
|
30
53
|
good clean movies 720
|
31
54
|
christian movies 74K "christian friendly" movies?
|
32
55
|
family videos 135K
|
@@ -34,6 +57,7 @@ clean movies 5400
|
|
34
57
|
blu-ray and blue ray have some (once I actually support that LOL)
|
35
58
|
coupons
|
36
59
|
|
60
|
+
|
37
61
|
some conglom of those ? :P
|
38
62
|
|
39
63
|
http://www.millennialstar.org/unrated-vs-clean-it%E2%80%99s-time-to-demand-choose-your-own-rating-dvd-options/
|