module TTVDB::Match

Public Instance Methods

match_episode(filename, opts = {}) click to toggle source
# File lib/ttvdb/match.rb, line 3
def match_episode filename, opts = {}
  episode = nil
  case opts[:filter]
    when :sorted
      episode = match_episode_sorted filename, opts
    when :name
      episode = match_episode_name filename, opts
    when :regex
      episode = match_episode_regex filename, opts
    else
      # try all
      episode = match_episode_regex filename, opts rescue nil
      episode ||= match_episode_name filename, opts rescue nil
      episode ||= match_episode_sorted filename, opts rescue nil
  end
  episode
end

Private Instance Methods

get_episode(filename) click to toggle source
# File lib/ttvdb/match.rb, line 49
def get_episode filename
  filter_episode = [
    /e(\d+)/i,
    /(\d+)/i
  ]
  filter_episode.each do |r|
    m = filename.match(r)
    if m
      return m[1].to_i rescue nil
    end
  end
end
get_season(filename) click to toggle source
# File lib/ttvdb/match.rb, line 62
def get_season filename
  filter_season = [
    /s(\d+)/i,
    /season.*(\d+)/i,
    /staffel.*(\d+)/i,
    /(\d+)x/i,
    /(\d+)-/i
  ]
  filter_season.each do |r|
    m = filename.match(r)
    if m
      return m[1].to_i rescue nil
    end
  end
end
match_episode_name(filename, opts = {}) click to toggle source
# File lib/ttvdb/match.rb, line 27
def match_episode_name filename, opts = {}
  results = []
  episodes.each do |episode|
    next unless episode.name
    min = opts[:min]
    min ||= 60
    results << episode if episode.name.similar(filename) >= min
  end
  if results.count == 0
    results = nil
  elsif results.count == 1
    results = results[0]
  end
  return results
end
match_episode_regex(filename, opts = {}) click to toggle source
# File lib/ttvdb/match.rb, line 43
def match_episode_regex filename, opts = {}
  snum = get_season filename
  enum = get_episode filename
  seasons[snum][enum] rescue nil
end
match_episode_sorted(filename, opts = {}) click to toggle source
# File lib/ttvdb/match.rb, line 22
def match_episode_sorted filename, opts = {}
  enum = get_episode filename
  return episodes[enum-1] rescue nil
end