sensible-cinema 0.15.0 → 0.16.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. data/ChangeLog +15 -1
  2. data/LICENSE +46 -35
  3. data/Rakefile +7 -10
  4. data/TODO +61 -67
  5. data/VERSION +1 -1
  6. data/bin/sensible-cinema +195 -113
  7. data/lib/edl_parser.rb +54 -0
  8. data/lib/mencoder_wrapper.rb +8 -9
  9. data/lib/storage.rb +82 -0
  10. data/lib/swing_helpers.rb +19 -1
  11. data/run_sensible_cinema_in_create_mode.bat +5 -0
  12. data/sensible-cinema.gemspec +141 -136
  13. data/spec/edl_parser.spec.rb +76 -0
  14. data/spec/mencoder_wrapper.spec.rb +10 -12
  15. data/spec/sensible_cinema_gui.spec.rb +12 -10
  16. data/vendor/unzip.exe +0 -0
  17. data/zamples/edit_decision_lists/category descriptions.txt +1 -0
  18. data/zamples/edit_decision_lists/dvds/bobs_big_plan.txt +9 -12
  19. data/zamples/edit_decision_lists/dvds/happiest baby on the block.txt +8 -11
  20. data/zamples/edit_decision_lists/dvds/White Christmas.txt b/data/zamples/edit_decision_lists/dvds/old_and_inaccurate/White → Christmas.txt +0 -0
  21. data/zamples/edit_decision_lists/dvds/{all_dogs_go_to_heaven.txt → old_and_inaccurate/all_dogs_go_to_heaven.txt} +0 -0
  22. data/zamples/edit_decision_lists/dvds/{cars_disney.txt → old_and_inaccurate/cars_disney.txt} +0 -0
  23. data/zamples/edit_decision_lists/dvds/{happy_feet.txt → old_and_inaccurate/happy_feet.txt} +0 -0
  24. data/zamples/edit_decision_lists/dvds/{labyrinth.txt → old_and_inaccurate/labyrinth.txt} +0 -0
  25. data/zamples/edit_decision_lists/dvds/making marriage work.txt b/data/zamples/edit_decision_lists/dvds/old_and_inaccurate/making marriage → work.txt +0 -0
  26. data/zamples/edit_decision_lists/{star_trek_generations_hulu.txt → dvds/old_and_inaccurate/star_trek_generations_hulu.txt} +0 -0
  27. data/zamples/edit_decision_lists/example_edit_decision_list.txt +36 -20
  28. data/zamples/edit_decision_lists/{youtube → old_not_yet_update/youtube}/gummy_bear_song_youtube.txt +0 -0
  29. data/zamples/edit_decision_lists/{youtube → old_not_yet_update/youtube}/nuki_song_youtube.txt +0 -0
  30. metadata +291 -285
data/lib/edl_parser.rb ADDED
@@ -0,0 +1,54 @@
1
+ class EdlParser
2
+
3
+ def self.parse_file filename
4
+ parse_string File.read(filename), filename
5
+ end
6
+
7
+ # better eye-ball these before letting people run them, eh?
8
+ # but I couldn't think of any other way
9
+ def self.parse_string string, filename, ok_categories_array = []
10
+ string = '{' + string + "\n}"
11
+ if filename
12
+ raw = eval(string, binding, filename)
13
+ else
14
+ raw = eval string
15
+ end
16
+
17
+ # mutes and blank_outs need to be special parsed into arrays...
18
+ mutes = raw["mutes"] || []
19
+ blanks = raw["blank_outs"] || []
20
+ raw["mutes"] = convert_to_timestamp_arrays(mutes, ok_categories_array)
21
+ raw["blank_outs"] = convert_to_timestamp_arrays(blanks, ok_categories_array)
22
+ raw
23
+ end
24
+
25
+ def self.convert_to_timestamp_arrays array, ok_categories_array
26
+ out = []
27
+ while(single_element = extract_entry!(array))
28
+ # assume that it's always start_time, end_time, category, number
29
+ category = single_element[-2]
30
+ category_number = single_element[-1]
31
+ unless ok_categories_array.index([category, category_number])
32
+ out << single_element
33
+ end
34
+ end
35
+ out
36
+ end
37
+
38
+ TimeStamp = /^\d+:\d\d[\d:\.]*$/
39
+ # starts with a digit, has at least one colon followed by two digits,then some combo of digits and colons and periods...
40
+
41
+ def self.extract_entry! from_this
42
+ return nil if from_this.length == 0
43
+ # two digits, then whatever else you see, that's not a digit...
44
+ out = from_this.shift(2)
45
+ out.each{|d|
46
+ raise 'non timestamp? ' + d unless d =~ TimeStamp
47
+ }
48
+ while(from_this[0] && from_this[0] !~ TimeStamp)
49
+ out << from_this.shift
50
+ end
51
+ out
52
+ end
53
+
54
+ end
@@ -13,20 +13,19 @@ class MencoderWrapper
13
13
  if File.exist?(@big_temp) && File.exist?(@big_temp + '.done')
