sensible-cinema 0.20.5 → 0.21.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/ChangeLog +29 -0
  2. data/LICENSE.TXT +18 -13
  3. data/README +84 -51
  4. data/Rakefile +10 -9
  5. data/TODO +135 -60
  6. data/VERSION +1 -1
  7. data/bin/monkey.png +0 -0
  8. data/bin/sensible-cinema-cli +8 -3
  9. data/bin/sensible-cinema.rb +169 -76
  10. data/development.txt +29 -0
  11. data/experimental_readme.txt +18 -56
  12. data/go.bat +5 -2
  13. data/how_to_create.txt +31 -35
  14. data/lib/edl_parser.rb +28 -6
  15. data/lib/mencoder_wrapper.rb +5 -5
  16. data/lib/ocr.rb +4 -4
  17. data/lib/overlayer.rb +14 -10
  18. data/lib/screen_tracker.rb +15 -5
  19. data/lib/swing_helpers.rb +1 -1
  20. data/sensible-cinema.gemspec +30 -13
  21. data/spec/edl_parser.spec.rb +1 -1
  22. data/spec/images/netflix_a0.bmp +0 -0
  23. data/spec/images/netflix_a1.bmp +0 -0
  24. data/spec/images/netflix_a2.bmp +0 -0
  25. data/spec/images/netflix_a3.bmp +0 -0
  26. data/spec/images/netflix_a4.bmp +0 -0
  27. data/spec/images/netflix_a5.bmp +0 -0
  28. data/spec/images/netflix_a6.bmp +0 -0
  29. data/spec/images/netflix_a7.bmp +0 -0
  30. data/spec/images/netflix_a8.bmp +0 -0
  31. data/spec/images/netflix_a9.bmp +0 -0
  32. data/spec/ocr.spec.rb +11 -9
  33. data/spec/screen_tracker.spec.rb +1 -1
  34. data/spec/sensible_cinema_gui.spec.rb +9 -8
  35. data/vendor/SetPriority.exe +0 -0
  36. data/vendor/readme.txt +120 -0
  37. data/zamples/edit_decision_lists/dvds/happiest baby on the block.txt +1 -1
  38. data/zamples/edit_decision_lists/dvds/legend_of_the_guardians_the_owls_of_gahoole.txt +18 -0
  39. data/zamples/edit_decision_lists/dvds/making_marriage_work.txt +17 -0
  40. data/zamples/edit_decision_lists/netflix/greatest_story_ever_told_netflix.txt +10 -0
  41. data/zamples/edit_decision_lists/{example_edit_decision_list.txt → old_not_yet_updated/example_edit_decision_list.txt} +0 -0
  42. data/zamples/edit_decision_lists/{old_not_yet_update → old_not_yet_updated}/youtube/gummy_bear_song_youtube.txt +0 -0
  43. data/zamples/edit_decision_lists/{old_not_yet_update → old_not_yet_updated}/youtube/nuki_song_youtube.txt +0 -0
  44. data/zamples/players/netflix/netflix_firefox_non_maximized.txt +25 -0
  45. metadata +39 -44
@@ -1,17 +1,17 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in rakefile, and run 'rake gemspec'
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sensible-cinema}
8
- s.version = "0.20.5"
8
+ s.version = "0.21.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Roger Pack"]
12
- s.date = %q{2011-01-24}
12
+ s.date = %q{2011-02-12}
13
13
  s.email = %q{rogerdpack@gmail.com}
14
- s.executables = ["sensible-cinema-cli", "sensible-cinema.rb"]
14
+ s.executables = ["monkey.png", "sensible-cinema-cli", "sensible-cinema.rb"]
15
15
  s.extensions = ["ext/mkrf_conf.rb"]
