Class: AppleTvConverter::Metadata::MovieDb

Inherits:
Object
  • Object
show all
Defined in:
lib/apple_tv_converter/metadata/movie_db.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
75
76
77
78
79
# File 'lib/apple_tv_converter/metadata/movie_db.rb', line 4

def self.(media, interactive = true, language = 'en')
  show_id = nil

  if media.(:tmdb, :show)
    # We have an id, assume it for the search
    show_id = media.(:tmdb, :show)
  else
    printf  "* Searching TheMovieDb.org "

    # Query the data
    results = search(media)
    if results
      puts "[DONE]"

      if results[:total_results] > 0
        if results[:total_results] == 1 || !interactive
          # Only 1 result, or non-interactive, use the first result
          show_id = results[:results].first[:id]
        else
          # More than one result, ask the user
          choice = 0
          puts "\n  *"

          while true
            puts %Q[  | Several shows found, choose the intended one:]

            results[:results].each_with_index do |item, index|
              puts "  | #{(index + 1).to_s.rjust(results[:total_results].to_s.length)} - #{item[:title]} (#{Date.parse(item[:release_date]).year}) (id: #{item[:id]})"
            end

            printf "  |\n  *- What's your choice (1..#{results[:results].length})? "
            choice = STDIN.gets.chomp.to_i

            break if choice.between?(1, results[:results].length)

            puts "  | Invalid choice!"
            puts "  |"
          end

          show_id = results[:results][choice - 1][:id]
        end
      else
        # It's not found, return false to continue with other services
        return false
      end
    else
      puts "[ERROR]"
    end
  end

  if show_id.to_i > 0
    printf  "* Fetching metadata from TheMovieDb.org "

    # Fetch the detailed data
    data = get(show_id)

    if data
      puts "[DONE]"
      media..name = data[:title]
      media..genre = data[:genres].first[:name]
      media..description = data[:overview]
      media..release_date = data[:release_date]
      # media.metadata.screenwriters = data[:release_date]
      # media.metadata.director = data[:release_date]
      # media.metadata.codirector = data[:release_date]
      media..artwork = poster_url(data[:poster_path])

      media.release_date = Date.parse(media..release_date).year
      media. :tmdb, :show, show_id

      return true
    else
      puts "[ERROR]"
    end
  end
end