14
14
  ''
15
15
  else
16
- "call mencoder dvd:// -oac copy -lavcopts keyint=1 -ovc lavc -o #{@big_temp} -dvd-device #{this_drive} && echo got_file > #{@big_temp}.done\n"
16
+ "call mencoder dvd://#{@dvd_title_track} -oac copy -lavcopts keyint=1 -ovc lavc -o #{@big_temp} -dvd-device #{this_drive} && echo got_file > #{@big_temp}.done\n"
17
17
  end
18
18
  end
19
19
 
20
- def get_bat_commands these_mutes, this_drive, to_here_final_file, start_here = nil, end_here = nil
20
+ def get_bat_commands these_mutes, this_drive, to_here_final_file, start_here = nil, end_here = nil, dvd_title_track = "1"
21
21
  combined = VLCProgrammer.convert_incoming_to_split_sectors these_mutes
22
-
22
+ @dvd_title_track = dvd_title_track
23
23
  if start_here || end_here
24
24
  raise 'need both' unless end_here && start_here
25
25
  start_here = OverLayer.translate_string_to_seconds(start_here)
26
26
  end_here = OverLayer.translate_string_to_seconds(end_here)
27
27
  combined.select!{|start, endy, type| start > start_here && endy < end_here }
28
28
  # it's relative now, since we rip from not the beginning
29
- raise Exception.new('unable to find any edit decisions to do within that range') unless combined.length > 0
30
29
  previous_end = start_here
31
30
  else
32
31
  previous_end = 0
@@ -51,14 +50,14 @@ class MencoderWrapper
51
50
 
52
51
  out += "del #{to_here_final_file}\n"
53
52
  # ridiculous
54
- out += "call mencoder #{partials.join(' ')} -o #{to_here_final_file}.smplayer_or_vlc.avi -ovc copy -oac copy\n"
53
+ out += "call mencoder #{partials.join(' ')} -o #{to_here_final_file}.avi -ovc copy -oac copy\n"
55
54
  # LODO only do this if they want to watch it on their computer, with something other than smplayer, or want to make it smaller, as it takes *forever* longer
56
55
  # LODO the "insta play" mode, or the "faster rip" mode (related...)
57
56
  # out += "call mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 30000/1001 #{partials.join(' ')} -o #{to_here_final_file}\n"
58
57
 
59
58
  out += "@rem del #{@big_temp}\n" # LODO
60
- out += "@rem del " + partials.join(' ') + "\n"# LODO
61
- out += "echo wrote to #{to_here_final_file}.smplayer_or_vlc.avi"
59
+ out += "del " + partials.join(' ') + "\n"# LODO
60
+ out += "echo wrote to #{to_here_final_file}.avi"
62
61
  out
63
62
  end
64
63
 
@@ -68,7 +67,7 @@ class MencoderWrapper
68
67
  endy = endy - start - 0.001
69
68
  # very decreased volume is like muting :)
70
69
  # LODO can we copy more here? ntsc-dvd supposedly remuxes...
71
- codecs = should_mute ? "-vcodec copy -acodec ac3 -vol 0 " : "-vcodec copy -acodec copy " # LODO not have the ac3...hmm...
70
+ codecs = should_mute ? "-vcodec copy -acodec ac3 -vol 0 " : "-vcodec copy -acodec copy " # LODO the ac3 must match the copy...hmm...
72
71
  # ffmpeg -i from_here.avi -vcodec copy -acodec copy -ss 1:00 -t 1:00 out.avi
