def test_movie_queue_forget(self):
     queue_add(title=u'MovieInQueue', imdb_id=u'tt1931533', tmdb_id=603)
     self.execute_task('movie_queue_accept')
     assert len(queue_get(downloaded=True)) == 1
     self.execute_task('movie_queue_forget')
     assert not queue_get(downloaded=True)
     assert len(queue_get()) == 1
Exemple #2
0
 def test_movie_queue_forget(self):
     queue_add(title=u'MovieInQueue', imdb_id=u'tt1931533', tmdb_id=603)
     self.execute_task('movie_queue_accept')
     assert len(queue_get(downloaded=True)) == 1
     self.execute_task('movie_queue_forget')
     assert not queue_get(downloaded=True)
     assert len(queue_get()) == 1
 def test_movie_queue_different_queue_forget(self):
     queue_add(title=u'MovieInQueue', imdb_id=u'tt1931533', tmdb_id=603, queue_name='A new queue')
     self.execute_task('movie_queue_different_queue_accept')
     assert len(queue_get(downloaded=True, queue_name='A new queue')) == 1
     self.execute_task('movie_queue_different_queue_forget')
     assert not queue_get(downloaded=True, queue_name='A new queue')
     assert len(queue_get(queue_name='a New queue')) == 1
Exemple #4
0
 def test_movie_queue_different_queue_forget(self, execute_task):
     queue_add(title=u'MovieInQueue', imdb_id=u'tt1931533', tmdb_id=603, queue_name='A new queue')
     task = execute_task('movie_queue_different_queue_accept')
     assert len(queue_get(downloaded=True, queue_name='A new queue')) == 1
     task = execute_task('movie_queue_different_queue_forget')
     assert not queue_get(downloaded=True, queue_name='A new queue')
     assert len(queue_get(queue_name='a New queue')) == 1
Exemple #5
0
def index():
    movie_queue = queue_get()
    tmdb_lookup = get_plugin_by_name('api_tmdb').instance.lookup
    for item in movie_queue:
        try:
            movie = tmdb_lookup(tmdb_id=item.tmdb_id, only_cached=True)
        except LookupError:
            item.overview = ('TMDb lookup was not successful, no overview available.'
                             'Lookup is being retried in the background.')
            log.debug('No themoviedb result for tmdb id %s' % item.tmdb_id)

            # this is probably not needed since non cached movies are retried also
            # in the cover function
            #
            #import thread
            #thread.start_new_thread(tmdb_lookup, (), {'imdb_id': item.imdb_id})
            continue

        # set thumb, but only if already in cache because retrieving is too slow here
        # movies without cached thumb use img tag reading /cover/<imdb_id> which will
        # retrieve the image and thus allows rendering the page immediattely
        for poster in movie.posters:
            if poster.size == 'thumb':
                thumb = poster.get_file(only_cached=True)
                if thumb:
                    item.thumb = url_for('userstatic', filename=posixpath.join(*thumb))
                break

        item.title = movie.name
        item.year = movie.released and movie.released.year
        item.overview = movie.overview

    context = {'movies': movie_queue}
    return render_template('movies/movies.html', **context)
Exemple #6
0
def queue_list(options):
    """List movie queue"""
    if options.type == "downloaded":
        downloaded = True
    elif options.type == "waiting":
        downloaded = False
    else:
        downloaded = None
    items = queue_get(downloaded=downloaded, queue_name=options.queue_name)
    if options.porcelain:
        console("%-10s %-s %-7s %-s %-37s %-s %s" % ("IMDB id", "|", "TMDB id", "|", "Title", "|", "Quality"))
    else:
        console("-" * 79)
        console("%-10s %-7s %-37s %s" % ("IMDB id", "TMDB id", "Title", "Quality"))
        console("-" * 79)
    for item in items:
        if options.porcelain:
            console(
                "%-10s %-s %-7s %-s %-37s %-s %s"
                % (item.imdb_id, "|", item.tmdb_id, "|", item.title, "|", item.quality)
            )
        else:
            console("%-10s %-7s %-37s %s" % (item.imdb_id, item.tmdb_id, item.title, item.quality))
    if not items:
        console("No results")
    if options.porcelain:
        pass
    else:
        console("-" * 79)
