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 } )
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
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)
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
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
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')
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")
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
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')