Class: AppleTvConverter::Metadata::Imdb

Inherits:
Object
  • Object
show all
Defined in:
lib/apple_tv_converter/metadata/imdb.rb

Class Method Summary collapse

Class Method Details

.get_metadata(media, interactive = true, language = 'en') ⇒ Object



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.(media, interactive = true, language = 'en')
  printf "* Getting info from IMDB" if interactive

   = media.(:imdb, :show)

  if !
    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

     = 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

  # begin
    if 
      imdb_movie = ::Imdb::Movie.new()

      media..name = imdb_movie.title.gsub(/"/, '"')
      media..genre = imdb_movie.genres.first.gsub(/"/, '"') if imdb_movie.genres.any?
      media..description = imdb_movie.plot.gsub(/"/, '"') if imdb_movie.plot
      media.release_date = imdb_movie.year if imdb_movie.year
      media..director = (imdb_movie.director.first || '').gsub(/"/, '"') if imdb_movie.director.any?
      media..codirector = imdb_movie.director[1].gsub(/"/, '"') if imdb_movie.director.length > 1
      media..artwork = imdb_movie.poster if imdb_movie.poster

      media. :imdb, :show, 

      puts " [DONE]" if interactive
    end
  # rescue OpenURI::HTTPError => e
  #   media.set_metadata_id :imdb, :show, nil
  #   media.imdb_movie = nil
  #   puts (e.message =~ /404/ ? " [NOT FOUND]" : " [ERROR]") if interactive
  # rescue
  #   if media.get_metadata_id(:imdb, :show).nil?
  #     puts " [NOT FOUND]" if interactive
  #   else
  #     raise e
  #   end
  # end
end