コード例 #1
0
ファイル: movie_queue.py プロジェクト: m-hume/Flexget
    def put(self, type, id, session=None):
        """ Updates movie quality or downloaded state in movie queue """
        kwargs = self.validate_type(type, id, session)
        movie = None
        data = request.json
        if data.get('reset_downloaded'):
            try:
                movie = mq.queue_forget(**kwargs)
            except mq.QueueError as e:
                reply = {
                    'status': 'error',
                    'message': e.message
                }
                return reply, 404

        if data.get('quality'):
            kwargs['quality'] = data['quality']
            try:
                movie = mq.queue_edit(**kwargs)
            except mq.QueueError as e:
                reply = {'status': 'error',
                         'message': e.message}
                return reply, 404
        if not movie:
            return {'status': 'error',
                    'message': 'Not enough parameters to edit movie data'}, 400

        return jsonify(
                {
                    'status': 'success',
                    'message': 'Successfully updated movie details',
                    'movie': movie
                }
        )
コード例 #2
0
ファイル: movie_queue.py プロジェクト: s-m-b/Flexget
class MovieQueueManager(object):
    """
    Handle IMDb queue management; add, delete and list
    """

    def on_process_start(self, task):
        """Handle --movie-queue management"""

        if not getattr(task.manager.options, 'movie_queue', False):
            return

        task.manager.disable_tasks()
        options = task.manager.options.movie_queue

        if options['action'] == 'list':
            self.queue_list(task.session)
            return

        # If the action was to do more than just list the series, make sure all entries are processed again next run.
        task.manager.config_changed()

        if options['action'] == 'downloaded':
            self.queue_list(task.session, downloaded=True)
            return

        if options['action'] == 'clear':
            self.clear(task.session)
            return

        if options['action'] == 'del':
            try:
                title = queue_del(options['what'])
            except QueueError, e:
                console(e.message)
            else:
                console('Removed %s from queue' % title)
            return

        if options['action'] == 'forget':
            try:
                title = queue_forget(options['what'])
            except QueueError, e:
                console(e.message)
            else:
                console('Marked %s as undownloaded' % title)
            return
コード例 #3
0
    def put(self, id, session=None):
        """ Updates movie quality or downloaded state in movie queue """
        data = request.json
        try:
            movie = mq.get_movie_by_id(movie_id=id)
        except NoResultFound:
            return {'status': 'error',
                    'message': 'movie with ID {0} was not found'.format(id)}, 404
        queue_name = movie.get('queue_name')
        if data.get('reset_downloaded'):
            try:
                movie = mq.queue_forget(movie_id=id, queue_name=queue_name)
            except mq.QueueError as e:
                if e.errno == 1:
                    reply = {
                        'status': 'error',
                        'message': e.message
                    }
                    return reply, 405
                else:
                    reply = {
                        'status': 'error',
                        'message': e.message
                    }
                    return reply, 404

        if data.get('quality'):
            try:
                movie = mq.queue_edit(quality=data['quality'], movie_id=id, queue_name=queue_name)
            except mq.QueueError as e:
                reply = {'status': 'error',
                         'message': e.message}
                return reply, 404
        if not movie:
            return {'status': 'error',
                    'message': 'Not enough parameters to edit movie data'}, 400

        return jsonify(movie)
コード例 #4
0
ファイル: movie_queue.py プロジェクト: edetaillac/Flexget
    def put(self, id, session=None):
        """ Updates movie quality or downloaded state in movie queue """
        data = request.json
        try:
            movie = mq.get_movie_by_id(movie_id=id)
        except NoResultFound:
            return {'status': 'error',
                    'message': 'movie with ID {0} was not found'.format(id)}, 404
        queue_name = movie.get('queue_name')
        if data.get('reset_downloaded'):
            try:
                movie = mq.queue_forget(movie_id=id, queue_name=queue_name)
            except mq.QueueError as e:
                if e.errno == 1:
                    reply = {
                        'status': 'error',
                        'message': e.message
                    }
                    return reply, 405
                else:
                    reply = {
                        'status': 'error',
                        'message': e.message
                    }
                    return reply, 404

        if data.get('quality'):
            try:
                movie = mq.queue_edit(quality=data['quality'], movie_id=id, queue_name=queue_name)
            except mq.QueueError as e:
                reply = {'status': 'error',
                         'message': e.message}
                return reply, 404
        if not movie:
            return {'status': 'error',
                    'message': 'Not enough parameters to edit movie data'}, 400

        return jsonify(movie)