Exemple #7
0
def queue_list(options):
    """List movie queue"""
    items = queue_get(downloaded=(options.type == 'downloaded'))
    if options.porcelain:
        console('%-10s %-s %-7s %-s %-37s %-s %s' %
                ('IMDB id', '|', 'TMDB id', '|', 'Title', '|', 'Quality'))
    else:
        console('-' * 79)
        console('%-10s %-7s %-37s %s' %
                ('IMDB id', 'TMDB id', 'Title', 'Quality'))
        console('-' * 79)
    for item in items:
        if options.porcelain:
            console('%-10s %-s %-7s %-s %-37s %-s %s' %
                    (item.imdb_id, '|', item.tmdb_id, '|', item.title, '|',
                     item.quality))
        else:
            console('%-10s %-7s %-37s %s' %
                    (item.imdb_id, item.tmdb_id, item.title, item.quality))
    if not items:
        console('No results')
    if options.porcelain:
        pass
    else:
        console('-' * 79)
Exemple #8
0
def queue_list(options):
    """List movie queue"""
    if options.type == 'downloaded':
        downloaded = True
    elif options.type == 'waiting':
        downloaded = False
    else:
        downloaded = None
    items = queue_get(downloaded=downloaded, queue_name=options.queue_name)
    if options.porcelain:
        console('%-10s %-s %-7s %-s %-37s %-s %s' % ('IMDB id', '|', 'TMDB id', '|', 'Title', '|', 'Quality'))
    else:
        console('-' * 79)
        console('%-10s %-7s %-37s %s' % ('IMDB id', 'TMDB id', 'Title', 'Quality'))
        console('-' * 79)
    for item in items:
        if options.porcelain:
            console('%-10s %-s %-7s %-s %-37s %-s %s' %
                    (item.imdb_id, '|', item.tmdb_id, '|', item.title, '|', item.quality))
        else:
            console('%-10s %-7s %-37s %s' % (item.imdb_id, item.tmdb_id, item.title, item.quality))
    if not items:
        console('No results')
    if options.porcelain:
        pass
    else:
        console('-' * 79)
Exemple #9
0
def clear(options):
    """Deletes waiting movies from queue"""
    items = queue_get(downloaded=False, queue_name=options.queue_name)
    console('Removing the following movies from movie queue:')
    console('-' * 79)
    for item in items:
        console(item.title)
    if not items:
        console('No results')
    console('-' * 79)
    queue_clear(options.queue_name)
Exemple #10
0
def clear(options):
    """Deletes waiting movies from queue"""
    items = queue_get(downloaded=False, queue_name=options.queue_name)
    console("Removing the following movies from movie queue:")
    console("-" * 79)
    for item in items:
        console(item.title)
        queue_del(title=item.title, queue_name=options.queue_name)
    if not items:
        console("No results")
    console("-" * 79)
Exemple #11
0
def clear(options):
    """Deletes waiting movies from queue"""
    items = queue_get(downloaded=False, queue_name=options.queue_name)
    console('Removing the following movies from movie queue:')
    console('-' * 79)
    for item in items:
        console(item.title)
    if not items:
        console('No results')
    console('-' * 79)
    queue_clear(options.queue_name)
Exemple #12
0
def clear():
    """Deletes waiting movies from queue"""
    items = queue_get(downloaded=False)
    console('Removing the following movies from movie queue:')
    console('-' * 79)
    for item in items:
        console(item.title)
        queue_del(title=item.title)
    if not items:
        console('No results')
    console('-' * 79)