73
72
  partial_filename = to_here_final_file + '.' + (@idx += 1).to_s + '.avi'
74
73
  "del #{partial_filename}\ncall ffmpeg -i #{@big_temp} #{codecs} -ss #{start} -t #{endy} #{partial_filename}\n"
@@ -86,7 +85,7 @@ if $0 == __FILE__
86
85
  drive = ARGV.shift
87
86
  raise 'wrong drive' unless File.exist?(drive + "AUDIO_TS")
88
87
  execute = ARGV.delete('--run')
89
- commands =MencoderWrapper.get_bat_commands(a, drive, *ARGV)
88
+ commands = MencoderWrapper.get_bat_commands(a, drive, *ARGV)
90
89
  if ARGV.length > 2
91
90
  write_to = 'range.bat'
92
91
  else
data/lib/storage.rb ADDED
@@ -0,0 +1,82 @@
1
+ # use it like
2
+
3
+ class Storage
4
+ class << self
5
+ attr_writer :storage_dir
6
+ end
7
+
8
+ def self.storage_dir
9
+ @user_dir ||= File.join(File.expand_path('~'), ".storage")
10
+ end
11
+
12
+ # Open a storage file or create it if it doesn't exist.
13
+ #
14
+ # @param [String] a (short) name, should be suitable for use as a filename
15
+ def initialize(name)
16
+ @name = name
17
+ unless File.exists?(Storage.storage_dir)
18
+ FileUtils.mkdir_p(Storage.storage_dir)
19
+ end
20
+ rollback
21
+ end
22
+
23
+ # Save the storage to disk.
24
+ def save
25
+ File.open(path, "w") { |f| YAML.dump(@storage, f) }
26
+ update_timestamp
27
+ self
28
+ end
29
+
30
+ # Rollback the storage to the latest revision saved to disk or empty it if
31
+ # it hasn't been saved.
32
+ def rollback
33
+ if File.exists?(path)
34
+ @storage = YAML.load_file(path)
35
+ raise 'storage file is corrupted--please delete ' + path unless @storage.is_a? Hash
36
+ update_timestamp
37
+ else
38
+ @storage = {}
39
+ end
40
+ self
41
+ end
42
+
43
+ # retrieve key value
44
+ # note: it does not re-read from disk before returning you this value
45
+ def [](key)
46
+ if @last_modified_time
47
+ if File.exist?(path()) && (File.stat(path()).mtime != @last_modified_time)
48
+ rollback
49
+ end
50
+ end
51
+ @storage[key]
52
+ end
53
+
54
+ # set key to value
55
+ # note: it automatically saves this to disk
56
+ def []=(key, value)
57
+ @storage[key] = value
58
+ save
59
+ value
60
+ end
61
+
62
+ def set_default(key, value)
63
+ unless @storage.has_key?(key)
64
+ self[key] = value
65
+ end
66
+ value
67
+ end
68
+
69
+ def keys
70
+ @storage.keys
71
+ end
72
+
73
+ private
74
+
75
+ def path
76
+ File.join(Storage.storage_dir, @name + ".yaml")
77
+ end
78
+
79
+ def update_timestamp
80
+ @last_modified_time = File.stat(path()).mtime
81
+ end
82
+ end
data/lib/swing_helpers.rb CHANGED
@@ -5,8 +5,9 @@ module SensibleSwing
5
5
  JFileChooser, JComboBox, JDialog, SwingUtilities] # grab these constants (http://jira.codehaus.org/browse/JRUBY-5107)
6
6
  include_package 'java.awt'
7
7
  [FlowLayout, Font]
8
- include_class 'java.awt.event.ActionListener'
8
+ include_class java.awt.event.ActionListener
9
9
  JFile = java.io.File
10
+ include_class java.awt.FileDialog
10
11
 
11
12
  class JButton
12
13
  def initialize *args
@@ -39,6 +40,23 @@ module SensibleSwing
39
40
  end
40
41
  get_selected_file.get_absolute_path
41
42
  end