コード例 #5
0
ファイル: movie_queue.py プロジェクト: NoMaillard/Flexget
def do_cli(manager, options):
    """Handle movie-queue subcommand"""
    console('WARNING!: movie_queue plugin is deprecated. Please switch to using movie_list\n')

    if options.queue_action == 'list':
        queue_list(options)
        return

    # If the action affects make sure all entries are processed again next run.
    manager.config_changed()

    if options.queue_action == 'clear':
        clear(options)
        return

    if options.queue_action == 'del':
        try:
            what = parse_what(options.movie_name, lookup=False)
            title = queue_del(queue_name=options.queue_name, **what)
        except QueueError as e:
            console('ERROR: %s' % e.message)
        else:
            console('Removed %s from queue' % title)
        return

    if options.queue_action == 'forget':
        try:
            what = parse_what(options.movie_name, lookup=False)
            title = queue_forget(queue_name=options.queue_name, **what)
        except QueueError as e:
            console('ERROR: %s' % e.message)
        else:
            console('Forgot that %s was downloaded. Movie will be downloaded again.' % title.get('title'))
        return

    if options.queue_action == 'add':
        try:
            quality = qualities.Requirements(options.quality)
        except ValueError as e:
            console('`%s` is an invalid quality requirement string: %s' % (options.quality, e.message))
            return

        # Adding to queue requires a lookup for missing information
        what = {}
        try:
            what = parse_what(options.movie_name)
        except QueueError as e:
            console('ERROR: %s' % e.message)

        if not what.get('title') or not (what.get('imdb_id') or what.get('tmdb_id')):
            console('could not determine movie')  # TODO: Rethink errors
            return

        try:
            queue_add(quality=quality, queue_name=options.queue_name, **what)
        except QueueError as e:
            console(e.message)
            if e.errno == 1:
                # This is an invalid quality error, display some more info
                # TODO: Fix this error?
                # console('Recognized qualities are %s' % ', '.join([qual.name for qual in qualities.all()]))
                console('ANY is the default and can also be used explicitly to specify that quality should be ignored.')
        except OperationalError:
            console('OperationalError')
        return
コード例 #6
0
ファイル: movie_queue.py プロジェクト: ratoaq2/Flexget
def do_cli(manager, options):
    """Handle movie-queue subcommand"""

    if options.queue_action == 'list':
        queue_list(options)
        return

    # If the action affects make sure all entries are processed again next run.
    manager.config_changed()

    if options.queue_action == 'clear':
        clear()
        return

    if options.queue_action == 'del':
        try:
            what = parse_what(options.movie_name, lookup=False)
            title = queue_del(**what)
        except QueueError as e:
            console('ERROR: %s' % e.message)
        else:
            console('Removed %s from queue' % title)
        return

    if options.queue_action == 'forget':
        try:
            what = parse_what(options.movie_name, lookup=False)
            title = queue_forget(**what)
        except QueueError as e:
            console('ERROR: %s' % e.message)
        else:
            console(
                'Forgot that %s was downloaded. Movie will be downloaded again.'
                % title)
        return

    if options.queue_action == 'add':
        try:
            quality = qualities.Requirements(options.quality)
        except ValueError as e:
            console('`%s` is an invalid quality requirement string: %s' %
                    (options.quality, e.message))
            return

        # Adding to queue requires a lookup for missing information
        what = {}
        try:
            what = parse_what(options.movie_name)
        except QueueError as e:
            console('ERROR: %s' % e.message)

        if not what.get('title') or not (what.get('imdb_id')
                                         or what.get('tmdb_id')):
            console('could not determine movie')  # TODO: Rethink errors
            return

        try:
            queue_add(quality=quality, **what)
        except QueueError as e:
            console(e.message)
            if e.errno == 1:
                # This is an invalid quality error, display some more info
                # TODO: Fix this error?
                # console('Recognized qualities are %s' % ', '.join([qual.name for qual in qualities.all()]))
                console(
                    'ANY is the default and can also be used explicitly to specify that quality should be ignored.'
                )
        except OperationalError:
            console('OperationalError')
        return