Exemple #13
0
def queue_list(options):
    """List movie queue"""
    items = queue_get(downloaded=(options.type == 'downloaded'))
    console('-' * 79)
    console('%-10s %-7s %-37s %-15s %s' % ('IMDB id', 'TMDB id', 'Title', 'Quality', 'Force'))
    console('-' * 79)
    for item in items:
        console('%-10s %-7s %-37s %-15s %s' % (item.imdb_id, item.tmdb_id, item.title, item.quality, item.immortal))
    if not items:
        console('No results')
    console('-' * 79)
Exemple #14
0
def clear():
    """Deletes waiting movies from queue"""
    items = queue_get(downloaded=False)
    console('Removing the following movies from movie queue:')
    console('-' * 79)
    for item in items:
        console(item.title)
        queue_del(title=item.title)
    if not items:
        console('No results')
    console('-' * 79)
Exemple #15
0
    def test_movie_queue_add_properties(self):
        self.execute_task('movie_queue_add_properties')

        assert len(self.task.entries) == 1

        queue = queue_get()
        assert len(queue) == 1

        entry = queue[0]
        assert entry.imdb_id == 'tt1931533'
        assert entry.tmdb_id == 603
        assert entry.quality == '720p'
    def on_task_input(self, task, config):
        if not config:
            return
        config = self.prepare_config(config)
        entries = []
        queue_name = config.get('queue_name')

        with Session() as session:
            for queue_item in queue_get(session=session, downloaded=False, queue_name=queue_name):
                entry = Entry()
                # make sure the entry has IMDB fields filled
                entry['url'] = ''
                if queue_item.imdb_id:
                    entry['imdb_id'] = queue_item.imdb_id
                    entry['imdb_url'] = make_imdb_url(queue_item.imdb_id)
                if queue_item.tmdb_id:
                    entry['tmdb_id'] = queue_item.tmdb_id

                # check if title is a imdb url (leftovers from old database?)
                # TODO: maybe this should be fixed at the queue_get ...
                if 'http://' in queue_item.title:
                    plugin.get_plugin_by_name('tmdb_lookup').instance.lookup(entry)
                    log.debug('queue contains url instead of title')
                    if entry.get('movie_name'):
                        entry['title'] = entry['movie_name']
                    else:
                        log.error('Found imdb url in imdb queue, but lookup failed: %s' % entry['title'])
                        continue
                else:
                    # normal title
                    entry['title'] = queue_item.title

                # Add the year and quality if configured to (make sure not to double it up)
                if config.get('year') and entry.get('movie_year') \
                        and str(entry['movie_year']) not in entry['title']:
                    plugin.get_plugin_by_name('tmdb_lookup').instance.lookup(entry)
                    entry['title'] += ' %s' % entry['movie_year']
                # TODO: qualities can now be ranges.. how should we handle this?
                if config.get('quality') and queue_item.quality != 'ANY':
                    log.info('quality option of emit_movie_queue is disabled while we figure out how to handle ranges')
                    # entry['title'] += ' %s' % queue_item.quality
                entries.append(entry)
                if entry.get('imdb_id'):
                    log.debug('Added title and IMDB id to new entry: %s - %s',
                              entry['title'], entry['imdb_id'])
                elif entry.get('tmdb_id'):
                    log.debug('Added title and TMDB id to new entry: %s - %s',
                              entry['title'], entry['tmdb_id'])
                else:
                    # should this ever happen though?
                    log.debug('Added title to new entry: %s', entry['title'])

        return entries
Exemple #17
0
    def test_movie_queue_add(self, execute_task):
        task = execute_task('movie_queue_add')

        assert len(task.entries) == 1

        queue = queue_get()
        assert len(queue) == 1

        entry = queue[0]
        assert entry.imdb_id == 'tt1931533'
        assert entry.tmdb_id == 603
        assert entry.quality == 'any'
    def test_movie_queue_add_properties(self):
        self.execute_task('movie_queue_add_properties')

        assert len(self.task.entries) == 1

        queue = queue_get()
        assert len(queue) == 1

        entry = queue[0]
        assert entry.imdb_id == 'tt1931533'
        assert entry.tmdb_id == 603
        assert entry.quality == '720p'
