sensible-cinema 0.22.1 → 0.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/LICENSE.TXT +7 -4
  2. data/README +84 -68
  3. data/Rakefile +21 -23
  4. data/TODO +93 -60
  5. data/VERSION +1 -1
  6. data/bin/sensible-cinema +201 -123
  7. data/change_log_with_feature_list.txt +10 -0
  8. data/development.txt +11 -2
  9. data/go.bat +1 -1
  10. data/go.sh +1 -0
  11. data/go_ocr_tracker.bat +1 -1
  12. data/goc.bat +1 -0
  13. data/lib/auto_convert.rb +4 -3
  14. data/lib/check_installed_mac.rb +40 -0
  15. data/lib/drive_info.rb +25 -13
  16. data/lib/edl_parser.rb +1 -3
  17. data/lib/mencoder_wrapper.rb +11 -6
  18. data/lib/mouse.rb +1 -1
  19. data/lib/mplayer_edl.rb +1 -2
  20. data/lib/ocr.rb +8 -3
  21. data/lib/subtitle_profanity_finder.rb +68 -21
  22. data/lib/swing_helpers.rb +1 -1
  23. data/sensible-cinema.gemspec +20 -5
  24. data/spec/arse.srt +36 -0
  25. data/spec/common.rb +1 -1
  26. data/spec/deity_end.srt +11 -0
  27. data/spec/dragon.srt +1 -2
  28. data/spec/drive_info.spec.rb +25 -6
  29. data/spec/notes +99 -15
  30. data/spec/sensible_cinema_gui.spec.rb +8 -5
  31. data/spec/subtitle_profanity_finder.spec.rb +56 -6
  32. data/template_bats/RUN SENSIBLE CINEMA CLICK HERE.bat +2 -2
  33. data/todo.inventionzy.txt +0 -12
  34. data/todo.open_edl_list_org.txt +2 -0
  35. data/{propaganda → todo.propaganda} +4 -1
  36. data/todo.subtitle +3 -22
  37. data/vendor/mac_dvdid/bin/dvdid +0 -0
  38. data/vendor/mac_dvdid/include/dvdid/dvdid.h +67 -0
  39. data/vendor/mac_dvdid/include/dvdid/dvdid2.h +131 -0
  40. data/vendor/mac_dvdid/include/dvdid/export.h +32 -0
  41. data/vendor/mac_dvdid/lib/libdvdid.0.dylib +0 -0
  42. data/vendor/mac_dvdid/lib/libdvdid.a +0 -0
  43. data/vendor/mac_dvdid/lib/libdvdid.dylib +0 -0
  44. data/vendor/mac_dvdid/lib/libdvdid.la +41 -0
  45. data/www/index.html +16 -5
  46. data/zamples/edit_decision_lists/dvds/COOL_RUNNINGS.txt +3 -3
  47. data/zamples/edit_decision_lists/dvds/Harry Potter 2.txt +3 -4
  48. data/zamples/edit_decision_lists/dvds/bambi.txt +20 -0
  49. data/zamples/edit_decision_lists/dvds/big_buck_bunny_dvd.txt +6 -7
  50. data/zamples/edit_decision_lists/dvds/bob the builder pets in a pickle.txt +1 -1
  51. data/zamples/edit_decision_lists/dvds/bobs_big_plan.txt +1 -1
  52. data/zamples/edit_decision_lists/dvds/happiest baby on the block.txt +1 -1
  53. data/zamples/edit_decision_lists/dvds/how_to_train_your_dragon.txt +2 -2
  54. data/zamples/edit_decision_lists/dvds/kung_fu_panda_1.txt +17 -0
  55. data/zamples/edit_decision_lists/dvds/legend_of_the_guardians_the_owls_of_gahoole.txt +1 -1
  56. data/zamples/edit_decision_lists/dvds/making_marriage_work.txt +3 -5
  57. data/zamples/edit_decision_lists/dvds/narnia_voyage_of_the_dawn_treader.txt +16 -0
  58. data/zamples/edit_decision_lists/dvds/old_and_inaccurate/star_trek_generations_hulu.txt +1 -1
  59. data/zamples/edit_decision_lists/dvds/pack_wedding_2007-03-03.txt +4 -4
  60. data/zamples/edit_decision_lists/dvds/sintel_open_source_blender.txt +2 -1
  61. data/zamples/edit_decision_lists/dvds/tron_legacy.txt +1 -1
  62. data/zamples/edit_decision_lists/dvds/turn_around_alma_younger.txt +1 -1
  63. data/zamples/edit_decision_lists/dvds/{example_delete_list_that_has_no_cuts_in_it.txt → zz_example_delete_list_that_has_no_cuts_in_it.txt} +2 -2
  64. data/zamples/edit_decision_lists/old_not_yet_updated/example_edit_decision_list.txt +2 -2
  65. data/zamples/edit_decision_lists/youtube/demo_mutes.txt +1 -1
  66. metadata +20 -5
  67. data/gocreatemode.bat +0 -1