コード例 #7
0
ファイル: movie_queue.py プロジェクト: dickoff/Flexget
    def on_process_start(self, task):
        """Handle --movie-queue management"""

        if not getattr(task.manager.options, 'movie_queue', False):
            return

        task.manager.disable_tasks()
        options = task.manager.options.movie_queue

        if options['action'] == 'list':
            self.queue_list(task.session)
            return

        # If the action was to do more than just list the series, make sure all entries are processed again next run.
        task.manager.config_changed()

        if options['action'] == 'downloaded':
            self.queue_list(task.session, downloaded=True)
            return

        if options['action'] == 'clear':
            self.clear(task.session)
            return

        if options['action'] == 'del':
            try:
                title = queue_del(options['what'])
            except QueueError as e:
                console(e.message)
            else:
                console('Removed %s from queue' % title)
            return

        if options['action'] == 'forget':
            try:
                title = queue_forget(options['what'])
            except QueueError as e:
                console(e.message)
            else:
                console('Marked %s as undownloaded' % title)
            return

        # Adding to queue requires a lookup for missing information
        try:
            what = parse_what(options['what'])
            options.update(what)
        except QueueError as e:
            console(e.message)

        if not options.get('title') or not (options.get('imdb_id') or options.get('tmdb_id')):
            console('could not determine movie')  # TODO: Rethink errors
            return

        try:
            if options['action'] == 'add':
                try:
                    added = queue_add(title=options['title'], imdb_id=options['imdb_id'],
                        tmdb_id=options['tmdb_id'], quality=options['quality'], force=options['force'])
                except QueueError as e:
                    console(e.message)
                    if e.errno == 1:
                        # This is an invalid quality error, display some more info
                        # TODO: Fix this error?
                        #console('Recognized qualities are %s' % ', '.join([qual.name for qual in qualities.all()]))
                        console('ANY is the default and can also be used explicitly to specify that quality should be ignored.')
                else:
                    console('Added %s to queue with quality %s' % (added['title'], added['quality']))
        except OperationalError:
            log.critical('OperationalError')
コード例 #8
0
ファイル: movie_queue.py プロジェクト: Anaerin/Flexget
    def on_process_start(self, task):
        """Handle --movie-queue management"""

        if not getattr(task.manager.options, "movie_queue", False):
            return

        task.manager.disable_tasks()
        options = task.manager.options.movie_queue

        if options["action"] == "list":
            self.queue_list(task.session)
            return

        # If the action affects make sure all entries are processed again next run.
        task.manager.config_changed()

        if options["action"] == "downloaded":
            self.queue_list(task.session, downloaded=True)
            return

        if options["action"] == "clear":
            self.clear(task.session)
            return

        if options["action"] == "del":
            try:
                what = parse_what(options["what"])
                title = queue_del(title=what.get("title"), imdb_id=what.get("imdb_id"), tmdb_id=what.get("tmdb_id"))
            except QueueError as e:
                console("ERROR: %s" % e.message)
            else:
                console("Removed %s from queue" % title)
            return

        if options["action"] == "forget":
            try:
                what = parse_what(options["what"])
                title = queue_forget(title=what.get("title"), imdb_id=what.get("imdb_id"), tmdb_id=what.get("tmdb_id"))
            except QueueError as e:
                console("ERROR: %s" % e.message)
            else:
                console("Forgot that %s was downloaded. Movie will be downloaded again." % title)
            return

        if options["action"] == "add":
            # Adding to queue requires a lookup for missing information
            what = {}
            try:
                what = parse_what(options["what"])
            except QueueError as e:
                console("ERROR: %s" % e.message)

            if not what.get("title") or not (what.get("imdb_id") or what.get("tmdb_id")):
                console("could not determine movie")  # TODO: Rethink errors
                return

            try:
                added = queue_add(
                    title=what["title"],
                    imdb_id=what["imdb_id"],
                    tmdb_id=what["tmdb_id"],
                    quality=options["quality"],
                    force=options["force"],
                )
            except QueueError as e:
                console(e.message)
                if e.errno == 1:
                    # This is an invalid quality error, display some more info
                    # TODO: Fix this error?
                    # console('Recognized qualities are %s' % ', '.join([qual.name for qual in qualities.all()]))
                    console(
                        "ANY is the default and can also be used explicitly to specify that quality should be ignored."
                    )
            except OperationalError:
                log.critical("OperationalError")