Exemple #19
0
    def test_movie_queue_add(self, execute_task):
        task = execute_task('movie_queue_add')

        assert len(task.entries) == 1

        queue = queue_get()
        assert len(queue) == 1

        entry = queue[0]
        assert entry.imdb_id == 'tt1931533'
        assert entry.tmdb_id == 603
        assert entry.quality == 'any'
    def test_movie_queue_different_queue_accept(self):
        default_queue = queue_get()
        named_queue = queue_get(queue_name='A new queue')
        assert len(default_queue) == len(named_queue) == 0

        queue_add(title=u'MovieInQueue', imdb_id=u'tt1931533', tmdb_id=603, queue_name='A new queue')
        queue_add(title=u'MovieInQueue', imdb_id=u'tt1931533', tmdb_id=603)

        default_queue = queue_get()
        named_queue = queue_get(queue_name='A new queue')
        assert len(named_queue) == len(default_queue) == 1

        self.execute_task('movie_queue_different_queue_accept')
        assert len(self.task.entries) == 1

        entry = self.task.entries[0]
        assert entry.get('imdb_id', eval_lazy=False) == 'tt1931533'
        assert entry.get('tmdb_id', eval_lazy=False) == 603

        default_queue = queue_get()
        named_queue = queue_get(queue_name='A new queue', downloaded=False)
        assert len(named_queue) == 0
        assert len(default_queue) == 1

        self.execute_task('movie_queue_different_queue_accept')
        assert len(self.task.entries) == 0, 'Movie should only be accepted once'
Exemple #21
0
    def test_movie_queue_different_queue_accept(self):
        default_queue = queue_get()
        named_queue = queue_get(queue_name='A new queue')
        assert len(default_queue) == len(named_queue) == 0

        queue_add(title=u'MovieInQueue',
                  imdb_id=u'tt1931533',
                  tmdb_id=603,
                  queue_name='A new queue')
        queue_add(title=u'MovieInQueue', imdb_id=u'tt1931533', tmdb_id=603)

        default_queue = queue_get()
        named_queue = queue_get(queue_name='A new queue')
        assert len(named_queue) == len(default_queue) == 1

        self.execute_task('movie_queue_different_queue_accept')
        assert len(self.task.entries) == 1

        entry = self.task.entries[0]
        assert entry.get('imdb_id', eval_lazy=False) == 'tt1931533'
        assert entry.get('tmdb_id', eval_lazy=False) == 603

        default_queue = queue_get()
        named_queue = queue_get(queue_name='A new queue', downloaded=False)
        assert len(named_queue) == 0
        assert len(default_queue) == 1

        self.execute_task('movie_queue_different_queue_accept')
        assert len(
            self.task.entries) == 0, 'Movie should only be accepted once'
Exemple #22
0
    def test_movie_queue_different_queue_remove(self, execute_task):
        queue_add(title=u'MovieInQueue', imdb_id=u'tt1931533', tmdb_id=603, queue_name='A new queue')
        queue_add(title=u'KeepMe', imdb_id=u'tt1933533', tmdb_id=604, queue_name='A new queue')

        task = execute_task('movie_queue_different_queue_remove')

        assert len(task.entries) == 1

        queue = queue_get(queue_name='A new queue')
        assert len(queue) == 1

        entry = queue[0]
        assert entry.imdb_id == 'tt1933533'
        assert entry.tmdb_id == 604
