Пример #1
0
def sync_loaded_movies(logger, **kwargs):
    user_id = kwargs.get('user_id')
    pattern = re.compile(ur'^([a-zA-ZА-Яа-я\d\s:&\'-]+)\s*\(?(\d{4})?\)?$')

    path = instance.config.get('LOADED_MOVIE_PATH')
    prefix = 'Process loaded movies'

    logger.info('%s: start.' % prefix)
    for root, dirs, files in os.walk(path):
        for filename in files:
            if filename.endswith('.mkv'):
                name = filename[:-4]
                matches = pattern.findall(name)
                logger.info('%s: %s founded.' % (prefix, name))

                try:
                    movie = Movie.query.filter_by(
                        year=matches[0][1]).whoosh_search(matches[0][0]).one()
                except NoResultFound:
                    logger.info('%s: %s does not exists.' % (prefix, name))
                    redis.sadd('missind_loaded_movies', name)
                else:
                    try:
                        params = [
                            Watchlist.user_id == user_id,
                            Watchlist.movie_id == movie.id
                        ]
                        watchlist_movie = Watchlist.query.filter(*params).one()
                    except NoResultFound:
                        watchlist_movie = Watchlist(user_id=user_id,
                                                    movie_id=movie.id)
                        logger.info('%s: %s add movie to watchlist' % (
                                    prefix, name))
                        db.session.add(watchlist_movie)

                    watchlist_movie.status = Watchlist.LOADED_MOVIE
                    watchlist_movie.path = filename
                    logger.info('%s: %s update movie in watchlist' % (
                                prefix, name))

                    try:
                        db.session.commit()
                    except IntegrityError:
                        db.session.rollback()
    logger.info('%s: finished.' % prefix)
Пример #2
0
def sync_encoded_movies(logger, **kwargs):
    user_id = kwargs.get('user_id')
    pattern = re.compile(ur'^([a-zA-ZА-Яа-я\d\s:&\'-]+) \(?(\d{4})?\)?$')

    path = instance.config.get('MOVIE_COLLECTION_PATH')
    prefix = 'Process movies in collection'

    logger.info('%s: start.' % prefix)
    for root, dirs, files in os.walk(path):
        name = root.replace(path, '').encode('utf-8')
        matches = pattern.findall(name)
        logger.info('%s: %s founded.' % (prefix, name))

        if matches:
            try:
                movie = Movie.query.filter_by(
                    year=matches[0][1]).whoosh_search(matches[0][0]).one()
            except NoResultFound:
                redis.sadd('missing_encoded_movies', name)
            else:
                try:
                    params = [
                        Watchlist.user_id == user_id,
                        Watchlist.movie_id == movie.id
                    ]
                    watchlist_movie = Watchlist.query.filter(*params).one()
                except NoResultFound:
                    watchlist_movie = Watchlist(user_id=user_id,
                                                movie_id=movie.id)
                    logger.info('%s: %s add movie to watchlist' % (
                                prefix, name))
                    db.session.add(watchlist_movie)

                watchlist_movie.status = Watchlist.IN_COLLECTION_MOVIE
                watchlist_movie.path = name
                logger.info('%s: %s update movie in watchlist' % (
                            prefix, name))

                try:
                    db.session.commit()
                except IntegrityError:
                    db.session.rollback()
    logger.info('%s: finished.' % prefix)