Class: Plexify::MediaManager

Inherits:
Object
  • Object
show all
Includes:
Amatch
Defined in:
lib/plexify/media_manager.rb

Instance Method Summary collapse

Constructor Details

#initializeMediaManager

Initialize variables and load tmdb media manager



6
7
8
9
10
# File 'lib/plexify/media_manager.rb', line 6

def initialize
  @tmdb_api_key = nil
  @tmdb_default_language = nil
  load_tmdb
end

Instance Method Details

#analyze(file) ⇒ Object

Search for a media in the Tmdb media manager database.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/plexify/media_manager.rb', line 13

def analyze(file)
  name = File.basename(file.path, File.extname(file.path))
  splitted_name = name.split(/\W/).map(&:downcase)
  found_medias = analyze_names(splitted_name, {})

  medias = Array.new
  found_medias.each_pair do |title, list|
    for media in list
      medias << media if medias.empty?
      unless medias.map(&:data).map(&:id).include?(media.data.id)
        media.found_title = title
        medias << media
      end
    end
  end

  # Check differences betweend the file title
  # and found medias names
  title = name.gsub(/\W/, " ").downcase
  for media in medias
    name = media.data.name.downcase
    media.score = title.hamming_similar(name)
  end

  # Compare title with original media name
  # if the score is better, it selects it
  for media in medias
    name = media.data.original_name.downcase
    score = title.hamming_similar(name)
    media.score = score if score > media.score
  end

  # Return ten last medias sort by score
  return medias.sort_by(&:score).reverse.delete_if {|m| medias.index(m) > 10 }
end