43
+
44
+ # match FileDialog
45
+ def set_title x
46
+ set_dialog_title x
47
+ end
48
+
49
+ def set_file f
50
+ set_selected_file JFile.new(f)
51
+ end
52
+ alias setFile set_file
53
+ end
54
+
55
+ class FileDialog
56
+ def go
57
+ show
58
+ File.expand_path(get_directory + '/' + get_file) if get_file
59
+ end
42
60
  end
43
61
 
44
62
  class ModeLessDialog < JDialog
@@ -0,0 +1,5 @@
1
+ @setlocal
2
+ @rem disable any local rubyopt settings...
3
+ @set RUBYOPT=
4
+ @echo This window will display lots of debug message output!
5
+ @cd sensible-cinema && java -cp "./vendor/cache/jruby-complete-1.5.5.jar" org.jruby.Main bin\sensible-cinema --create-mode || echo you need to install java first!
@@ -1,163 +1,168 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in rakefile, and run the gemspec command
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.15.0"
8
+ s.version = "0.16.1"
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{2010-12-02}
12
+ s.date = %q{2010-12-03}
13
13
  s.email = %q{rogerdpack@gmail.com}
14
14
  s.executables = ["sensible-cinema", "sensible-cinema-cli"]
15
15
  s.extensions = ["ext/mkrf_conf.rb"]
16
16
  s.extra_rdoc_files = [
17
17
  "ChangeLog",
18
- "LICENSE",
19
- "README",
20
- "TODO"
18
+ "LICENSE",
19
+ "README",
20
+ "TODO"
21
21
  ]
