예제 #1
0
    def post(self, list_id, session=None):
        """ Add movies to list by ID """
        try:
            movie_list = ml.get_list_by_id(list_id=list_id, session=session)
        except NoResultFound:
            return {'status': 'error',
                    'message': 'list_id %d does not exist' % list_id}, 404
        data = request.json

        # Validates ID type based on allowed ID
        # TODO pass this to json schema validation
        for id_name in data.get('movie_identifiers'):
            if set(id_name.keys()) & set(allowed_ids) == set([]):
                return {'status': 'error',
                        'message': 'movie identifier %s is not allowed' % id_name}, 501
        if 'movie_name' in data:
            title, year = data['movie_name'], data.get('movie_year')
        else:
            title, year = split_title_year(data['title'])
        movie = ml.get_movie_by_title(list_id=list_id, title=title, session=session)
        if movie:
            return {'status': 'error',
                    'message': 'movie with name "%s" already exist in list %d' % (title, list_id)}, 500
        movie = ml.MovieListMovie()
        movie.title = title
        movie.year = year
        movie.ids = ml.get_db_movie_identifiers(identifier_list=data.get('movie_identifiers'), session=session)
        movie.list_id = list_id
        session.add(movie)
        session.commit()
        response = jsonify({'movie': movie.to_dict()})
        response.status_code = 201
        return response
예제 #2
0
def movie_list_add(options):
    with Session() as session:
        try:
            movie_list = get_list_by_exact_name(options.list_name)
        except NoResultFound:
            console('Could not find movie list with name {}, creating'.format(options.list_name))
            movie_list = MovieListList(name=options.list_name)
        session.merge(movie_list)
        title, year = split_title_year(options.movie_title)
        console('Trying to lookup movie %s title' % title)
        entry = lookup_movie(title=title, session=session, identifiers=options.identifiers)
        if not entry:
            console('movie lookup failed for movie %s, aborting')
            return
        title = entry['movie_name']
        movie = get_movie_by_title(list_id=movie_list.id, title=title, session=session)
        if not movie:
            console("Adding movie with title {} to list {}".format(title, movie_list.name))
            movie = MovieListMovie(title=entry['movie_name'], year=year, list_id=movie_list.id)
        else:
            console("Movie with title {} already exist in list {}".format(title, movie_list.name))

        id_list = []
        if options.identifiers:
            id_list = options.identifiers
        else:
            for _id in MovieListBase().supported_ids:
                if entry.get(_id):
                    id_list.append({_id: entry.get(_id)})
        if id_list:
            console('Setting movie identifiers:', id_list)
            movie.ids = get_db_movie_identifiers(identifier_list=id_list, session=session)
        session.merge(movie)

    console('Successfully added movie {} to movie list {} '.format(title, movie_list.name))
예제 #3
0
def movie_list_add(options):
    with Session() as session:
        try:
            movie_list = get_list_by_exact_name(options.list_name)
        except NoResultFound:
            console('Could not find movie list with name {}, creating'.format(options.list_name))
            movie_list = MovieListList(name=options.list_name)
            session.add(movie_list)
        session.merge(movie_list)
        title, year = split_title_year(options.movie_title)
        movie_exist = get_movie_by_title(list_id=movie_list.id, title=title, session=session)
        if movie_exist:
            console("Movie with the title {} already exist with list {}. Will replace identifiers if given".format(
                title, movie_list.name))
            output = 'Successfully updated movie {} to movie list {} '.format(title, movie_list.name)
        else:
            console("Adding movie with title {} to list {}".format(title, movie_list.name))
            movie_exist = MovieListMovie(title=title, year=year, list_id=movie_list.id)
            session.add(movie_exist)
            output = 'Successfully added movie {} to movie list {} '.format(title, movie_list.name)
        if options.identifiers:
            identifiers = [parse_identifier(identifier) for identifier in options.identifiers if options.identifiers]
            console('Adding identifiers {} to movie {}'.format(identifiers, title))
            movie_exist.ids = get_db_movie_identifiers(identifier_list=identifiers, session=session)
        console(output)
