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)
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)