Class: Plexify::MediaManager
- Inherits:
-
Object
- Object
- Plexify::MediaManager
- Includes:
- Amatch
- Defined in:
- lib/plexify/media_manager.rb
Instance Method Summary collapse
-
#analyze(file) ⇒ Object
Search for a media in the Tmdb media manager database.
-
#initialize ⇒ MediaManager
constructor
Initialize variables and load tmdb media manager.
Constructor Details
#initialize ⇒ MediaManager
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 |