data/spec/arse.srt ADDED
@@ -0,0 +1,36 @@
1
+ 6
2
+ 00:00:55,068 --> 00:00:59,164
3
+ <i>don't assume anything at the impass ok
4
+
5
+ 6
6
+ 00:00:55,067 --> 00:00:59,164
7
+ <i>don't assume anything at the impass
8
+
9
+ 6
10
+ 00:00:55,069 --> 00:00:59,164
11
+ <i>at the very end of this line is a realllly bad word
12
+
13
+ 6
14
+ 00:00:55,066 --> 00:00:59,164
15
+ a realllly bad word at just the beginning
16
+
17
+ 6
18
+ 00:00:55,065 --> 00:00:59,164
19
+ a reaiiiiy bad word with i's for l's
20
+
21
+
22
+
23
+ 6
24
+ 00:00:55,071 --> 00:00:59,164
25
+ a realllly bad word
26
+
27
+ 6
28
+ 00:00:55,070 --> 00:00:59,164
29
+ <i>don't forget there is heaven and hell
30
+ waiting each < /i> < /I>
31
+
32
+ 67
33
+ 00:00:55,068 --> 00:00:59,164
34
+ <i>hello
35
+ shell
36
+
data/spec/common.rb CHANGED
@@ -28,7 +28,7 @@ require 'fileutils'
28
28
  require 'pathname'
29
29
  require 'java' if OS.java?
30
30
 
31
- Dir.chdir File.dirname(__FILE__) # always run from the right dir...
31
+ Dir.chdir File.dirname(__FILE__) # always run from the spec dir...
32
32
  autoload :YAML, 'yaml'
33
33
 
34
34
  begin
@@ -0,0 +1,11 @@
1
+ 6
2
+ 00:00:55,068 --> 00:00:59,164
3
+ <i>We have our nordic gods, hunting</i>
4
+ <i>and a charming view of the sunsets.</i>
5
+
6
+ 7
7
+ 00:00:59,306 --> 00:01:02,298
8
+ <i>The onIy probIems are the pests.</i>
9
+ <I>The onIy probIems are the pests.< /i>< /I>
10
+ hymn title: a mighty fortress is our God.
11
+
data/spec/dragon.srt CHANGED
@@ -23,10 +23,9 @@
23
23
 
24
24
  6
25
25
  00:00:55,068 --> 00:00:59,164
26
- <i>We have fishing, hunting</i>
26
+ <i>We have our nordic gods, hunting</i>
27
27
  <i>and a charming view of the sunsets.</i>
28
28
 
29
29
  7
30
30
  00:00:59,306 --> 00:01:02,298
31
31
  <i>The onIy probIems are the pests.</i>
32
-
@@ -17,26 +17,45 @@ This file is part of Sensible Cinema.
17
17
  =end
18
18
  require File.expand_path(File.dirname(__FILE__) + '/common')
19
19
  require_relative '../lib/drive_info'
20
+ require 'socket'
20
21
 
21
22
  describe 'dvd_drive_info' do
22
- it 'should be able to get an md5sum from the dvd' do
23
+ it 'should be able to get an md5sum from a dvd' do
23
24
  FileUtils.mkdir_p 'VIDEO_TS'
24
25
  Dir.chdir 'VIDEO_TS' do
25
26
  File.binwrite("VTS_01_0.IFO", "b")
26
27
  File.binwrite("VIDEO_TS.IFO", "a")
27
28
  end
28
- DriveInfo.md5sum_disk(".\\").should == Digest::MD5.hexdigest("ab")
29
+ DriveInfo.md5sum_disk("./").should ==
30
+ if Socket.gethostname == "PACKR-B1C04F564"
31
+ "b715cc2a|5e217436"
32
+ elsif OS.windows? # blacky
33
+ "ff83793c|dfaedb42"
34
+ else # mac
35
+ raise 'unknown here...' + DriveInfo.md5sum_disk("./")
36
+ end
29
37
  end
