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.
Files changed (185) hide show
  1. data/{README → README.TXT} +35 -14
  2. data/Rakefile +49 -41
  3. data/TODO +337 -250
  4. data/VERSION +1 -1
  5. data/bin/sensible-cinema +15 -14
  6. data/bin/sensible-cinema-cli +1 -1
  7. data/business_ideas.txt +8 -0
  8. data/change_log_with_feature_list.txt +198 -1
  9. data/documentation/is_it_legal_to_copy_dvds.txt +44 -30
  10. data/goc.bat +1 -1
  11. data/gpl-2.0.txt +339 -0
  12. data/history_and_related_works_list.txt +37 -33
  13. data/{cone.png → inventionzy_files/cone.png} +0 -0
  14. data/legal_draft +23 -0
  15. data/lib/add_any_bundled_gems_to_load_path.rb +4 -3
  16. data/lib/check_installed_mac.rb +10 -10
  17. data/lib/count_down_timer_jruby_swing.rb +4 -4
  18. data/lib/edl_parser.rb +155 -142
  19. data/lib/extract/dumpstream.bat +1 -0
  20. data/lib/extract/get_init.bat +3 -0
  21. data/lib/extract/pause_early.rb +13 -0
  22. data/lib/gui/base.rb +707 -0
  23. data/lib/gui/create-file.rb +244 -0
  24. data/lib/gui/create.rb +565 -0
  25. data/lib/gui/dependencies.rb +177 -0
  26. data/lib/gui/normal.rb +190 -0
  27. data/lib/gui/{sensible-cinema-upconvert.rb → upconvert.rb} +33 -14
  28. data/lib/keyboard_input.rb +0 -2
  29. data/lib/mencoder_wrapper.rb +8 -3
  30. data/lib/movie_hasher.rb +27 -0
  31. data/lib/mplayer_edl.rb +1 -0
  32. data/lib/subtitle_profanity_finder.rb +141 -103
  33. data/lib/vlc_programmer.rb +1 -1
  34. data/lib/zoom_player_max_edl.rb +50 -0
  35. data/{developer_how_to_contribute_to_the_project.txt → notes_for_potential_developers.txt} +18 -11
  36. data/roadmap_possibilities +12 -0
  37. data/spec/arse.srt +6 -1
  38. data/spec/dragon.srt +3 -0
  39. data/spec/edl_parser.spec.rb +57 -52
  40. data/spec/mencoder_wrapper.spec.rb +26 -19
  41. data/spec/mplayer_edl.spec.rb +40 -10
  42. data/spec/notes +3043 -9
  43. data/spec/sensible_cinema_gui.spec.rb +8 -3
  44. data/spec/subtitle_profanity_finder.spec.rb +91 -36
  45. data/spec/zoom_player_max_edl.spec.rb +29 -0
  46. data/template_bats/README_DISTRO.TXT +3 -1
  47. data/template_bats/RUN SENSIBLE CINEMA CLICK HERE WINDOWS.bat +25 -0
  48. data/template_bats/mac/RUN SENSIBLE CINEMA CLICK HERE.command +2 -1
  49. data/template_bats/mac/advanced--create or edit sensible cinema edit list files.command +2 -1
  50. data/template_bats/mac/advanced--run-upconverting-video-player.command +2 -1
  51. data/template_bats/pc/advanced--create or edit sensible cinema edit list files.bat +2 -0
  52. data/template_bats/pc/advanced--run-upconverting-video-player.bat +2 -0
  53. data/todo.inventionzy.txt +69 -2
  54. data/todo.propaganda +34 -10
  55. data/todo.upconvert +8 -1
  56. data/{upconvert_netflix/latest2 → upconvert_from_screen}/go_upscaling.bat +0 -0
  57. data/{also_see_rogerdpack_youtube_account_and_sourceforge_files_movies_account → upconvert_from_screen/go_upscaling_works} +0 -0
  58. data/{upconvert_netflix → upconvert_from_screen/old}/latest2/combine_video.avs +0 -0
  59. data/{upconvert_netflix → upconvert_from_screen/old}/latest2/go_no_upscaling.bat +0 -0
  60. data/upconvert_from_screen/old/latest2/go_upscaling.bat +12 -0
  61. data/{upconvert_netflix → upconvert_from_screen/old}/latest2/push2.GRF +0 -0
  62. data/upconvert_from_screen/old/latest2/push3.grf +0 -0
  63. data/{upconvert_netflix → upconvert_from_screen/old}/latest2/setup_capture_coords.rb +0 -0
  64. data/{upconvert_netflix → upconvert_from_screen/old}/latest2/setup_directshow_filter_params.rb +0 -0
  65. data/{upconvert_netflix → upconvert_from_screen/old}/latest2/upconvert_from_screen_me2.avs +1 -1
  66. data/{upconvert_netflix → upconvert_from_screen}/old/latest_now_possibly_oudated/push2.GRF +0 -0
  67. data/{upconvert_netflix → upconvert_from_screen}/old/latest_now_possibly_oudated/upconvert_from_screen_me2.avs +0 -0
  68. data/{upconvert_netflix → upconvert_from_screen}/old/position_window.png +0 -0
  69. data/{upconvert_netflix → upconvert_from_screen}/old/push_source_desktop.GRF +0 -0
  70. data/{upconvert_netflix → upconvert_from_screen/old}/record_screen/record.bat +0 -0
  71. data/{upconvert_netflix → upconvert_from_screen}/old/upconvert_from_screen.avs +0 -0
  72. data/{upconvert_netflix → upconvert_from_screen}/old/upconvert_from_screen_me.avs +0 -0
  73. data/{upconvert_netflix → upconvert_from_screen}/old/upconvert_from_screen_me2.avs +0 -0
  74. data/{upconvert_netflix → upconvert_from_screen}/old/upconvert_from_screen_me_push_source.avs +0 -0
  75. data/{upconvert_netflix → upconvert_from_screen}/old/uscreen.GRF +0 -0
  76. data/{upconvert_netflix → upconvert_from_screen}/old/uscreen_me.GRF +0 -0
  77. data/upconvert_from_screen/push3.grf +0 -0
  78. data/upconvert_from_screen/upconvert_from_screen_me2.avs +19 -0
  79. data/vendor/mplayer_patches/apply.bat +12 -0
  80. data/vendor/{rdp-win32screenshot-0.0.9/RDP_BRANCH_HAS_MASTER_WITH_CORRECT_VERSION_NUMBER → mplayer_patches/configure_from_betterlogic} +0 -0
  81. data/vendor/mplayer_patches/libdvdnav/2905259c3b45529b3d8dedba572b6e4f67a2d8f4.diff +19 -0
  82. data/vendor/mplayer_patches/libdvdnav/83f1c9256f500285e46f1e44bcc74ffce90159db.diff +16 -0
  83. data/vendor/mplayer_patches/libdvdnav/eb91fb74680d30322461a1b9e425918ad4e2b2df.diff +21 -0
  84. data/vendor/mplayer_patches/libdvdnav/jump_to_time.diff +654 -0
  85. data/vendor/mplayer_patches/libdvdnav/non_strict.diff +13 -0
  86. data/vendor/mplayer_patches/mplayer_edl.diff +354 -0
  87. data/vendor/mplayer_patches/port_dir/PortIndex.quick +2 -0
  88. data/vendor/mplayer_patches/port_dir/how_to +13 -0
  89. data/vendor/mplayer_patches/port_dir/multimedia/mplayer-edl/Portfile +300 -0
  90. data/vendor/mplayer_patches/port_dir/multimedia/mplayer-edl/files/configure.x11.patch +20 -0
  91. data/vendor/mplayer_patches/port_dir/multimedia/mplayer-edl/files/llvm-gcc-workaround.patch +11 -0
  92. data/vendor/mplayer_patches/port_dir/multimedia/rdp-projects/Portfile +43 -0
  93. data/vendor/{rdp-win32screenshot-0.0.9/RDP_VERSION_IS_IN_RDP_BRANCH → mplayer_patches/updated_lib_too} +0 -0
  94. data/vendor/{readme.txt → readme.txt.setpriority} +0 -0
  95. data/www/content_editor.html +28 -28
  96. data/www/index.html +6 -1
  97. data/www/upconverting_movie_player.html +13 -3
  98. data/www/youtube_edl/.htaccess +44 -0
  99. data/{inventionzy_files/control_youtube.html → www/youtube_edl/control_youtube.rhtml} +39 -33
  100. data/www/youtube_edl/dispatch.fcgi +25 -0
  101. data/www/youtube_edl/render_edited.rb +25 -0
  102. data/{inventionzy_files/serve.rb → www/youtube_edl/server_this_dir.rb} +0 -0
  103. data/www/youtube_edl/todo +23 -0
  104. data/www/zoomplayer_max.png +0 -0
  105. data/zamples/edit_decision_lists/dvds/Harry Potter 2 chamber of secrets.txt +10 -5
  106. data/zamples/edit_decision_lists/dvds/aladdin.txt +30 -0
  107. data/zamples/edit_decision_lists/dvds/bambi.txt +1 -1
  108. data/zamples/edit_decision_lists/dvds/big_buck_bunny_dvd.txt +2 -0
  109. data/zamples/edit_decision_lists/dvds/bobs_big_plan.txt +2 -2
  110. data/zamples/edit_decision_lists/dvds/cars_2.txt +26 -0
  111. data/zamples/edit_decision_lists/dvds/cars_disney.txt +1 -1
  112. data/zamples/edit_decision_lists/dvds/condor_man_widescreen.txt +22 -0
  113. data/zamples/edit_decision_lists/dvds/court_jester.txt +10 -13
  114. data/zamples/edit_decision_lists/dvds/edls_being_edited/making_marriage_work.txt +15 -0
  115. data/zamples/edit_decision_lists/dvds/edls_being_edited/national_treasure.txt +23 -0
  116. data/zamples/edit_decision_lists/dvds/edls_being_edited/ratatouille.txt +35 -0
  117. data/zamples/edit_decision_lists/dvds/edls_being_edited/the_explorers.txt +49 -0
  118. data/zamples/edit_decision_lists/dvds/finding_neverland.txt +32 -0
  119. data/zamples/edit_decision_lists/dvds/flight_of_the_navigator.txt +22 -16
  120. data/zamples/edit_decision_lists/dvds/harry_potter_3_prisoner_of_azkaban.txt +21 -4
  121. data/zamples/edit_decision_lists/dvds/hitchhiker's_guide_to_the_galaxy.txt +1 -1
  122. data/zamples/edit_decision_lists/dvds/{edls_being_edited/king_of_kings.txt → king_of_kings.txt} +5 -5
  123. data/zamples/edit_decision_lists/dvds/nanny_mcphee.txt +31 -0
  124. data/zamples/edit_decision_lists/dvds/pack_jackson_wedding_2007-03-03.txt +9 -2
  125. data/zamples/edit_decision_lists/dvds/remember_the_titans.txt +35 -0
  126. data/zamples/edit_decision_lists/dvds/sintel_open_source_blender_ntsc_dvd.txt +8 -4
  127. data/zamples/edit_decision_lists/dvds/speed_racer.txt +1 -1
  128. data/zamples/edit_decision_lists/dvds/tangled.txt +21 -0
  129. data/zamples/edit_decision_lists/dvds/tron_legacy.txt +4 -1
  130. data/zamples/edit_decision_lists/files/conference_music_video.txt +10 -0
  131. data/zamples/edit_decision_lists/notes_on_movies_without_edls_yet/tron.txt +10 -0
  132. data/zamples/edit_decision_lists/old_not_yet_updated/example_edit_decision_list.txt +1 -1
  133. metadata +139 -117
  134. data/conclusions +0 -6
  135. data/documentation/how_to_create_your_own_delete_lists.txt +0 -69
  136. data/lib/gui/sensible-cinema-base.rb +0 -620
  137. data/lib/gui/sensible-cinema-create.rb +0 -331
  138. data/lib/gui/sensible-cinema-dependencies.rb +0 -28
  139. data/lib/gui/sensible-cinema-normal.rb +0 -351
  140. data/lib/gui/sensible-cinema-side-by-side.rb +0 -27
  141. data/lib/shutdown_kill.rb +0 -32
  142. data/lib/storage.rb +0 -105
  143. data/ocr.todo_if_need_speed +0 -6
  144. data/upconvert_netflix/record_screen/recording/1.png +0 -0
  145. data/upconvert_netflix/record_screen/recording/10.png +0 -0
  146. data/upconvert_netflix/record_screen/recording/2.png +0 -0
  147. data/upconvert_netflix/record_screen/recording/3.png +0 -0
  148. data/upconvert_netflix/record_screen/recording/4.png +0 -0
  149. data/upconvert_netflix/record_screen/recording/5.png +0 -0
  150. data/upconvert_netflix/record_screen/recording/6.png +0 -0
  151. data/upconvert_netflix/record_screen/recording/7.png +0 -0
  152. data/upconvert_netflix/record_screen/recording/8.png +0 -0
  153. data/upconvert_netflix/record_screen/recording/9.png +0 -0
  154. data/upconvert_netflix/record_screen/recording/d.png +0 -0
  155. data/vendor/monkey.png +0 -0
  156. data/vendor/rdp-win32screenshot-0.0.9/.document +0 -5
  157. data/vendor/rdp-win32screenshot-0.0.9/History.rdoc +0 -53
  158. data/vendor/rdp-win32screenshot-0.0.9/LICENSE +0 -20
  159. data/vendor/rdp-win32screenshot-0.0.9/README.rdoc +0 -95
  160. data/vendor/rdp-win32screenshot-0.0.9/Rakefile +0 -63
  161. data/vendor/rdp-win32screenshot-0.0.9/VERSION +0 -1
  162. data/vendor/rdp-win32screenshot-0.0.9/enumerated +0 -55576
  163. data/vendor/rdp-win32screenshot-0.0.9/lib/aero_offscreen_srccopy_captureblt_doesnt_have_everything.bmp.gz +0 -0
  164. data/vendor/rdp-win32screenshot-0.0.9/lib/enumerate.rb +0 -6
  165. data/vendor/rdp-win32screenshot-0.0.9/lib/firefox.bmp +0 -0
  166. data/vendor/rdp-win32screenshot-0.0.9/lib/normal.bmp +0 -0
  167. data/vendor/rdp-win32screenshot-0.0.9/lib/normal2.bmp +0 -0
  168. data/vendor/rdp-win32screenshot-0.0.9/lib/notes +0 -5
  169. data/vendor/rdp-win32screenshot-0.0.9/lib/snapshot.rb +0 -10
  170. data/vendor/rdp-win32screenshot-0.0.9/lib/srccopy.bmp +0 -0
  171. data/vendor/rdp-win32screenshot-0.0.9/lib/srccopyplus.bmp +0 -0
  172. data/vendor/rdp-win32screenshot-0.0.9/lib/srccopyplusdirectx.bmp +0 -0
  173. data/vendor/rdp-win32screenshot-0.0.9/lib/vc.bmp +0 -0
  174. data/vendor/rdp-win32screenshot-0.0.9/lib/win32/screenshot.rb +0 -95
  175. data/vendor/rdp-win32screenshot-0.0.9/lib/win32/screenshot/bitmap_maker.rb +0 -200
  176. data/vendor/rdp-win32screenshot-0.0.9/lib/win32/util.rb +0 -93
  177. data/vendor/rdp-win32screenshot-0.0.9/spec/spec.opts +0 -1
  178. data/vendor/rdp-win32screenshot-0.0.9/spec/spec_helper.rb +0 -85
  179. data/vendor/rdp-win32screenshot-0.0.9/spec/win32_screenshot_spec.rb +0 -194
  180. data/vendor/rdp-win32screenshot-0.0.9/spec/win32_screenshot_util_spec.rb +0 -75
  181. data/vendor/rdp-win32screenshot-0.0.9/win32screenshot.gemspec +0 -69
  182. data/vendor/tsmuxer_1.10.6/licence.txt +0 -42
  183. data/zamples/edit_decision_lists/dvds/making_marriage_work.txt +0 -15
  184. data/zamples/edit_decision_lists/notes/tron.txt +0 -4
  185. 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