コード例 #9
0
ファイル: movie_queue.py プロジェクト: marcelamsler/Flexget
def do_cli(manager, options):
    """Handle movie-queue subcommand"""

    if options.queue_action == "list":
        queue_list(options)
        return

    # If the action affects make sure all entries are processed again next run.
    manager.config_changed()

    if options.queue_action == "clear":
        clear(options)
        return

    if options.queue_action == "del":
        try:
            what = parse_what(options.movie_name, lookup=False)
            title = queue_del(queue_name=options.queue_name, **what)
        except QueueError as e:
            console("ERROR: %s" % e.message)
        else:
            console("Removed %s from queue" % title)
        return

    if options.queue_action == "forget":
        try:
            what = parse_what(options.movie_name, lookup=False)
            title = queue_forget(queue_name=options.queue_name, **what)
        except QueueError as e:
            console("ERROR: %s" % e.message)
        else:
            console("Forgot that %s was downloaded. Movie will be downloaded again." % title.get("title"))
        return

    if options.queue_action == "add":
        try:
            quality = qualities.Requirements(options.quality)
        except ValueError as e:
            console("`%s` is an invalid quality requirement string: %s" % (options.quality, e.message))
            return

        # Adding to queue requires a lookup for missing information
        what = {}
        try:
            what = parse_what(options.movie_name)
        except QueueError as e:
            console("ERROR: %s" % e.message)

        if not what.get("title") or not (what.get("imdb_id") or what.get("tmdb_id")):
            console("could not determine movie")  # TODO: Rethink errors
            return

        try:
            queue_add(quality=quality, queue_name=options.queue_name, **what)
        except QueueError as e:
            console(e.message)
            if e.errno == 1:
                # This is an invalid quality error, display some more info
                # TODO: Fix this error?
                # console('Recognized qualities are %s' % ', '.join([qual.name for qual in qualities.all()]))
                console("ANY is the default and can also be used explicitly to specify that quality should be ignored.")
        except OperationalError:
            console("OperationalError")
        return
コード例 #10
0
ファイル: movie_queue.py プロジェクト: drbashar315/Flexget
    def on_process_start(self, task):
        """Handle --movie-queue management"""

        if not getattr(task.manager.options, 'movie_queue', False):
            return

        task.manager.disable_tasks()
        options = task.manager.options.movie_queue

        if options['action'] == 'list':
            self.queue_list(task.session)
            return

        # If the action affects make sure all entries are processed again next run.
        task.manager.config_changed()

        if options['action'] == 'downloaded':
            self.queue_list(task.session, downloaded=True)
            return

        if options['action'] == 'clear':
            self.clear(task.session)
            return

        if options['action'] == 'del':
            try:
                what = parse_what(options['what'])
                title = queue_del(title=what.get('title'),
                                  imdb_id=what.get('imdb_id'),
                                  tmdb_id=what.get('tmdb_id'))
            except QueueError as e:
                console('ERROR: %s' % e.message)
            else:
                console('Removed %s from queue' % title)
            return

        if options['action'] == 'forget':
            try:
                what = parse_what(options['what'])
                title = queue_forget(title=what.get('title'),
                                     imdb_id=what.get('imdb_id'),
                                     tmdb_id=what.get('tmdb_id'))
            except QueueError as e:
                console('ERROR: %s' % e.message)
            else:
                console(
                    'Forgot that %s was downloaded. Movie will be downloaded again.'
                    % title)
            return

        if options['action'] == 'add':
            # Adding to queue requires a lookup for missing information
            what = {}
            try:
                what = parse_what(options['what'])
            except QueueError as e:
                console('ERROR: %s' % e.message)

            if not what.get('title') or not (what.get('imdb_id')
                                             or what.get('tmdb_id')):
                console('could not determine movie')  # TODO: Rethink errors
                return

            try:
                added = queue_add(title=what['title'],
                                  imdb_id=what['imdb_id'],
                                  tmdb_id=what['tmdb_id'],
                                  quality=options['quality'],
                                  force=options['force'])
            except QueueError as e:
                console(e.message)
                if e.errno == 1:
                    # This is an invalid quality error, display some more info
                    # TODO: Fix this error?
                    #console('Recognized qualities are %s' % ', '.join([qual.name for qual in qualities.all()]))
                    console(
                        'ANY is the default and can also be used explicitly to specify that quality should be ignored.'
                    )
            except OperationalError:
                log.critical('OperationalError')