30
38
 
31
- it "should be able to do it for real drive" do
39
+ it "should be able to do it for real disc in the drive" do
32
40
  DriveInfo.get_dvd_drives_as_openstruct.length.should be > 0
41
+ found_one = false
33
42
  DriveInfo.get_dvd_drives_as_openstruct.each{|d|
34
- DriveInfo.md5sum_disk(d.Name + "/").length.should be > 0 if d.VolumeName
43
+ if d.VolumeName # mounted ...
44
+ DriveInfo.md5sum_disk(d.MountPoint).length.should be > 0
45
+ found_one = true
46
+ d.FreeSpace.should == 0
47
+ end
35
48
  }
49
+ found_one.should be true
36
50
  end
37
-
51
+
38
52
  it "should return a drive with most space" do
39
- DriveInfo.get_drive_with_most_space_with_slash[1..-1].should == ":\\"
53
+ space_drive = DriveInfo.get_drive_with_most_space_with_slash
54
+ space_drive[1..-1].should == ":/" if OS.windows? # hope forward slash is ok...
55
+ space_drive[0..0].should == "/" if !OS.windows?
56
+ require 'fileutils'
57
+ FileUtils.touch space_drive + 'touched_file'
58
+ FileUtils.rm space_drive + 'touched_file'
40
59
  end
41
60
 
42
61
  end
data/spec/notes CHANGED
@@ -1,15 +1,106 @@
1
1
  up next:
2
- so...does it work with makemkv ts?
2
+ lighning exact frame to compare the two fulli's...
3
3
 
4
+ == subtitle accuracy ==
5
+ narnia dawn treader had 1 subtitle that was "hand crafted", had the wrong timestamps, but was more accurate.
6
+ The several others were accurate though.
7
+
8
+ == ? ==
9
+
10
+ opensubtitles' viewer gets "nothing" for subtitles of DVD's...smplayer requires you to manually search, too...
11
+ splayer doesn't seem to attempt auto-download either of subs for DVD's. Feels so nice tho :P
12
+
13
+ == true dvdid ==
14
+
15
+ dvdid /Volumes/BAM0NNM1
16
+ 3121d937|cc97b745 (seems consistent like a champ...)
17
+
18
+ == ffmpeg vs. AVS vs. powerproducer zact timings...splitting fulli c lightning ==
19
+
20
+ try with all x*y ways to do this LOL
21
+ fascinatingly, on the mplayer dump file, the OSD doesn't work right, and resets. LOL
22
+ mplayer dvdnav OSD:
23
+ preceding: 02:10:36.-4
24
+ actual strike: 02:10:36.00
25
+
26
+ == does it work with makemkv with ts muxer? ==
27
+
28
+ OSOH/ title00.ts
29
+ transition: frame 107798 00:59:56.863
30
+ with ffmpeg 3596.82 seems to be in perfect lock-step with the other.
31
+ both have sound.
32
+ perfeito
33
+
34
+ == so...does it work with makemkv without tsmuxer? ==
35
+
36
+ using -ofps 30000/1001 -mc 0 -noskip caused the audio/video to mismatch wildly :P
37
+ extracting audio didn't play back in VLC with correct sig [which means nothing]
38
+ me having to demux to *ts* is not an option :P
39
+ mencoder1 -mc 0 -noskip title00.mkv -ofps 24000/1001 -of mpeg -mpegopts muxrate=300000 -alang en -sid 1000 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=1:vstrict=0:acodec=ac3:abitrate=192:autoaspect -o something.mpg
40
+ did *not* seem to work (avidemux: audio messed up, transition 86250 00:59:57.347 which is kind-er right...)
41
+ to be continued...
42
+ demux_mpg: 24000/1001fps progressive NTSC content detected, switching framerate. OSOH only saw it once
43
+
44
+ == ja donatei ==
45
+
46
+ ossfarm, putty, tons others, I think...
47
+
48
+ == ffmpeg vs. AVS vs. powerproducer zact timings...splitting fulli ==
49
+
50
+ conclusion:
51
+ mencoder splitting for zact timing seemss off
52
+ ffmpeg is consistent with ffprobe I...would guess.
53
+ which *seems* to match the DVD "quite closely"
54
+
55
+ note this was fulli from mplayer rip...though ffmpeg seemed to match better with both [?]
56
+
57
+ transition on fulli:
58
+ avs: 59:56.867, pp: 56.90, avidemux: 56.863
59
+ maybe pp was .86 but didn't update its framing right?
60
+ ffprobe shows possible vcodecs at: 3596.826 3596.793 3596.826 3596.8597 3596.893 3596.926
61
+ counting them: 107790 doesn't line up at all...10 frames off? it must duplicate some frames implicitly...
62
+ ffmpeg at 3596.866 got avidemux's frame: 59:56.930 (107800)
63
+ ffmpeg at 3596.83 got avidemux's frame: 00:59:56.896 (107799)
64
+ ffmpeg at 3596.82 got avidemux's frame: 00:59:56.896 (107798) which seems to match ffprobe...and imply that 3596.826 is the transition frame [?]
65
+ so basically everything is...one frame off? ffmpeg is one frame off from avs/others?
66
+ mplayer DVD OSD: 00:59:53.25 (converted: 3596.84) V:3597.3 [V value huh? ]
67
+ previous frame to transition one was 59:53:21 [pre-switch] (3596.80 converted)
68
+ about one frame off avs/avidemux []
69
+ . = frame advance in mplayer
70
+
71
+ title00.ts
72
+ (non-finger frame)
73
+ AVS on ts (not fulli): ffmpeg's 3596.82 frame is shown 57.042 [+ crash?]
74
+ powerproducer: 57.0 even (meaning probably the frame before 57.03)
75
+ mplayer: 4197.0 [second .0], (OSD from file)
76
+ avidemux on .ts: 00:59:57.347 86250 (but the timing is always off for that one...)
77
+ however with fulli I guess we're closer somehow magically [?]
78
+
79
+ mencoder 3596.82 seemed *way* too early frame-wise...
80
+ used: mencoder1 -ss 3596.82 -endpos 3 -oac copy -ovc copy title00.ts.mencoder.fulli.mpg -o title00.ts.mencoder.fulli.mpg.mencoder.3596.82.mpg
81
+ NB: "non knuckles" *is* the first transition frame...
82
+ and it "should" be OSD, above...huh? the ts file is off?
83
+
84
+ title00.ts.fulli
85
+ AVS 59:56.887 [phew pretty close again...what?]
86
+ conclusion: the ts is a bit off somehow? what?
87
+ powerproducer: 56.86 or 56.90
88
+
89
+ AVS on original mkv:
90
+ non finger frame: 56.966 (previous was .926)
91
+
4
92
  == ? ==
