4
5
6
7
8
9
10
11
12
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/apple_tv_converter/metadata/imdb.rb', line 4
def self.get_metadata(media, interactive = true, language = 'en')
printf "* Getting info from IMDB" if interactive
metadata_id = media.get_metadata_id(:imdb, :show)
if !metadata_id
search = ::Imdb::Search.new(media.show)
search.movies.delete_if do |item|
item.title.strip =~ /(?:(?:\(TV\s*(?:Movie|(?:Mini.?)?Series|Episode))|(?:Video(?:\s*Game)?))/i
end
metadata_id = if search.movies.length > 1 && interactive
choice = 0
puts "\n *"
while true
puts %Q[ | Several movies found, choose the intended one#{" (showing only the first 20 of #{search.movies.length} results)" if search.movies.length > 20}:]
search.movies[0...20].each_with_index do |item, index|
puts " | #{(index + 1).to_s.rjust(search.movies.length.to_s.length)} - #{item.title.strip} (id: #{item.id})"
if item.also_known_as.any?
akas = item.also_known_as[0...5].each do |aka|
puts " | #{' '.rjust(search.movies.length.to_s.length)} AKA: #{(aka.is_a?(Hash) ? aka[:title] : aka).strip}"
end
end
end
printf " |\n *- What's your choice (1..#{[search.movies.length, 20].min})? "
choice = STDIN.gets.chomp.to_i
break if choice.between?(1, [search.movies.length, 20].min)
puts " | Invalid choice!"
puts " |"
end
printf " * Getting info from IMDB"
search.movies[choice - 1].id
else
search.movies.first.id rescue nil
end
end
if metadata_id
imdb_movie = ::Imdb::Movie.new(metadata_id)
media.metadata.name = imdb_movie.title.gsub(/"/, '"')
media.metadata.genre = imdb_movie.genres.first.gsub(/"/, '"') if imdb_movie.genres.any?
media.metadata.description = imdb_movie.plot.gsub(/"/, '"') if imdb_movie.plot
media.release_date = imdb_movie.year if imdb_movie.year
media.metadata.director = (imdb_movie.director.first || '').gsub(/"/, '"') if imdb_movie.director.any?
media.metadata.codirector = imdb_movie.director[1].gsub(/"/, '"') if imdb_movie.director.length > 1
media.metadata.artwork = imdb_movie.poster if imdb_movie.poster
media.set_metadata_id :imdb, :show, metadata_id
puts " [DONE]" if interactive
end
end
|