Exemple #23
0
    def get(self, session=None):
        """ List queued movies """
        args = movie_queue_parser.parse_args()
        page = args['page']
        max_results = args['max']
        downloaded = args['status']
        sort_by = args['sort_by']
        order = args['order']
        # Handles default if it explicitly called
        if order == 'desc':
            order = True
        else:
            order = False

        # Handles download status conversion
        if downloaded == 'downloaded':
            downloaded = True
        elif downloaded == 'pending':
            downloaded = False
        else:
            downloaded = None

        movie_queue = mq.queue_get(session=session, downloaded=downloaded)
        count = len(movie_queue)

        pages = int(ceil(count / float(max_results)))

        movie_items = []

        if page > pages and pages != 0:
            return {'error': 'page %s does not exist' % page}, 404

        start = (page - 1) * max_results
        finish = start + max_results
        if finish > count:
            finish = count

        for movie_number in range(start, finish):
            movie_items.append(movie_queue[movie_number].to_dict())

        sorted_movie_list = sorted(movie_items,
                                   key=lambda movie: movie[sort_by] if movie[sort_by] else datetime.datetime,
                                   reverse=order)

        return jsonify({
            'movies': sorted_movie_list,
            'number_of_movies': count,
            'page_number': page,
            'total_number_of_pages': pages
        })
Exemple #24
0
    def clear(self, session):
        """Delete movie queue"""

        items = queue_get(session=session, downloaded=False)
        console("Removing the following movies from movie queue:")
        console("-" * 79)
        for item in items:
            console(item.title)
            queue_del(item.imdb_id)

        if not items:
            console("No results")

        console("-" * 79)
Exemple #25
0
    def test_movie_queue_different_queue_remove(self, execute_task):
        queue_add(title=u'MovieInQueue', imdb_id=u'tt1931533', tmdb_id=603, queue_name='A new queue')
        queue_add(title=u'KeepMe', imdb_id=u'tt1933533', tmdb_id=604, queue_name='A new queue')

        task = execute_task('movie_queue_different_queue_remove')

        assert len(task.entries) == 1

        queue = queue_get(queue_name='A new queue')
        assert len(queue) == 1

        entry = queue[0]
        assert entry.imdb_id == 'tt1933533'
        assert entry.tmdb_id == 604
Exemple #26
0
    def clear(self, session):
        """Delete movie queue"""

        items = queue_get(session=session, downloaded=False)
        console('Removing the following movies from movie queue:')
        console('-' * 79)
        for item in items:
            console(item.title)
            queue_del(item.imdb_id)

        if not items:
            console('No results')

        console('-' * 79)
Exemple #27
0
    def queue_list(self, session, downloaded=False):
        """List IMDb queue"""

        items = queue_get(session=session, downloaded=downloaded)
        console('-' * 79)
        console('%-10s %-7s %-37s %-15s %s' % ('IMDB id', 'TMDB id', 'Title', 'Quality', 'Force'))
        console('-' * 79)
        for item in items:
            console('%-10s %-7s %-37s %-15s %s' % (item.imdb_id, item.tmdb_id, item.title, item.quality, item.immortal))

        if not items:
            console('No results')

        console('-' * 79)
Exemple #28
0
    def queue_list(self, session, downloaded=False):
        """List IMDb queue"""

        items = queue_get(session=session, downloaded=downloaded)
        console("-" * 79)
        console("%-10s %-7s %-37s %-15s %s" % ("IMDB id", "TMDB id", "Title", "Quality", "Force"))
        console("-" * 79)
        for item in items:
            console("%-10s %-7s %-37s %-15s %s" % (item.imdb_id, item.tmdb_id, item.title, item.quality, item.immortal))

        if not items:
            console("No results")

        console("-" * 79)
    def test_movie_queue_remove(self):
        queue_add(title=u'MovieInQueue', imdb_id=u'tt1931533', tmdb_id=603)
        queue_add(title=u'KeepMe', imdb_id=u'tt1933533', tmdb_id=604)

        self.execute_task('movie_queue_remove')

        assert len(self.task.entries) == 1

        queue = queue_get()
        assert len(queue) == 1

        entry = queue[0]
        assert entry.imdb_id == 'tt1933533'
        assert entry.tmdb_id == 604