5
93
 
94
+ mkv2vob just extracts singles, not re-muxes them [not useful here]
95
+ mkvmerge only ... [not useful here]
96
+
6
97
  conclusions: mencoder -forceidx can make a copied rip file play great in mencoder [and presumably be cut right?]
7
- makemkv has no problems with resets.
8
- VLC playing any mpeg *file* is actually pretty close to right on.
98
+ makemkv has no problems with/signs of internal resets.
99
+ VLC playing any mpeg *file* is actually pretty close to right on [?]
9
100
 
10
101
  dvdoutmplayer.mpg.mencoder.ofps.mpg did not save avidemux
11
102
 
12
- VLC playing any mpeg *file* is actually pretty accurate. Oh the insanity...I guess the extra abstraction of reading from disc kills it.
103
+ VLC playing mpeg *file* is actually pretty accurate. Oh the insanity...I guess the extra abstraction of reading from disc kills it.
13
104
 
14
105
  mplayer playing mplayergrab *does* reset internally...and osd also fails...interesting...
15
106
  *however* running mencoder1 -forceidx c.mpg -ovc copy -oac copy -o c.mencoderidx.mpg *does fix it* (for mplayer anyway...)
@@ -138,9 +229,10 @@ maybe if I use ffmpeg to fulli it first...
138
229
  My first question is...does handbrake and makemkv match, +- fulli
139
230
 
140
231
  makemkv => tsmuxer => ts
141
- still needed frame shifter...
142
- audio still off...
143
- transition 86250 59:57.347
232
+ avidemux:
233
+ still needed frame shifter...
234
+ audio still off...
235
+ transition 86250 59:57.347
144
236
 
145
237
  I seem unable to very the frames of the HANDBRAKE one LOL. It keeps segfaulting Avidemux no matter what it's status...
146
238
  plus I can't compare except by framecount, which is probably messed up anyway...hmm...