22
22
  s.files = [
23
23
  "ChangeLog",
24
- "LICENSE",
25
- "README",
26
- "Rakefile",
27
- "TODO",
28
- "VERSION",
29
- "bin/sensible-cinema",
30
- "bin/sensible-cinema-cli",
31
- "experimental_readme.txt",
32
- "ext/mkrf_conf.rb",
33
- "gplv3.txt",
34
- "lib/add_any_bundled_gems_to_load_path.rb",
35
- "lib/blanker.rb",
36
- "lib/drive_info.rb",
37
- "lib/fake_blanker.rb",
38
- "lib/file_chooser.rb",
39
- "lib/keyboard_input.rb",
40
- "lib/mencoder_wrapper.rb",
41
- "lib/mouse.rb",
42
- "lib/mouse_forever.rb",
43
- "lib/muter.rb",
44
- "lib/ocr.rb",
45
- "lib/overlayer.rb",
46
- "lib/screen_tracker.rb",
47
- "lib/swing_helpers.rb",
48
- "lib/vlc_programmer.rb",
49
- "never_do",
50
- "run_sensible_cinema.bat",
51
- "sensible-cinema.gemspec",
52
- "spec/blanker.spec.rb",
53
- "spec/common.rb",
54
- "spec/convert_image.rb",
55
- "spec/drive_info.spec.rb",
56
- "spec/images/black.bmp",
57
- "spec/images/colon.bmp",
58
- "spec/images/hulu_0.bmp",
59
- "spec/images/hulu_2.bmp",
60
- "spec/images/hulu_2_3.bmp",
61
- "spec/images/hulu_2_4.bmp",
62
- "spec/images/hulu_3.bmp",
63
- "spec/images/hulu_3_4.bmp",
64
- "spec/images/hulu_4.bmp",
65
- "spec/images/hulu_4_4.bmp",
66
- "spec/images/hulu_5.bmp",
67
- "spec/images/hulu_7.bmp",
68
- "spec/images/hulu_8.bmp",
69
- "spec/images/hulu_slash.bmp",
70
- "spec/images/vlc_0.bmp",
71
- "spec/images/vlc_2_4.bmp",
72
- "spec/images/vlc_2_6.bmp",
73
- "spec/images/vlc_4.bmp",
74
- "spec/images/vlc_5.bmp",
75
- "spec/images/vlc_6.bmp",
76
- "spec/images/vlc_9.bmp",
77
- "spec/images/vlc_colon.bmp",
78
- "spec/images/youtube_0.bmp",
79
- "spec/images/youtube_1.bmp",
80
- "spec/images/youtube_2_0.bmp",
81
- "spec/images/youtube_2_5.bmp",
82
- "spec/images/youtube_2_6.bmp",
83
- "spec/images/youtube_3_0.bmp",
84
- "spec/images/youtube_4.bmp",
85
- "spec/images/youtube_4_0.bmp",
86
- "spec/images/youtube_5.bmp",
87
- "spec/images/youtube_6.bmp",
88
- "spec/images/youtube_light_0.bmp",
89
- "spec/images/youtube_light_1_3.bmp",
90
- "spec/images/youtube_light_2_1.bmp",
91
- "spec/images/youtube_light_2_3.bmp",
92
- "spec/images/youtube_light_2_9.bmp",
93
- "spec/images/youtube_light_4.bmp",
94
- "spec/images/youtube_light_4_3.bmp",
95
- "spec/images/youtube_light_5.bmp",
96
- "spec/images/youtube_light_5_0.bmp",
97
- "spec/images/youtube_light_8.bmp",
98
- "spec/images/youtube_light_9.bmp",
99
- "spec/images/youtube_small_0.bmp",
100
- "spec/images/youtube_small_2.bmp",
101
- "spec/images/youtube_small_2_0.bmp",
102
- "spec/images/youtube_small_4.bmp",
103
- "spec/keyboard_input.spec.rb",
104
- "spec/mencoder_wrapper.spec.rb",
105
- "spec/mouse.spec.rb",
106
- "spec/muter.spec.rb",
107
- "spec/ocr.spec.rb",
108
- "spec/overlayer.spec.rb",
109
- "spec/screen_tracker.spec.rb",
110
- "spec/sensible_cinema_gui.spec.rb",
111
- "spec/silence.wav",
112
- "spec/swing_helpers.spec.rb",
113
- "spec/test_yaml.yml",
114
- "spec/vlc_programmer.spec.rb",
115
- "todo_if_need_speed",
116
- "vendor/gocr049.exe",
117
- "zamples/edit_decision_lists/category descriptions.txt",
118
- "zamples/edit_decision_lists/dvds/White Christmas.txt",
119
- "zamples/edit_decision_lists/dvds/all_dogs_go_to_heaven.txt",
120
- "zamples/edit_decision_lists/dvds/bobs_big_plan.txt",
121
- "zamples/edit_decision_lists/dvds/cars_disney.txt",
122
- "zamples/edit_decision_lists/dvds/happiest baby on the block.txt",
123
- "zamples/edit_decision_lists/dvds/happy_feet.txt",
124
- "zamples/edit_decision_lists/dvds/labyrinth.txt",
125
- "zamples/edit_decision_lists/dvds/making marriage work.txt",
126
- "zamples/edit_decision_lists/example_edit_decision_list.txt",
127
- "zamples/edit_decision_lists/star_trek_generations_hulu.txt",
128
- "zamples/edit_decision_lists/youtube/gummy_bear_song_youtube.txt",
129
- "zamples/edit_decision_lists/youtube/nuki_song_youtube.txt",
130
- "zamples/players/how_to_create_more_players.txt",
131
- "zamples/players/hulu/total_length_over_an_hour.txt",
132
- "zamples/players/vlc/full_screened_total_length_over_an_hour.txt",
133
- "zamples/players/vlc/windowed_total_length_over_an_hour.txt",
134
- "zamples/players/vlc/windowed_total_length_under_an_hour.txt",
135
- "zamples/players/youtube/full_screened_1024x768.txt",
136
- "zamples/players/youtube/full_screened_1152x864.txt",
137
- "zamples/players/youtube/full_screened_1680x1050.txt",
138
- "zamples/players/youtube/normal_in_youtube.com.chrome.txt",
139
- "zamples/players/youtube/note_these_assume_less_than_10_minutes_length.txt"
24
+ "LICENSE",
25
+ "README",
26
+ "Rakefile",
27
+ "TODO",
28
+ "VERSION",
29
+ "bin/sensible-cinema",
30
+ "bin/sensible-cinema-cli",
31
+ "experimental_readme.txt",
32
+ "ext/mkrf_conf.rb",
33
+ "gplv3.txt",
34
+ "lib/add_any_bundled_gems_to_load_path.rb",
35
+ "lib/blanker.rb",
36
+ "lib/drive_info.rb",
37
+ "lib/edl_parser.rb",
38
+ "lib/fake_blanker.rb",
39
+ "lib/file_chooser.rb",
40
+ "lib/keyboard_input.rb",
41
+ "lib/mencoder_wrapper.rb",
42
+ "lib/mouse.rb",
43
+ "lib/mouse_forever.rb",
44
+ "lib/muter.rb",
45
+ "lib/ocr.rb",
46
+ "lib/overlayer.rb",
47
+ "lib/screen_tracker.rb",
48
+ "lib/storage.rb",
49
+ "lib/swing_helpers.rb",
50
+ "lib/vlc_programmer.rb",
51
+ "never_do",
52
+ "run_sensible_cinema.bat",
53
+ "run_sensible_cinema_in_create_mode.bat",
54
+ "sensible-cinema.gemspec",
55
+ "spec/blanker.spec.rb",
56
+ "spec/common.rb",
57
+ "spec/convert_image.rb",
58
+ "spec/drive_info.spec.rb",
59
+ "spec/edl_parser.spec.rb",
60
+ "spec/images/black.bmp",
61
+ "spec/images/colon.bmp",
62
+ "spec/images/hulu_0.bmp",
63
+ "spec/images/hulu_2.bmp",
64
+ "spec/images/hulu_2_3.bmp",
65
+ "spec/images/hulu_2_4.bmp",
66
+ "spec/images/hulu_3.bmp",
67
+ "spec/images/hulu_3_4.bmp",
68
+ "spec/images/hulu_4.bmp",
69
+ "spec/images/hulu_4_4.bmp",
70
+ "spec/images/hulu_5.bmp",
71
+ "spec/images/hulu_7.bmp",
72
+ "spec/images/hulu_8.bmp",
73
+ "spec/images/hulu_slash.bmp",
74
+ "spec/images/vlc_0.bmp",
75
+ "spec/images/vlc_2_4.bmp",
76
+ "spec/images/vlc_2_6.bmp",
77
+ "spec/images/vlc_4.bmp",
78
+ "spec/images/vlc_5.bmp",
79
+ "spec/images/vlc_6.bmp",
80
+ "spec/images/vlc_9.bmp",
81
+ "spec/images/vlc_colon.bmp",
82
+ "spec/images/youtube_0.bmp",
83
+ "spec/images/youtube_1.bmp",
84
+ "spec/images/youtube_2_0.bmp",
85
+ "spec/images/youtube_2_5.bmp",
86
+ "spec/images/youtube_2_6.bmp",
87
+ "spec/images/youtube_3_0.bmp",
88
+ "spec/images/youtube_4.bmp",
89
+ "spec/images/youtube_4_0.bmp",
90
+ "spec/images/youtube_5.bmp",
91
+ "spec/images/youtube_6.bmp",
92
+ "spec/images/youtube_light_0.bmp",
93
+ "spec/images/youtube_light_1_3.bmp",
94
+ "spec/images/youtube_light_2_1.bmp",
95
+ "spec/images/youtube_light_2_3.bmp",
96
+ "spec/images/youtube_light_2_9.bmp",
97
+ "spec/images/youtube_light_4.bmp",
98
+ "spec/images/youtube_light_4_3.bmp",
99
+ "spec/images/youtube_light_5.bmp",
100
+ "spec/images/youtube_light_5_0.bmp",
101
+ "spec/images/youtube_light_8.bmp",
102
+ "spec/images/youtube_light_9.bmp",
103
+ "spec/images/youtube_small_0.bmp",
104
+ "spec/images/youtube_small_2.bmp",
105
+ "spec/images/youtube_small_2_0.bmp",
106
+ "spec/images/youtube_small_4.bmp",
107
+ "spec/keyboard_input.spec.rb",
108
+ "spec/mencoder_wrapper.spec.rb",
109
+ "spec/mouse.spec.rb",
110
+ "spec/muter.spec.rb",
111
+ "spec/ocr.spec.rb",
112
+ "spec/overlayer.spec.rb",
113
+ "spec/screen_tracker.spec.rb",
114
+ "spec/sensible_cinema_gui.spec.rb",
115
+ "spec/silence.wav",
116
+ "spec/swing_helpers.spec.rb",
117
+ "spec/test_yaml.yml",
118
+ "spec/vlc_programmer.spec.rb",
119
+ "todo_if_need_speed",
120
+ "vendor/gocr049.exe",
121
+ "vendor/unzip.exe",
122
+ "zamples/edit_decision_lists/category descriptions.txt",
123
+ "zamples/edit_decision_lists/dvds/bobs_big_plan.txt",
124
+ "zamples/edit_decision_lists/dvds/happiest baby on the block.txt",
125
+ "zamples/edit_decision_lists/dvds/old_and_inaccurate/White Christmas.txt",
126
+ "zamples/edit_decision_lists/dvds/old_and_inaccurate/all_dogs_go_to_heaven.txt",
127
+ "zamples/edit_decision_lists/dvds/old_and_inaccurate/cars_disney.txt",
128
+ "zamples/edit_decision_lists/dvds/old_and_inaccurate/happy_feet.txt",
129
+ "zamples/edit_decision_lists/dvds/old_and_inaccurate/labyrinth.txt",
130
+ "zamples/edit_decision_lists/dvds/old_and_inaccurate/making marriage work.txt",
131
+ "zamples/edit_decision_lists/dvds/old_and_inaccurate/star_trek_generations_hulu.txt",
132
+ "zamples/edit_decision_lists/example_edit_decision_list.txt",
133
+ "zamples/edit_decision_lists/old_not_yet_update/youtube/gummy_bear_song_youtube.txt",
134
+ "zamples/edit_decision_lists/old_not_yet_update/youtube/nuki_song_youtube.txt",
135
+ "zamples/players/how_to_create_more_players.txt",
136
+ "zamples/players/hulu/total_length_over_an_hour.txt",
137
+ "zamples/players/vlc/full_screened_total_length_over_an_hour.txt",
138
+ "zamples/players/vlc/windowed_total_length_over_an_hour.txt",
139
+ "zamples/players/vlc/windowed_total_length_under_an_hour.txt",
140
+ "zamples/players/youtube/full_screened_1024x768.txt",
141
+ "zamples/players/youtube/full_screened_1152x864.txt",
142
+ "zamples/players/youtube/full_screened_1680x1050.txt",
143
+ "zamples/players/youtube/normal_in_youtube.com.chrome.txt",
144
+ "zamples/players/youtube/note_these_assume_less_than_10_minutes_length.txt"
140
145
  ]
