Пример #1
0
def search_all():
    ''' Searches for all movies
    Should never run in the main thread.
    Automatically runs as scheduled task.

    Searches only for movies that are Wanted, Found,
        or Finished -- if inside user-set date range.

    For each movie:
        If backlog status is 0:
            Executes search()
        Else:
            Parses rss feeds for matches

    If autograb is enabled calls snatcher.grab_all()

    Does not return
    '''
    logging.info('Executing search/grab for all movies.')

    today = datetime.datetime.today().replace(second=0, microsecond=0)

    if core.CONFIG['Search']['verifyreleases'] == 'predb':
        predb.check_all()

    movies = core.sql.get_user_movies()
    if not movies:
        return

    backlog_movies = [
        i for i in movies if i['backlog'] != 1
        and i['status'] is not 'Disabled' and Manage.verify(i, today=today)
    ]
    if backlog_movies:
        logging.debug('Backlog movies: {}'.format(', '.join(
            i['title'] for i in backlog_movies)))
        for movie in backlog_movies:
            imdbid = movie['imdbid']
            title = movie['title']
            year = movie['year']
            quality = movie['quality']

            logging.info('Performing backlog search for {} {}.'.format(
                title, year))
            search(imdbid, title, year, quality)
            continue

    rss_movies = [
        i for i in _get_rss_movies(movies) if Manage.verify(i, today=today)
    ]
    if rss_movies:
        logging.info('Checking RSS feeds for {} movies.'.format(
            len(rss_movies)))
        rss_sync(rss_movies)

    if core.CONFIG['Search']['autograb']:
        snatcher.grab_all()
    return
Пример #2
0
def _t_search_grab(movie):
    ''' Run verify/search/snatch chain
    movie (dict): movie to run search for

    Meant to be executed *IN ITS OWN THREAD* after adding a movie from user-input (ie api, search)
        so the main thread is not tied up.

    Does not return
    '''
    logging.info('Executing automatic search/grab for {}.'.format(
        movie['title']))

    imdbid = movie['imdbid']
    title = movie['title']
    year = movie['year']
    quality = movie['quality']

    if core.CONFIG['Search']['verifyreleases'] == 'predb':
        movie = predb.backlog_search(movie)

    if not Manage.verify(movie):
        return

    if core.CONFIG['Search']['searchafteradd'] and search(
            imdbid, title, year,
            quality) and core.CONFIG['Search']['autograb']:
        best_release = snatcher.get_best_release(movie)
        if best_release:
            snatcher.download(best_release)