- Thread.join_all_others
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.play_mplayer_edl_non_blocking
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.play_mplayer_edl_non_blocking
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 "he.." do
29
+ describe "h..." do
30
30
  it "should include the bad line with timestamp" do
31
- output.should match(/0:00:54.93.*"he\.\."/)
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 [he..] b")
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 [goodness]")
47
+ output.should include("fortress is our [vain use]")
47
48
  end
48
49
 
49
- it "should parse out <i> et al " do
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 "he..o" # todo: positive ex: ... :P
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
- it "should accomodate lesser profanities" do
96
- out = SubtitleProfanityFinder.edl_output_from_string <<-EOL, {}, 0, 0, 1.0
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
- a butt
106
+ #{text}
100
107
 
101
108
  EOL
102
- out.should include "55.0"
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
- normal = S.edl_output 'dragon.srt'
128
- normal.should =~ /0:00:50.23/
129
- normal.should =~ /0:00:54.93/
130
- subtract = S.edl_output 'dragon.srt', {}, 1.0
131
- subtract.should =~ /0:00:49.23/
132
- normal.should =~ /0:00:54.93/
133
- add = S.edl_output 'dragon.srt', {}, 0.0, 1.0
134
- add.should =~ /0:00:55.93/
135
- add.should =~ /0:00:50.23/
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
- starts_ten_later_than_srt = S.edl_output 'dragon.srt', {}, 0.0, 0.0, "00:10", "00:20"
140
- starts_ten_later_than_srt.should =~ /0:01:00.23/
141
- starts_ten_later_than_srt.should =~ /0:01:04.93/
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
- it "should compensate for differing end timestamps with a multiple" do
145
- lasts_longer = S.edl_output 'dragon.srt', {}, 0.0, 0.0, "00:00", "00:00", "01:00", "01:30" # actual ends 50% later
146
- lasts_longer.should =~ /0:01:15.34/
147
- lasts_longer.should =~ /0:01:22.39/
148
- end
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
- lasts_longer_with_initial_add = S.edl_output 'dragon.srt', {}, 0.0, 0.0, begin_srt = "00:00", begin_actual = "00:10", end_srt = "00:55", end_actual = "00:55"
154
- # this one starts off weird, but then ends at almost exactly the same!
155
- lasts_longer_with_initial_add.should =~ /0:00:51.10/
156
- lasts_longer_with_initial_add.should =~ /0:00:54.94/ # note--almost on
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 = "00:00", begin_actual = "00:10", end_srt = "00:55", end_actual = "01:05"
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 ../sensible-cinema
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
 
@@ -1,2 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- "./RUN SENSIBLE CINEMA CLICK HERE.sh" --create-mode
2
+ DIR="$( cd "$( dirname "$0" )" && pwd )"
3
+ "$DIR/RUN SENSIBLE CINEMA CLICK HERE.command" --create-mode
@@ -1,2 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- "./RUN SENSIBLE CINEMA CLICK HERE.sh" --upconvert-mode
2
+ DIR="$( cd "$( dirname "$0" )" && pwd )"
3
+ "$DIR/RUN SENSIBLE CINEMA CLICK HERE.command" --upconvert-mode
@@ -0,0 +1,2 @@
1
+ @cd ..
2
+ @"RUN SENSIBLE CINEMA CLICK HERE WINDOWS.bat" --create-mode
@@ -0,0 +1,2 @@
1
+ @cd ..
2
+ @"RUN SENSIBLE CINEMA CLICK HERE WINDOWS.bat" --upconvert-mode
@@ -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
@@ -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 18000
15
- edited movies 4400
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
- movie filter 1900
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 1300
49
+ cleanflicks 1600
27
50
  family friendly movies 2900
28
51
  family videos 135K
29
- cleanflix 2400
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/