Exemple #1
0
 def __init__(self):
     self.tmdb = TMDB('xml', 'en')
Exemple #2
0
class TMDBManager(object):

    def __init__(self):
        self.tmdb = TMDB('xml', 'en')

    def __searchmovie__(self, movie):
        return self.tmdb.searchResults(movie.replace(" ", "%20"))

    def __parse_tmdbid__(self, data):
        soup = BeautifulStoneSoup(data)
        return soup.movies.movie.id.contents[0]

    def __person_info_result__(self, data_dict):
        personlist = [] 
        for cast in data_dict['cast']:
            try:
                person_dict = {}
                personid = cast['id']
                person_info = self.tmdb.person_getInfo(personid)
                soup = BeautifulStoneSoup(person_info)
                person_tag = soup.people.person
           
                person_dict['tmdb_id'] = personid
                person_dict['popularity'] = person_tag.popularity.string
                person_dict['name'] = soup.find('name').string
                person_dict['also_known_as'] = person_tag.also_known_as.string
                person_dict['biography'] = person_tag.biography.string
                person_dict['known_movies'] = person_tag.known_movies.string
                person_dict['birthday'] = person_tag.birthday.string
                person_dict['birthplace'] = person_tag.birthplace.string
                person_dict['url'] = person_tag.url.string
                person_dict['known_movies'] = person_tag.known_movies.string
                person_dict['filmography'] = [ {'name':movie['name'],
                                            'job':movie['job'],
                                            'department':movie['department'],
                                            'character':movie['character'],
                                            'url':movie['url'],
                                            'cast_id':movie['cast_id'],
                                            'poster':movie['poster'],
                                            'adult':movie['adult'],
                                            'release':movie['release']}
                                            for movie in person_tag.filmography.contents if movie!='\n' ]
                person_dict['images'] = [ { 'type':image['type'],
                                         'url':image['url'],
                                         'size':image['size'],
                                         'width':image['width'],
                                         'height':image['height'],
                                         'id':image['id'] }
                                         for image in person_tag.images.contents if image!='\n' ]  
                person_dict['version'] = person_tag.version.string
                person_dict['last_modified_at'] = person_tag.last_modified_at.string
                personlist.append(person_dict)
            except Exception as e:
                print "Unexpected error:", sys.exc_info()[0]
        return personlist

    def __movie_info_result__(self, tmdb_id):
        movie_dict = {}
        movie_info = self.tmdb.getInfo(tmdb_id)
        soup = BeautifulStoneSoup(movie_info)
        movie_tag = soup.movies.movie

        movie_dict['tmdb_id'] = tmdb_id
        movie_dict['popularity'] = movie_tag.popularity.string
        movie_dict['translated'] = movie_tag.translated.string
        movie_dict['adult'] = movie_tag.adult.string
        movie_dict['language'] = movie_tag.language.string
        movie_dict['original_name'] = movie_tag.original_name.string
        movie_dict['name'] = soup.find('name').string
        movie_dict['alternative_name'] = movie_tag.alternative_name.string if movie_tag.alternative_name.contents else ''
        movie_dict['imdb_id'] = movie_tag.imdb_id.string
        movie_dict['overview'] = movie_tag.overview.string
        movie_dict['votes'] = movie_tag.votes.string
        movie_dict['rating'] = movie_tag.votes.string
        movie_dict['tagline'] = movie_tag.tagline.string if movie_tag.tagline.contents else ''
        movie_dict['released'] = movie_tag.released.string
        movie_dict['runtime'] = movie_tag.runtime.string if movie_tag.runtime.contents else ''
        movie_dict['budget'] = movie_tag.budget.string if movie_tag.budget.string else ''
        movie_dict['revenue'] = movie_tag.revenue.string if movie_tag.revenue.string else ''
        movie_dict['homepage'] = movie_tag.homepage.string if movie_tag.homepage.string else ''
        movie_dict['trailer'] = movie_tag.trailer.string if movie_tag.trailer.string else ''
        movie_dict['version'] = movie_tag.version.string  
        movie_dict['studios'] = [ { 'name': studio['name'] } for studio in movie_tag.studios.contents if studio!='\n' ]
        movie_dict['images'] = [ { 'url': image['url'],
                                   'type': image['type'],
                                   'size': image['size'],
                                   'width': image['width'],
                                   'height': image['height'],
                                   'id': image['id'] }
                                    for image in movie_tag.images.contents if image!='\n']
        movie_dict['keywords'] = [ { 'name': keyword['name'] } 
                                   for keyword in movie_tag.keywords.contents if keyword!='\n']
        movie_dict['countries'] = [ { 'country': country['name'] }
                                    for country in movie_tag.countries.contents if country!='\n']
        movie_dict['categories'] = [ { 'type': category['type'],
                                       'name': category['name'],
                                       'url': category['url'],
                                       'id': category['id'] }
                                        for category in movie_tag.categories.contents if category!='\n' ]
        movie_dict['cast'] = [ { 'name': (person['name']).encode('utf-8'),
                                 'character': (person['character']).encode('utf-8'),
                                 'job': person['job'],
                                 'id': person['id'],
                                 'thumb': person['thumb'],
                                 'department': person['department'],
                                 'url': person['url'],
                                 'order': person['order'],
                                 'cast_id': person['cast_id'] }
                                 for person in movie_tag.cast.contents if person!='\n' ]
        movie_dict['last_modified_at'] = movie_tag.last_modified_at.string
        return movie_dict

    def movie_info(self, movie):
        try:
            search_result =self.__searchmovie__(movie)
            tmdb_id = self.__parse_tmdbid__(search_result)
            return self.__movie_info_result__(tmdb_id)
        except Exception as e:
            #error = "%s %s: \n%s\n" % (datetime.datetime.now(), movie, sys.exc_info())
            #print error
            with open(LOG_FILE, 'a') as f:
                f.write(error)
            raise e
        return None

    def person_info(self, data_dict):
        try:
            return self.__person_info_result__(data_dict)
        except Exception:
            error = "%s %s: \n%s\n" % (datetime.datetime.now(), movie, sys.exc_info())
            print error
            with open(LOG_FILE, 'a') as f:
                f.write(error)
        return None