Exemple #30
0
    def test_movie_queue_remove(self):
        queue_add(title=u'MovieInQueue', imdb_id=u'tt1931533', tmdb_id=603)
        queue_add(title=u'KeepMe', imdb_id=u'tt1933533', tmdb_id=604)

        self.execute_task('movie_queue_remove')

        assert len(self.task.entries) == 1

        queue = queue_get()
        assert len(queue) == 1

        entry = queue[0]
        assert entry.imdb_id == 'tt1933533'
        assert entry.tmdb_id == 604
Exemple #31
0
    def get(self, session=None):
        """ List queued movies """
        args = movie_queue_parser.parse_args()
        page = args['page']
        max_results = args['max']
        downloaded = args['is_downloaded']
        sort_by = args['sort_by']
        order = args['order']
        queue_name = args['queue_name']
        # Handles default if it explicitly called
        if order == 'desc':
            order = True
        else:
            order = False

        raw_movie_queue = mq.queue_get(session=session,
                                       downloaded=downloaded,
                                       queue_name=queue_name)
        converted_movie_queue = [movie.to_dict() for movie in raw_movie_queue]
        sorted_movie_list = sorted(converted_movie_queue,
                                   key=lambda movie: movie[sort_by]
                                   if movie[sort_by] else datetime.datetime,
                                   reverse=order)

        count = len(sorted_movie_list)
        pages = int(ceil(count / float(max_results)))
        if page > pages and pages != 0:
            return {
                'status': 'error',
                'message': 'page %s does not exist' % page
            }, 404

        start = (page - 1) * max_results
        finish = start + max_results
        if finish > count:
            finish = count

        movie_items = []
        for movie_number in range(start, finish):
            movie_items.append(sorted_movie_list[movie_number])

        return jsonify({
            'movies': movie_items,
            'number_of_movies': count,
            'page_number': page,
            'total_number_of_pages': pages
        })
    def on_task_input(self, task, config):
        if not config:
            return
        config = self.prepare_config(config)
        entries = []

        with Session() as session:
            for queue_item in queue_get(session=session, downloaded=False):
                entry = Entry()
                # make sure the entry has IMDB fields filled
                entry["url"] = ""
                if queue_item.imdb_id:
                    entry["imdb_id"] = queue_item.imdb_id
                    entry["imdb_url"] = make_imdb_url(queue_item.imdb_id)
                if queue_item.tmdb_id:
                    entry["tmdb_id"] = queue_item.tmdb_id

                plugin.get_plugin_by_name("tmdb_lookup").instance.lookup(entry)
                # check if title is a imdb url (leftovers from old database?)
                # TODO: maybe this should be fixed at the queue_get ...
                if "http://" in queue_item.title:
                    log.debug("queue contains url instead of title")
                    if entry.get("movie_name"):
                        entry["title"] = entry["movie_name"]
                    else:
                        log.error("Found imdb url in imdb queue, but lookup failed: %s" % entry["title"])
                        continue
                else:
                    # normal title
                    entry["title"] = queue_item.title

                # Add the year and quality if configured to (make sure not to double it up)
                if (
                    config.get("year")
                    and entry.get("movie_year")
                    and unicode(entry["movie_year"]) not in entry["title"]
                ):
                    entry["title"] += " %s" % entry["movie_year"]
                # TODO: qualities can now be ranges.. how should we handle this?
                if config.get("quality") and queue_item.quality != "ANY":
                    log.info("quality option of emit_movie_queue is disabled while we figure out how to handle ranges")
                    # entry['title'] += ' %s' % queue_item.quality
                entries.append(entry)
                log.debug("Added title and IMDB id to new entry: %s - %s" % (entry["title"], entry["imdb_id"]))

        return entries