16
16
  s.extra_rdoc_files = [
17
17
  "ChangeLog",
@@ -27,9 +27,11 @@ Gem::Specification.new do |s|
27
27
  "Rakefile",
28
28
  "TODO",
29
29
  "VERSION",
30
+ "bin/monkey.png",
30
31
  "bin/sensible-cinema-cli",
31
32
  "bin/sensible-cinema.rb",
32
33
  "create or edit sensible cinema delete list files.bat",
34
+ "development.txt",
33
35
  "experimental_readme.txt",
34
36
  "ext/mkrf_conf.rb",
35
37
  "go.bat",
@@ -80,6 +82,16 @@ Gem::Specification.new do |s|
80
82
  "spec/images/hulu_7.bmp",
81
83
  "spec/images/hulu_8.bmp",
82
84
  "spec/images/hulu_slash.bmp",
85
+ "spec/images/netflix_a0.bmp",
86
+ "spec/images/netflix_a1.bmp",
87
+ "spec/images/netflix_a2.bmp",
88
+ "spec/images/netflix_a3.bmp",
89
+ "spec/images/netflix_a4.bmp",
90
+ "spec/images/netflix_a5.bmp",
91
+ "spec/images/netflix_a6.bmp",
92
+ "spec/images/netflix_a7.bmp",
93
+ "spec/images/netflix_a8.bmp",
94
+ "spec/images/netflix_a9.bmp",
83
95
  "spec/images/vlc_0.bmp",
84
96
  "spec/images/vlc_2_4.bmp",
85
97
  "spec/images/vlc_2_6.bmp",
@@ -128,8 +140,10 @@ Gem::Specification.new do |s|
128
140
  "spec/test_yaml.yml",
129
141
  "spec/vlc_programmer.spec.rb",
130
142
  "todo_if_need_speed",
143
+ "vendor/SetPriority.exe",
131
144
  "vendor/gocr049.exe",
132
145
  "vendor/music.wav",
146
+ "vendor/readme.txt",
133
147
  "vendor/unzip.exe",
134
148
  "zamples/edit_decision_lists/category descriptions.txt",
135
149
  "zamples/edit_decision_lists/dvds/COOL_RUNNINGS.txt",
@@ -138,6 +152,8 @@ Gem::Specification.new do |s|
138
152
  "zamples/edit_decision_lists/dvds/bob the builder pets in a pickle.txt",
139
153
  "zamples/edit_decision_lists/dvds/bobs_big_plan.txt",
140
154
  "zamples/edit_decision_lists/dvds/happiest baby on the block.txt",
155
+ "zamples/edit_decision_lists/dvds/legend_of_the_guardians_the_owls_of_gahoole.txt",
156
+ "zamples/edit_decision_lists/dvds/making_marriage_work.txt",
141
157
  "zamples/edit_decision_lists/dvds/old_and_inaccurate/White Christmas.txt",
142
158
  "zamples/edit_decision_lists/dvds/old_and_inaccurate/all_dogs_go_to_heaven.txt",
143
159
  "zamples/edit_decision_lists/dvds/old_and_inaccurate/cars_disney.txt",
@@ -146,11 +162,13 @@ Gem::Specification.new do |s|
146
162
  "zamples/edit_decision_lists/dvds/old_and_inaccurate/making marriage work.txt",
147
163
  "zamples/edit_decision_lists/dvds/old_and_inaccurate/star_trek_generations_hulu.txt",
148
164
  "zamples/edit_decision_lists/dvds/pack_wedding_2007-03-03.txt",
149
- "zamples/edit_decision_lists/example_edit_decision_list.txt",
150
- "zamples/edit_decision_lists/old_not_yet_update/youtube/gummy_bear_song_youtube.txt",
151
- "zamples/edit_decision_lists/old_not_yet_update/youtube/nuki_song_youtube.txt",
165
+ "zamples/edit_decision_lists/netflix/greatest_story_ever_told_netflix.txt",
166
+ "zamples/edit_decision_lists/old_not_yet_updated/example_edit_decision_list.txt",
167
+ "zamples/edit_decision_lists/old_not_yet_updated/youtube/gummy_bear_song_youtube.txt",
168
+ "zamples/edit_decision_lists/old_not_yet_updated/youtube/nuki_song_youtube.txt",
152
169
  "zamples/players/how_to_create_more_players.txt",
153
170
  "zamples/players/hulu/total_length_over_an_hour.txt",
171
+ "zamples/players/netflix/netflix_firefox_non_maximized.txt",
154
172
  "zamples/players/vlc/full_screened_total_length_over_an_hour.txt",
155
173
  "zamples/players/vlc/windowed_total_length_over_an_hour.txt",
156
174
  "zamples/players/vlc/windowed_total_length_under_an_hour.txt",
@@ -162,7 +180,7 @@ Gem::Specification.new do |s|
162
180
  ]
