class SrtSlicer::SrtSlicer

Public Class Methods

new(input_file, srt_file, start_time=nil, end_time=nil) click to toggle source
# File lib/srt_slicer.rb, line 6
def initialize(input_file, srt_file, start_time=nil, end_time=nil)
  @input_file = input_file.split(".")
  @srt_file = srt_file
  @start_time = start_time
  @end_time = end_time
  @output_files = []
end

Public Instance Methods

clear() click to toggle source
# File lib/srt_slicer.rb, line 35
def clear
  @output_files.each { |f| system "rm #{f}" }
end
slice() click to toggle source
# File lib/srt_slicer.rb, line 14
def slice
  f = open(srt_file)
  num = 1
  f.each do |line|
    next unless line.index("-->")
    line = line.chomp.split(" ")
    delta = Time.parse(line[2]) - Time.parse(line[0])
    current = line[0].gsub(',', '.')
    output_file = "#{input_file[0]}-#{num.to_s.rjust(3, 0.to_s)}.#{input_file[1]}"

    next unless (start_time.nil? && end_time.nil?) ||
      (Time.parse(current) > Time.parse(start_time) &&
      Time.parse(line[2]) < Time.parse(end_time))

    system "ffmpeg -ss #{current} -t #{delta} -i #{input_file.join(".")} #{output_file}"
    @output_files << output_file
    num += 1
  end
  f.close
end

Private Instance Methods

end_time() click to toggle source
# File lib/srt_slicer.rb, line 52
def end_time
  @end_time
end
input_file() click to toggle source
# File lib/srt_slicer.rb, line 40
def input_file
  @input_file
end
srt_file() click to toggle source
# File lib/srt_slicer.rb, line 44
def srt_file
  @srt_file
end
start_time() click to toggle source
# File lib/srt_slicer.rb, line 48
def start_time
  @start_time
end