#!/usr/bin/env python
"""
geth_movie

Usage: get_movie "imdbID"

Show some infos about the movie with the given imdbID (e.g. '0133093'
for "The Matrix".
"""

import sys

# Import the IMDbPY package.
try:
    import imdb
except ImportError:
    print 'You bad boy!  You need to install the IMDbPY package!'
    sys.exit(1)


if len(sys.argv) != 2:
    print 'Only one argument is required:'
    print '  %s "imdbID"' % sys.argv[0]
    sys.exit(2)

imdbID = sys.argv[1]

i = imdb.IMDb()

try:
    # Get a Movie object with the data about the movie identified by
    # the given imdbID.
    movie = i.get_movie(imdbID)
except imdb.IMDbError, e:
    print "Probably you're not connected to Internet.  Complete error report:"
    print e
    sys.exit(3)


if not movie:
    print 'It seems that there\'s no movie with imdbID "%s"' % imdbID
    sys.exit(4)

# XXX: this is the easier way to print the main infos about a movie;
# calling print or str() on a Movie object calls the __str__() method
# of the Movie class, which returns a string with the main infos
# about the movie.
# Obviously it's not really meaningful if you want to know how
# to access the data stored in a Movie object, so look below; the
# commented lines show some ways to retrieve informations from a
# Movie object.
print movie

# Show some infos about the movie.
# This is only a short example; you can get a longer summary using
# 'print movie' and the complete seto of informations looking for
# the output of the movie.keys() method.
#print '==== "%s" / imdbID: %s ====' % (movie['title'], imdbID)
#if movie.imdbURL:
#    # XXX: get an information that is set directly by the Movie object.
#    print 'IMDb URL: %s' % movie.imdbURL
#
# XXX: many keys return a list of values, like "genres".
#genres = movie.get('genres')
#if genres:
#    print 'Genres: %s' % ' '.join(genres)
#
# XXX: even when only one value is present (e.g.: movie with only one
#      director), fields that can be multiple are ALWAYS a list.
#director = movie.get('director')
#if director:
#    print 'Director(s): ',
#    for name in director:
#        sys.stdout.write('%s ' % name)
#    print ''
#
# XXX: notice that every name in the cast is separated with '::' from the
#      interpreted role.
#cast = movie.get('cast')
#if cast:
#    print 'Cast: '
#    cast = cast[:5]
#    for name in cast:
#        print '      %s' % name
# XXX: some informations are not lists, but simple strings, like 'rating'.
#rating = movie.get('rating')
#if rating:
#    print 'Rating: %s' % rating