141
146
  s.homepage = %q{http://github.com/rdp}
142
- s.rdoc_options = ["--charset=UTF-8"]
143
147
  s.require_paths = ["lib"]
144
148
  s.rubygems_version = %q{1.3.6}
145
149
  s.summary = %q{an EDL scene-selector/bleeper that works with online players like hulu}
146
150
  s.test_files = [
147
151
  "spec/blanker.spec.rb",
148
- "spec/common.rb",
149
- "spec/convert_image.rb",
150
- "spec/drive_info.spec.rb",
151
- "spec/keyboard_input.spec.rb",
152
- "spec/mencoder_wrapper.spec.rb",
153
- "spec/mouse.spec.rb",
154
- "spec/muter.spec.rb",
155
- "spec/ocr.spec.rb",
156
- "spec/overlayer.spec.rb",
157
- "spec/screen_tracker.spec.rb",
158
- "spec/sensible_cinema_gui.spec.rb",
159
- "spec/swing_helpers.spec.rb",
160
- "spec/vlc_programmer.spec.rb"
152
+ "spec/common.rb",
153
+ "spec/convert_image.rb",
154
+ "spec/drive_info.spec.rb",
155
+ "spec/edl_parser.spec.rb",
156
+ "spec/keyboard_input.spec.rb",
157
+ "spec/mencoder_wrapper.spec.rb",
158
+ "spec/mouse.spec.rb",
159
+ "spec/muter.spec.rb",
160
+ "spec/ocr.spec.rb",
161
+ "spec/overlayer.spec.rb",
162
+ "spec/screen_tracker.spec.rb",
163
+ "spec/sensible_cinema_gui.spec.rb",
164
+ "spec/swing_helpers.spec.rb",
165
+ "spec/vlc_programmer.spec.rb"
161
166
  ]
162
167
 
163
168
  if s.respond_to? :specification_version then