예제 #4
0
    def post(self, list_id, session=None):
        """ Add movies to list by ID """
        try:
            movie_list = ml.get_list_by_id(list_id=list_id, session=session)
        except NoResultFound:
            return {'status': 'error',
                    'message': 'list_id %d does not exist' % list_id}, 404
        data = request.json

        # Validates ID type based on allowed ID
        # TODO pass this to json schema validation
        for id_name in data.get('movie_identifiers'):
            if set(id_name.keys()) & set(allowed_ids) == set([]):
                return {'status': 'error',
                        'message': 'movie identifier %s is not allowed' % id_name}, 501
        if 'movie_name' in data:
            title, year = data['movie_name'], data.get('movie_year')
        else:
            title, year = split_title_year(data['title'])
        movie = ml.get_movie_by_title(list_id=list_id, title=title, session=session)
        if movie:
            return {'status': 'error',
                    'message': 'movie with name "%s" already exist in list %d' % (title, list_id)}, 500
        movie = ml.MovieListMovie()
        movie.title = title
        movie.year = year
        movie.ids = ml.get_db_movie_identifiers(identifier_list=data.get('movie_identifiers'), session=session)
        movie.list_id = list_id
        session.add(movie)
        session.commit()
        response = jsonify({'movie': movie.to_dict()})
        response.status_code = 201
        return response
예제 #5
0
def movie_list_add(options):
    with Session() as session:
        try:
            movie_list = get_list_by_exact_name(options.list_name)
        except NoResultFound:
            console('Could not find movie list with name {}, creating'.format(options.list_name))
            movie_list = MovieListList(name=options.list_name)
            session.add(movie_list)
        session.merge(movie_list)
        title, year = split_title_year(options.movie_title)
        movie_exist = get_movie_by_title(list_id=movie_list.id, title=title, session=session)
        if movie_exist:
            console("Movie with the title {} already exist with list {}. Will replace identifiers if given".format(
                title, movie_list.name))
            output = 'Successfully updated movie {} to movie list {} '.format(title, movie_list.name)
        else:
            console("Adding movie with title {} to list {}".format(title, movie_list.name))
            movie_exist = MovieListMovie(title=title, year=year, list_id=movie_list.id)
            session.add(movie_exist)
            output = 'Successfully added movie {} to movie list {} '.format(title, movie_list.name)
        if options.identifiers:
            identifiers = [parse_identifier(identifier) for identifier in options.identifiers if options.identifiers]
            console('Adding identifiers {} to movie {}'.format(identifiers, title))
            movie_exist.ids = get_db_movie_identifiers(identifier_list=identifiers, session=session)
        console(output)
예제 #6
0
파일: movie_list.py 프로젝트: umeku/Flexget
def movie_list_del(options, session=None):
    try:
        movie_list = get_list_by_exact_name(options.list_name)
    except NoResultFound:
        console('Could not find movie list with name {}'.format(options.list_name))
        return
    title, year = split_title_year(options.movie_title)
    movie_exist = get_movie_by_title(list_id=movie_list.id, title=title, session=session)
    if movie_exist:
        console('Removing movie %s from list %s' % (options.movie_title, options.list_name))
        session.delete(movie_exist)
    else:
        console('Could not find movie with title %s in list %s' % (options.movie_title, options.list_name))
        return
예제 #7
0
def movie_list_del(options):
    with Session() as session:
        try:
            movie_list = get_list_by_exact_name(options.list_name)
        except NoResultFound:
            console('Could not find movie list with name {}'.format(options.list_name))
            return
        title = split_title_year(options.movie_title)[0]
        movie_exist = get_movie_by_title(list_id=movie_list.id, title=title, session=session)
        if movie_exist:
            console('Removing movie %s from list %s' % (options.movie_title, options.list_name))
            session.delete(movie_exist)
        else:
            console('Could not find movie with title %s in list %s' % (options.movie_title, options.list_name))
            return