@@ -443,27 +535,19 @@ handbrake -> ffmpeg I think sameq -> mencoder split
443
535
 
444
536
  National Treasure [2004] {English} [XviD].srt doesn't seem to match up with mplayer OSD, like 6 seconds off per hour?
445
537
  mplayer OSD seems way off...or actually match normal players whoa!?
446
-
447
538
  865
448
539
  01:28:47,322 --> 01:28:48,864
449
540
  … we have…
450
-
451
541
  866
452
542
  01:28:49,908 --> 01:28:51,325
453
543
  … dragons.
454
-
455
-
456
544
  dvd subs:
457
-
458
545
  869
459
-
460
546
  01:28:47,602 --> 01:28:49,126
461
547
  <i>...we have...</i>
462
-
463
548
  870
464
549
  01:28:50,205 --> 01:28:51,604
465
550
  <i>...dragons.</i>
466
-
467
551
  0.3 off?
468
552
 
469
553
  how to train dragon DVD srt right on with mplayer DVD 29.97
@@ -15,10 +15,11 @@ This file is part of Sensible Cinema.
15
15
  You should have received a copy of the GNU General Public License
16
16
  along with Sensible Cinema. If not, see <http://www.gnu.org/licenses/>.
17
17
  =end
18
-
19
18
  require 'ostruct'
20
19
  require File.expand_path(File.dirname(__FILE__) + '/common')
21
- load '../bin/sensible-cinema.rb'
20
+
21
+ Dir.chdir '..' # need to run in the main folder, common moves us to spec...
22
+ load 'bin/sensible-cinema'
22
23
 
23
24
  module SensibleSwing
24
25
  describe MainWindow do
@@ -27,8 +28,10 @@ module SensibleSwing
27
28
  MainWindow.new.dispose# doesn't crash :)
28
29
  end
29
30
 
31
+ Sintel_ID = '79df7b12|8b27d001'
32
+
30
33
  it "should auto-select a EDL if it matches a DVD's title" do
31
- MainWindow.new.single_edit_list_matches_dvd("19d121ae8dc40cdd70b57ab7e8c74f76").should_not be nil
34
+ MainWindow.new.single_edit_list_matches_dvd(Sintel_ID).should_not be nil
32
35
  end
33
36
 
34
37
  it "should not auto-select if you pass it nil" do
@@ -113,7 +116,7 @@ module SensibleSwing
113
116
  before do
114
117
  @subject = MainWindow.new
115
118
  @subject.stub!(:choose_dvd_drive) {
116
- ["mock_dvd_drive", "Volume", "19d121ae8dc40cdd70b57ab7e8c74f76"] # happiest baby on the block
119
+ ["mock_dvd_drive", "Volume", Sintel_ID] # happiest baby on the block
117
120
  }