163
181
  s.homepage = %q{http://github.com/rdp}
164
182
  s.require_paths = ["lib"]
165
- s.rubygems_version = %q{1.3.6}
183
+ s.rubygems_version = %q{1.5.1}
166
184
  s.summary = %q{an EDL scene-selector/bleeper that works with online players like hulu}
167
185
  s.test_files = [
168
186
  "spec/blanker.spec.rb",
@@ -185,12 +203,11 @@ Gem::Specification.new do |s|
185
203
  ]
186
204
 
187
205
  if s.respond_to? :specification_version then
188
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
189
206
  s.specification_version = 3
190
207
 
191
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
208
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
192
209
  s.add_runtime_dependency(%q<sane>, [">= 0.22.0"])
193
- s.add_runtime_dependency(%q<rdp-win32screenshot>, [">= 0.0.7.3"])
210
+ s.add_runtime_dependency(%q<rdp-win32screenshot>, [">= 0.0.8"])
194
211
  s.add_runtime_dependency(%q<mini_magick>, [">= 3.1"])
195
212
  s.add_runtime_dependency(%q<whichr>, [">= 0.3.6"])
196
213
  s.add_runtime_dependency(%q<jruby-win32ole>, [">= 0"])
@@ -201,7 +218,7 @@ Gem::Specification.new do |s|
201
218
  s.add_development_dependency(%q<hitimes>, [">= 0"])
202
219
  else
203
220
  s.add_dependency(%q<sane>, [">= 0.22.0"])
204
- s.add_dependency(%q<rdp-win32screenshot>, [">= 0.0.7.3"])
221
+ s.add_dependency(%q<rdp-win32screenshot>, [">= 0.0.8"])
205
222
  s.add_dependency(%q<mini_magick>, [">= 3.1"])
206
223
  s.add_dependency(%q<whichr>, [">= 0.3.6"])
207
224
  s.add_dependency(%q<jruby-win32ole>, [">= 0"])
@@ -213,7 +230,7 @@ Gem::Specification.new do |s|
213
230
  end
214
231
  else
215
232
  s.add_dependency(%q<sane>, [">= 0.22.0"])
216
- s.add_dependency(%q<rdp-win32screenshot>, [">= 0.0.7.3"])
233
+ s.add_dependency(%q<rdp-win32screenshot>, [">= 0.0.8"])
217
234
  s.add_dependency(%q<mini_magick>, [">= 3.1"])
218
235
  s.add_dependency(%q<whichr>, [">= 0.3.6"])
219
236
  s.add_dependency(%q<jruby-win32ole>, [">= 0"])
@@ -27,7 +27,7 @@ describe EdlParser do
27
27
  end
28
28
 
29
29
  it "should get mutes and blank_outs" do
30
- string = File.read(__dir__ + "/../zamples/edit_decision_lists/example_edit_decision_list.txt")
30
+ string = File.read(__dir__ + "/../zamples/edit_decision_lists/old_not_yet_updated/example_edit_decision_list.txt")
31
31
  expected =
32
32
  {
33
33
  "mutes"=>[["00:00:01", "00:00:02"],
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/spec/ocr.spec.rb CHANGED
@@ -27,30 +27,32 @@ describe OCR do
27
27
  OCR.version.should_not be_blank
28
28
  end
29
29
 
30
- Dir['images/*[0-9].bmp'].sort_by{|f| File.stat(f).mtime}.reverse.each{ |file|
31
- it "should be able to OCR #{file}" do
30
+ Dir['images/*netflix*[0-9].bmp'].sort_by{|f| File.stat(f).mtime}.reverse.each{ |file|
31
+ it "should be able to OCR #{file}" do
32
32
  options = {}
33
- options[:should_invert] = true if file =~ /hulu/
33
+ options[:should_invert] = true if file =~ /hulu|netflix/
34
34
  options[:sharpen] = true if file =~ /youtube/ && file !~ /light/
35
35
 
36
36
  # 130 for vlc, 100 for hulu, 0 for some youtube full screen
37
37
  # 225, 200 for youtube "light" (windowed after awhile)
38
- degrees = {'vlc' => [130], 'hulu' => [100], 'youtube_light' => [225,200], 'youtube' => [0]}
38
+ # 0 means autodetect [?] was that true for 0.48?
39
+ degrees = {'vlc' => [130], 'hulu' => [100], 'youtube_light' => [225,200], 'youtube' => [0], 'netflix' => [0]}
39
40
  # youtube_light must be in just that order...
40
- file =~ /(vlc|hulu|youtube_light|youtube)/
41
+ file =~ /(vlc|hulu|youtube_light|youtube|netflix)/
41
42
  options[:levels] = degrees[$1]
42
- assert options[:levels]
43
+ assert options[:levels] && options[:levels].length > 0
43
44
  file =~ /(.)\.bmp/
44
45
  expected_digit = $1.to_i
45
46
  got_digit = OCR.identify_digit(File.binread(file), options)
46
47
  if got_digit != expected_digit
47
48
  begin
49
+ p 'digit failed'
48
50
  OCR::CACHE.clear
49
- #require 'ruby-debug'
50
- #debugger # now step into the next call...
51
+ require 'ruby-debug'
52
+ debugger # now step into the next call...
51
53
  OCR.identify_digit(File.binread(file), options)
52
54
  rescue LoadError
53
- puts 'unable to load ruby-debug...' # until I can get 1.9.2 to compile it...
55
+ puts 'unable to load ruby-debug!' # until I can get 1.9.2 to compile it...
54
56
  end
55
57
  got_digit.should == expected_digit
56
58
  end
@@ -277,7 +277,7 @@ describe ScreenTracker do
277
277
 
278
278
  it "should be able to pass through the option to invert images" do
279
279
  @a = ScreenTracker.new(SILENCE, 100, 100, 10, 10, false,
280
- {:should_invert => true, :second_ones => [-66, 7]} )
280
+ {:should_invert => true, :second_ones => [-66, 7]} ) # VLC descriptor is messed currently...
281
281
  got_it = nil
282
282
  OCR.stub!(:identify_digit) {|*args|
283
283
  got_it = args
@@ -18,7 +18,7 @@ This file is part of Sensible Cinema.
18
18
 
19
19
  require 'ostruct'
20
20
  require File.expand_path(File.dirname(__FILE__) + '/common')
21
- load '../bin/sensible-cinema'
21
+ load '../bin/sensible-cinema.rb'
22
22
 
23
23
  module SensibleSwing
24
24
  describe MainWindow do
@@ -81,12 +81,12 @@ module SensibleSwing
81
81
  def with_clean_edl_dir_as this
82
82
  FileUtils.rm_rf 'temp'
83
83
  Dir.mkdir 'temp'
84
- old_edl = MainWindow::EDL_DIR
85
- MainWindow.const_set(:EDL_DIR, 'temp')
84
+ old_edl = MainWindow::EDL_DIR.dup
85
+ MainWindow::EDL_DIR.sub!(/.*/, 'temp')
86
86
  begin
87
87
  yield
88
88
  ensure
89
- MainWindow.const_set(:EDL_DIR, old_edl)
89
+ MainWindow::EDL_DIR.sub!(/.*/, old_edl)
90
90
  end
91
91
  end
92
92
 
@@ -131,8 +131,8 @@ module SensibleSwing
131
131
  }
132
132
 
133
133
  @subject.stub!(:get_user_input) {'01:00'}
134
- @subject.stub!(:system_blocking) { |command|
135
- @system_blocking_command = command
134
+ @subject.stub!(:system_blocking) { |*command|
135
+ @system_blocking_command = command[0]
136
136
  }
137
137
 
138
138
  @subject.stub!(:system_non_blocking) { |command|
@@ -242,7 +242,8 @@ module SensibleSwing
242
242
  click_button(:@fast_preview).join
243
243
  join_background_thread
244
244
  #XXXX @system_blocking_command.should =~ /ffmpeg.*ntsc-dvd/ # I think this is a timing thing...
245
- @system_blocking_command.should =~ /mplayer.*fast/ # pending, smplayer
245
+ @system_blocking_command.should =~ /smplayer/
246
+ @system_blocking_command.should_not =~ /mplayer.*fast/ # the old way
246
247
  end
247
248
 
248
249
  it "should be able to rerun the latest start and end times with the rerun button" do
@@ -406,7 +407,7 @@ module SensibleSwing
406
407
  it "should not show the normal buttons in create mode" do
407
408
  MainWindow.new.buttons.length.should == 3 # exit button, two normal buttons
408
409
  ARGV << "--create-mode"
409
- MainWindow.new.buttons.length.should == 10
410
+ MainWindow.new.buttons.length.should == 12
410
411
  ARGV.pop # test cleanup--why not :)
411
412
  end
412
413
 
Binary file
data/vendor/readme.txt ADDED
@@ -0,0 +1,120 @@
1
+ SetPriority README
2
+ http://gilchrist.ca/jeff/
3
+ Jeff Gilchrist
4
+
5
+ May 1, 2004
6
+
7
+ NOTE: ** THIS IS BETA SOFTWARE, USE AT YOUR OWN RISK AND PLEASE
8
+ REPORT ALL BUGS TO ME **
9
+
10
+ What is SetPriority?
11
+ --------------------
12
+ SetPriority is a Windows command line program that will allow you
13
+ to view or change both the process priority and thread priority of
14
+ a running program. NOTE: It does not work on Windows services.
15
+
16
+ License/Disclaimer
17
+ ------------------
18
+ This software is freeware and can be freely distributed. Use at your
19
+ own risk. I take no responsibility for anything that happens to your
20
+ equipment. Please keep this README file with the SetPriority
21
+ executable if you are going to re-distribute it.
22
+
23
+ History
24
+ -------
25
+ v0.2 (May 1, 2004) - Initial public release.
26
+
27
+
28
+ Usage
29
+ -----
30
+ Run SetPriority.exe -h for the help listing.
31
+
32
+ ===================================================================
33
+ Usage: setpriority [-g] [-p#] [-t#] [-lowest] <PID>
34
+
35
+ -g : get process information only then exit
36
+ -h : this help screen
37
+ -p# : where # is new process priority class (default: 64 [IDLE])
38
+ -t# : where # is new thread priority (default: -15 [Lowest])
39
+ -lowest : sets lowest possible priority
40
+
41
+ Example: setpriority -p32 -t-2 342
42
+ setpriority -lowest 342
43
+ setpriority -g 342
44
+
45
+
46
+ Process Thread
47
+ ------- ------
48
+ RealTime : 256 15
49
+ High : 128 2
50
+ AboveNormal: 32768 1
51
+ Normal : 32 0
52
+ BelowNormal: 16384 -1
53
+ Idle : 64 -2
54
+ Lowest : N/A -15
55
+ ===================================================================
56
+
57
+ In order to view or change the priority of a running program, you
58
+ must first determine its PID (Process ID). You can do this by
59
+ opening the Windows Task Manager and clicking on the "Processes"
60
+ tab. You should then see a list of running processes on your
61
+ Windows machine. If you do not see a "PID" column, click on the
62
+ "View" menu, then "Select Columns". Check the "PID (Process
63
+ Identifier" checkbox, then click on "OK". You should now see a
64
+ PID column in the "Processes" tab.
65
+
66
+ Locate the name of the process you are interested in viewing or
67
+ changing the priority of. Beside that name in the PID column you
68
+ will see its associated PID.
69
+
70
+ If the PID for the process you are interested in is 3320, to view
71
+ the current priority settings you would use the following command
72
+ line:
73
+
74
+ C:\>setpriority -g 3320
75
+
76
+ The program would report something like:
77
+
78
+ ===================================================================
79
+ SetPriority v0.2 by: Jeff Gilchrist
80
+ http://gilchrist.ca/jeff/
81
+
82
+
83
+ Process ID (PID): 3320
84
+ Current Priority Class : 64
85
+ Current Thread Priority: -15
86
+
87
+
88
+ Process Thread
89
+ ------- ------
90
+ RealTime : 256 15
91
+ High : 128 2
92
+ AboveNormal: 32768 1
93
+ Normal : 32 0
94
+ BelowNormal: 16384 -1
95
+ Idle : 64 -2
96
+ Lowest : N/A -15
97
+ ===================================================================
98
+
99
+ Use the legend at the bottom of the output to determine what the
100
+ priority codes mean. A priority class of 64 means that the process
101
+ is running at "Idle" priority. The thread priority of -15 means
102
+ the thread is running at "Lowest" priority. This program is
103
+ therefore running at the lowest possible priority. Some programs
104
+ may have more than one thread and if that is the case, you will see
105
+ multiple thread priorities listed in the output.
106
+
107
+ If you wanted to modify the priority so the program runs at the
108
+ Normal priority setting you would run:
109
+
110
+ C:\>setpriority -p32 -t0 3320
111
+
112
+ Currently there is no way to set individual thread priorities so if
113
+ the program has multiple threads, all threads will be set to the
114
+ thread priority you specify on the command line.
115
+
116
+
117
+ Bugs/Contact
118
+ ------------
119
+ If you would like to report any bugs or contact me related to the
120
+ software you can reach me via e-mail at: jeff [at] gilchrist.ca
@@ -1,5 +1,5 @@
1
1
  "mutes" => [
2
- "6:18" , "6:19.1", "religious reference", "religious reference", "2"
2
+ "6:18" , "6:19.1", "religious reference", "religious reference" # TODO can put category number here...
3
3
  ],
4
4
  "disk_unique_id" => "19d121ae8dc40cdd70b57ab7e8c74f76",
5
5
  "title" => "Happiest baby on the block",
@@ -0,0 +1,18 @@
1
+ # comments can go after a # on any line, for example this one.
2
+
3
+ "mutes" => [
4
+ "13:09.5", "13:12", "language", "by the mercy of glocks", # verified
5
+ "47:53.5", "47:55.5", "profanity", "oh glocks", # verified
6
+ "57:06", "57:07.5", "language", "like he..", # verified
7
+ "01:04:18.5", "01:04:23.5", "language", "thank glocks",
8
+ ],
9
+
10
+ "blank_outs" => [
11
+ "01:24:17","01:24:27", "violence", "stabs other owl with stick, though not seen really"
12
+ ],
13
+
14
+ "name" => "Legend of the Guardians the owls of Gahoole",
15
+ "disk_unique_id" => "43429521aac41a983fc32dbc3ebbe28e",
16
+
17
+ "not edited out stuff" => "end battle scene is a tidge tense for youngsters. Reasonably good feeling at end.",
18
+ "mplayer_dvd_splits" => [], # (none)
@@ -0,0 +1,17 @@
1
+ # comments can go after a # on any line, for example this one.
2
+
3
+ "mutes" => [
4
+ "0:00:01.0", "0:00:02.0", "profanity", "da..",
5
+ ],
6
+
7
+ "blank_outs" => [
8
+ "00:03:00.0" , "00:04:00.0", "violence", "of some sort",
9
+ ],
10
+
11
+ "name" => "making_marriage_work",
12
+ "disk_unique_id" => "718de056ba2a01ab8939a8e8f8cc3abc",
13
+
14
+ # "dvd_title_track" => "1", # most DVD's use title 1. Yours might not. If it plays anything except the main title, see http://goo.gl/QHLIF
15
+ # "not edited out stuff" => "",
16
+ # "closing thoughts" => "still a fairly dark movie",
17
+ # "mplayer_dvd_splits" => ["59:59", "1:04:59"], # find these by playing your dvd with smplayer, and noting where the timing switches [buggedly] back to zero in error--common on many DVD's. Setting it here lets the 'insta play' feature work right.
@@ -0,0 +1,10 @@
1
+ "mutes" => [
2
+ "02:02:15.0" , "02:02:25", "a muted demo section",
3
+ ],
4
+
5
+ "blank_outs" => [
6
+ "02:02:00.0" , "02:02:10", "blanked out demo section",
7
+ ],
8
+
9
+ "name" => "Greatest Story Ever Told",
10
+ "url" => "http://movies.netflix.com/WiPlayer?movieid=60004240&trkid=2430625",