Skip to content

Instantly share code, notes, and snippets.

@theirix
Created October 17, 2011 16:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save theirix/1293074 to your computer and use it in GitHub Desktop.
Save theirix/1293074 to your computer and use it in GitHub Desktop.
Rename srt file by the movie episode name
#!/usr/bin/env ruby
require 'fileutils'
raise 'This is ruby 1.9 script' if RUBY_VERSION =~ /^1\.8/
def process file, simulate
raise 'Please point at movie file' if (File.extname(file) == '.srt' || !File.file?(file))
name = File.basename(file)
if name =~ /^([0-9]+)/
short = $1
full = "E%02d" % $1.to_i
elsif name =~ /S([0-9]+)E([0-9]+)/
short = $2
full = $&
end
#puts 'Short ' + short + ', full ' + full + ' for file ' + file
srt_file = Dir.glob(File.dirname(file) + "/*#{full}*.srt")[0]
srt_file = Dir.glob(File.dirname(file) + "/*#{short}*.srt")[0] unless srt_file
raise 'No srt file for movie ' + file unless srt_file
to_srt_file = File.dirname(file) + '/' + File.basename(file, File.extname(file)) + '.srt'
if File.absolute_path(File.expand_path(srt_file)) == File.absolute_path(File.expand_path(to_srt_file))
STDERR.puts 'Subtitle already exists ' + srt_file
else
STDERR.puts((simulate ? 'Simulate renaming ' : 'Renaming ' ) + srt_file + ' to ' + to_srt_file)
FileUtils.mv srt_file, to_srt_file unless simulate
end
end
if ARGV[0] == '-n'
simulate = true
ARGV.shift
end
result = true
ARGV.each do |file|
begin
process(file, simulate)
rescue
puts 'ERROR ' + $!.to_s
result = false
end
end
exit(result ? 0 : 1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment