class VideoFile
Constants
- SPLITS
Attributes
date[RW]
episode_name[RW]
episode_number[RW]
extension[RW]
filename[RW]
format[RW]
orig_show[RW]
production_code[RW]
rename_by_date[RW]
season[RW]
Public Class Methods
new(filename)
click to toggle source
# File lib/tv_renamer/renamer.rb, line 31 def initialize(filename) @filename = filename @extension ||= @filename.split('.').pop @show_pieces = Array.new cleaned_filename = @filename.delete("[]").gsub(" - ", " ").gsub(/\([-\w]+\)/, '') if date_match = cleaned_filename.match(/\d\d\.\d\d\.\d{4}/) @date = Date.parse(date_match[0].gsub('.', '/')).strftime("%d %b %y") # remove leading zeros @date = @date[1..-1] if @date[0..0] == '0' # remove date from filename to prevent matching parts of date as season or episode number cleaned_filename = [date_match.pre_match, date_match.post_match].join('[date]') end SPLITS.each do |char| clear_variables pieces = remove_extension(cleaned_filename).split(char) parse_showname(pieces) if pieces.length > 1 break if parsed_ok? end end
Public Instance Methods
clear_variables()
click to toggle source
# File lib/tv_renamer/renamer.rb, line 59 def clear_variables @orig_show = @show = @season = @episode_name = @episode_number = @production_code = @date = nil @show_pieces = Array.new end
parse_showname(pieces)
click to toggle source
# File lib/tv_renamer/renamer.rb, line 68 def parse_showname(pieces) date = false pieces.each do |piece| if match = piece.match(/^[sS]([0-9]{1,2})[eE]([0-9]{1,3})$/) @season = match[1] @episode_number = match[2] if(@season[0].chr == '0') then @season.delete!("0") end if(@episode_number[0].chr == '0') then @episode_number.delete!("0") end break elsif match = piece.match(/^[sS]([0-9]{1,2})$/) @season = match[1] if(@season[0].chr == '0') then @season.delete!("0") end if(@episode_number) then break end elsif match = piece.match(/^[eE]([0-9]{1,3})$/) @episode_number = match[1] if(@episode_number[0].chr == '0') then @episode_number.delete!("0") end if(@season) then break end elsif match = piece.match(/^([0-9]{1,2})[xX]([0-9]{1,3})$/) @season = match[1] @episode_number = match[2] if(@season[0].chr == '0') then @season.delete!("0") end if(@episode_number[0].chr == '0') then @episode_number.delete!("0") end break elsif ( (match = piece.match(/^[0-9]{3,4}$/)) and !( show_name_from_tokens.downcase == "the" || # Work around for "The 4400" show_name_from_tokens.downcase == "sealab" || # Work around for "Sealab 2021" (show_name_from_tokens.downcase == "knight rider" and match.to_s == "2008") || # Work around for "Knight Rider 2008" (show_name_from_tokens.downcase == "90210" and match.to_s == "90210") # Work around for 90210 ) ) piece = match.to_s if piece.length == 3 @season = piece[0].chr @episode_number = piece[1..2] if(@episode_number[0].chr == '0') then @episode_number.delete!("0") end else @season = piece[0..1] @episode_number = piece[2..3] if(@season[0].chr == '0') then @season.delete!("0") end if(@episode_number[0].chr == '0') then @episode_number.delete!("0") end end break elsif piece == "[date]" date = true else if !date if !@orig_show @show_pieces.push camelize(piece) end end end end end
parsed_ok?()
click to toggle source
# File lib/tv_renamer/renamer.rb, line 64 def parsed_ok? show && ((@episode_number && @season) || (@rename_by_date && @date)) end
show()
click to toggle source
# File lib/tv_renamer/renamer.rb, line 18 def show @orig_show ||= show_name_from_tokens @show ? @show : @orig_show end
show=(show)
click to toggle source
# File lib/tv_renamer/renamer.rb, line 23 def show=(show) @show = show end
to_s()
click to toggle source
# File lib/tv_renamer/renamer.rb, line 27 def to_s [show, @season, @episode_number, @date, @production_code, @episode_name].join(' : ') end
Private Instance Methods
camelize(string)
click to toggle source
# File lib/tv_renamer/renamer.rb, line 129 def camelize(string) string[0] = string[0].chr.upcase string end
remove_extension(file)
click to toggle source
# File lib/tv_renamer/renamer.rb, line 134 def remove_extension(file) file.gsub(".#{@extension}", '') end
show_name_from_tokens()
click to toggle source
# File lib/tv_renamer/renamer.rb, line 138 def show_name_from_tokens @show_pieces.join ' ' end