Example #1
0
def search():
    query = request.args.get("query")
    limit = int(request.args.get("limit", 10))

    movies = OrderedDict()
    if query:
        movies = OrderedDict(
            (movie.imdb_id, movie)
            for movie in Series.objects(title__icontains=query))

        imdb = IMDb()
        for movie in imdb.search_movie(query, results=limit * 2):
            if movie.movieID in movies:
                continue
            if movie['kind'] not in [MOVIE, TV_SERIES]:
                continue

            cls = Movie if movie['kind'] == MOVIE else Series

            item = cls(imdb_id=movie.movieID)
            item.year = int(movie.get('year', 0)) or None
            item.title = movie['title']

            movies[item.imdb_id] = item

    return jsonify(movies=[movie.json for movie in movies.values()[:limit]])
Example #2
0
def episodes():
    imdb_id = request.args.get('imdb_id')

    result = []
    current = None
    if imdb_id:
        tv_series = Series.objects(imdb_id=imdb_id).first()
        last = None

        if tv_series:
            seasons = Season.objects(series=tv_series)
            if seasons:
                last = Episode.objects(
                    season__in=[season.pk for season in seasons]).order_by(
                        '-season.number', '-number').first()

        imdb = IMDb()
        series = imdb.get_movie(imdb_id)
        imdb.update(series, 'episodes')

        if last:
            season = last.season.number
            episode = last.number

            while True:
                if season not in series['episodes']:
                    season = sorted(series['episodes'].keys())[-1]

                season_data = series['episodes'][season]

                if episode not in season_data:
                    episode = sorted(season_data.keys())[-1]

                if (episode + 1) not in season_data:
                    season += 1
                    episode = 1

                    continue

                episode += 1
                break

        else:
            season = sorted(series['episodes'].keys())[-1]
            season_data = series['episodes'][season]
            episode = sorted(season_data.keys())[-1]

        current = 'S%02dE%02d' % (season, episode)

        if not tv_series:
            tv_series = Series(imdb_id=series.movieID, title=series['title'])

        for season, episodes in series['episodes'].items():
            season = Season(number=season, series=tv_series)
            for episode, data in episodes.items():
                episode = Episode(
                    season=season, title=data['title'], number=episode)
                result.append(episode)

    return jsonify(episodes=[episode.json for episode in result],
                   current=current)