Exemple #33
0
    def on_task_input(self, task, config):
        if not config:
            return
        config = self.prepare_config(config)

        entries = []

        for queue_item in queue_get():
            entry = Entry()
            # make sure the entry has IMDB fields filled
            entry['url'] = ''
            if queue_item.imdb_id:
                entry[
                    'imdb_url'] = 'http://www.imdb.com/title/' + queue_item.imdb_id
                entry['imdb_id'] = queue_item.imdb_id
            if queue_item.tmdb_id:
                entry['tmdb_id'] = queue_item.tmdb_id

            get_plugin_by_name('tmdb_lookup').instance.lookup(entry)
            # check if title is a imdb url (leftovers from old database?)
            # TODO: maybe this should be fixed at the queue_get ...
            if 'http://' in queue_item.title:
                log.debug('queue contains url instead of title')
                if entry.get('movie_name'):
                    entry['title'] = entry['movie_name']
                else:
                    log.error(
                        'Found imdb url in imdb queue, but lookup failed: %s' %
                        entry['title'])
                    continue
            else:
                # normal title
                entry['title'] = queue_item.title

            # Add the year and quality if configured to
            if config.get('year') and entry.get('movie_year'):
                entry['title'] += ' %s' % entry['movie_year']
            # TODO: qualities can now be ranges.. how should we handle this?
            #if config.get('quality') and queue_item.quality != 'ANY':
            #    entry['title'] += ' %s' % queue_item.quality
            entries.append(entry)
            log.debug('Added title and IMDB id to new entry: %s - %s' %
                      (entry['title'], entry['imdb_id']))

        return entries
Exemple #34
0
    def on_task_input(self, task, config):
        if not config:
            return
        config = self.prepare_config(config)

        entries = []

        for queue_item in queue_get():
            entry = Entry()
            # make sure the entry has IMDB fields filled
            entry['url'] = ''
            if queue_item.imdb_id:
                entry['imdb_url'] = 'http://www.imdb.com/title/' + queue_item.imdb_id
                entry['imdb_id'] = queue_item.imdb_id
            if queue_item.tmdb_id:
                entry['tmdb_id'] = queue_item.tmdb_id

            get_plugin_by_name('tmdb_lookup').instance.lookup(entry)
            # check if title is a imdb url (leftovers from old database?)
            # TODO: maybe this should be fixed at the queue_get ...
            if 'http://' in queue_item.title:
                log.debug('queue contains url instead of title')
                if entry.get('movie_name'):
                    entry['title'] = entry['movie_name']
                else:
                    log.error('Found imdb url in imdb queue, but lookup failed: %s' % entry['title'])
                    continue
            else:
                # normal title
                entry['title'] = queue_item.title

            # Add the year and quality if configured to
            if config.get('year') and entry.get('movie_year'):
                entry['title'] += ' %s' % entry['movie_year']
            # TODO: qualities can now be ranges.. how should we handle this?
            #if config.get('quality') and queue_item.quality != 'ANY':
            #    entry['title'] += ' %s' % queue_item.quality
            entries.append(entry)
            log.debug('Added title and IMDB id to new entry: %s - %s' %
                     (entry['title'], entry['imdb_id']))

        return entries
    def get(self, session=None):
        """ List queued movies """
        args = movie_queue_parser.parse_args()
        page = args['page']
        max_results = args['max']
        downloaded = args['is_downloaded']
        sort_by = args['sort_by']
        order = args['order']
        queue_name = args['queue_name']
        # Handles default if it explicitly called
        if order == 'desc':
            order = True
        else:
            order = False

        raw_movie_queue = mq.queue_get(session=session, downloaded=downloaded, queue_name=queue_name)
        converted_movie_queue = [movie.to_dict() for movie in raw_movie_queue]
        sorted_movie_list = sorted(converted_movie_queue,
                                   key=lambda movie: movie[sort_by] if movie[sort_by] else datetime.datetime,
                                   reverse=order)

        count = len(sorted_movie_list)
        pages = int(ceil(count / float(max_results)))
        if page > pages and pages != 0:
            return {'status': 'error',
                    'message': 'page %s does not exist' % page}, 404

        start = (page - 1) * max_results
        finish = start + max_results
        if finish > count:
            finish = count

        movie_items = []
        for movie_number in range(start, finish):
            movie_items.append(sorted_movie_list[movie_number])

        return jsonify({
            'movies': movie_items,
            'number_of_movies': count,
            'page_number': page,
            'total_number_of_pages': pages
        })