118
121
  @subject.stub!(:get_mencoder_commands) { |*args|
119
122
  args[-5].should match(/abc/)
@@ -391,7 +394,7 @@ module SensibleSwing
391
394
  count = 0
392
395
  DriveInfo.stub!(:md5sum_disk) {
393
396
  count += 1
394
- '19d121ae8dc40cdd70b57ab7e8c74f76'
397
+ Sintel_ID
395
398
  }
396
399
  @subject.choose_dvd_and_edl_for_it
397
400
  @subject.choose_dvd_and_edl_for_it
@@ -22,21 +22,71 @@ require 'sane'
22
22
 
23
23
  describe SubtitleProfanityFinder do
24
24
 
25
- describe "should parse out heck" do
25
+ describe "should parse out various profanities" do
26
26
 
27
27
  output = SubtitleProfanityFinder.edl_output ['dragon.srt']
28
28
 
29
- it "should include the bad line with timestamp" do
30
- output.should match(/00:00:54.929.*"heck"/)
29
+ describe "heck" do
30
+ it "should include the bad line with timestamp" do
31
+ output.should match(/00:00:54.929.*"he\.\."/)
32
+ end
33
+
34
+ it "should include the description in its output" do
35
+ output.should include("e he.. b")
36
+ end
37
+ end
38
+
39
+ describe "deity various" do
40
+ it "should parse output plural deity" do
41
+ output.should include("nordic [deity]s ")
42
+ end
43
+
44
+ it "should parse out deity singular and at very end" do
45
+ output = SubtitleProfanityFinder.edl_output ['deity_end.srt']
46
+ output.should include("fortress is our [deity]")
47
+ end
48
+
49
+ it "should parse out <i> et al " do
50
+ output = SubtitleProfanityFinder.edl_output ['deity_end.srt']
51
+ output.should_not include(" i ")
52
+ output.should_not include("<i")
53
+ output.should_not include("huntingand")
54
+ output.should_not include(" ")
55
+ end
56
+
31
57
  end
32
58
 
33
- it "should include the description" do
34
- output.should include("e heck b")
59
+ describe 'full word only profanities' do
60
+
61
+ output2 = SubtitleProfanityFinder.edl_output ['arse.srt']
62
+ it 'should not parse it if it\'s in other words' do
63
+ output2.should_not include "a..ume"
64
+ output2.should_not include "he..o" # todo: positive ex: ... :P
65
+ end
66
+
67
+ it 'should parse them at EOL' do
68
+ output2.should include '00:00:55.069' # EOL
69
+ output2.should include "00:00:55.071" # full line...
70
+ output2.should include '00:00:55.066' # BOL
71
+ end
72
+
73
+ it 'should replace l for i' do
74
+ output2.should include "065" # implies it got the substutition right...
75
+ end
76
+
77
+ it 'should keep apostrophes' do
78
+ output2.should include "don't"
79
+ end
80
+
81
+ it 'should not disdain impass' do
82
+ output2.should_not include "impa.."
83
+ end
84
+
35
85
  end
36
86
 
37
87
  end
38
88
 
39
- describe "it should take optional params" do
89
+ describe "it should take optional user params" do
40
90
  output = SubtitleProfanityFinder.edl_output ['dragon.srt', 'word', 'word']
41
91
 
42
92
  it "should parse out the word word" do
@@ -15,9 +15,9 @@
15
15
  GOTO DONE
16
16
 
17
17
  :NOVENDORDIR
18
- @echo "it appears you downloaded sensible cinema straight from github--please download it instead from http://rogerdpack.t28.net/sensible-cinema/ for it to work properly"
18
+ @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"
19
19
  @pause
20
- @start http://rogerdpack.t28.net/sensible-cinema
20
+ @start https://sourceforge.net/projects/sensible-cinema/files
21
21
 
22
22
  @rem fall through
23
23
 
data/todo.inventionzy.txt CHANGED
@@ -1,16 +1,4 @@
1
1
  === patentzy yes actually do vaguely ordered ===
2
- cheap minimize demo "fake auto" :)
3
- cheap static-ify demo for mutes
4
- also a straight "half mute" demo, using volume downs/ups
5
- cheap minimize via (probably foreground window + API real windows API)
6
- url -> url inference [hopefully this is cake...]
7
- fix the failing 9 digit test the fancy shmancy way :P
8
- can pass in a profanity command line
9
- can handle dual md5's
10
- youtube: use the javascript API somehow, like http://universalsubtitles.org/en does
11
- 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]
12
- just in case youtube takes over the world
13
-
14
2
  blu-ray OCR
15
3
 
16
4
  both mute and blank when blanking by default...
@@ -1,6 +1,8 @@
1
1
  (profanity parsing stuff is in other todo)
2
2
  tell them "exactly how to make super specific" cuts
3
3
 
4
+ a wholesomeness/proclamation meter?
5
+
4
6
  they can add their own buffer time periods :P
5
7
 
6
8
  use a database internally, with raw floats :P
@@ -70,4 +70,7 @@ http://www.fubarrio.com/2010/01/family-films-and-edited-movies/
70
70
  http://www.motleyvision.org/2008/mormon-versions-of-netflix-youtube-and-sort-of-itunes/^M
71
71
  lds.net
72
72
 
73
- http://www.techenclave.com/applications/possible-skip-certain-violence-parts-movie-175218.html
73
+ http://www.techenclave.com/applications/possible-skip-certain-violence-parts-movie-175218.html
74
+
75
+ post here:
76
+ http://www.google.com/search?rlz=1C1SKPL_enUS426US426&sourceid=chrome&ie=UTF-8&q=watch+edited+movies+netflix&safe=active#q=watch+edited+movies+netflix&hl=en&safe=active&rlz=1C1SKPL_enUS426US426&prmd=ivnsfd&ei=ByAFTuO0OYPHgAf63byuDQ&start=20&sa=N&bav=on.2,or.r_gc.r_pw.&fp=e1768da1ce57202d&biw=1469&bih=863