Exemple #36
0
    def on_feed_input(self, feed, config):
        if not config:
            return
        config = self.prepare_config(config)
        
        entries = []
        imdb_entries = queue_get()

        for imdb_entry in imdb_entries:
            entry = Entry()
            # make sure the entry has IMDB fields filled
            entry['url'] = ''
            entry['imaginary'] = True
            entry['imdb_url'] = 'http://www.imdb.com/title/' + imdb_entry.imdb_id
            entry['imdb_id'] = imdb_entry.imdb_id

            get_plugin_by_name('tmdb_lookup').instance.lookup(entry)
            # check if title is a imdb url (leftovers from old database?)
            # TODO: maybe this should be fixed at the queue_get ...
            if 'http://' in imdb_entry.title:
                log.debug('queue contains url instead of title')
                if entry.get('movie_name'):
                    entry['title'] = entry['movie_name']
                else:
                    log.error('Found imdb url in imdb queue, but lookup failed: %s' % entry['title'])
                    continue
            else:
                # normal title
                entry['title'] = imdb_entry.title


            # Add the year and quality if configured to
            if config.get('year') and entry.get('movie_year'):
                entry['title'] += ' %s' % entry['movie_year']
            if config.get('quality') and imdb_entry.quality != 'ANY':
                entry['title'] += ' %s' % imdb_entry.quality
            entries.append(entry)
            log.debug('Added title and IMDB id to new entry: %s - %s' %
                     (entry['title'], entry['imdb_id']))

        return entries
Exemple #37
0
    def on_feed_input(self, feed, config):
        if not config:
            return
        config = self.prepare_config(config)

        entries = []
        imdb_entries = queue_get()

        for imdb_entry in imdb_entries:
            entry = Entry()
            # make sure the entry has IMDB fields filled
            entry["url"] = ""
            entry["imdb_url"] = "http://www.imdb.com/title/" + imdb_entry.imdb_id
            entry["imdb_id"] = imdb_entry.imdb_id

            get_plugin_by_name("tmdb_lookup").instance.lookup(entry)
            # check if title is a imdb url (leftovers from old database?)
            # TODO: maybe this should be fixed at the queue_get ...
            if "http://" in imdb_entry.title:
                log.debug("queue contains url instead of title")
                if entry.get("movie_name"):
                    entry["title"] = entry["movie_name"]
                else:
                    log.error("Found imdb url in imdb queue, but lookup failed: %s" % entry["title"])
                    continue
            else:
                # normal title
                entry["title"] = imdb_entry.title

            # Add the year and quality if configured to
            if config.get("year") and entry.get("movie_year"):
                entry["title"] += " %s" % entry["movie_year"]
            if config.get("quality") and imdb_entry.quality != "ANY":
                entry["title"] += " %s" % imdb_entry.quality
            entries.append(entry)
            log.debug("Added title and IMDB id to new entry: %s - %s" % (entry["title"], entry["imdb_id"]))

        return entries
 def test_movie_queue_different_queue_add(self):
     self.execute_task('movie_queue_different_queue_add')
     queue = queue_get()
     assert len(queue) == 0
     queue = queue_get(queue_name='A new queue')
     assert len(queue) == 1
Exemple #39
0
 def test_movie_queue_different_queue_add(self):
     self.execute_task('movie_queue_different_queue_add')
     queue = queue_get()
     assert len(queue) == 0
     queue = queue_get(queue_name='A new queue')
     assert len(queue) == 1