Exemplo n.º 1
0
def get_trakt_id(title, item_type, year=None):
    required_type = 'show' if item_type == 'episode' else 'movie'

    global trakt_cache
    if not trakt_cache:
        trakt_cache = read_json(TRAKT_CACHE_PATH) or {'movie': {}, 'show': {}}

    trakt_id = trakt_cache[required_type].get(title)
    if trakt_id:
        return trakt_id

    logger.debug(f'Searching trakt: Title: "{title}", Year: {year}')
    results = search(title, [required_type], year)
    if results is None:  # Connection error
        return 0  # Dont store in cache
    elif results == [] or results[0]['score'] < 5:  # Weak or no match
        msg = f'Trakt search yielded no results for the {required_type}, {title}'
        msg += f", Year: {year}" * bool(year)
        logger.warning(msg)
        notify(msg)
        trakt_id = -1
    else:
        trakt_id = results[0][required_type]['ids']['trakt']

    trakt_cache[required_type][title] = trakt_id
    logger.debug(f'Trakt ID: {trakt_id}')
    write_json(trakt_cache, TRAKT_CACHE_PATH)
    return trakt_id
Exemplo n.º 2
0
def get_token(**kwargs):
    token = kwargs.get("token") or read_json(PLEX_TOKEN_PATH).get("token")
    if not token:
        logger.info("Retrieving plex token")
        token = plex_token_auth(kwargs["login"], kwargs["password"])
        if token:
            write_json({"token": token}, PLEX_TOKEN_PATH)
            logger.info(f"Saved plex token to {PLEX_TOKEN_PATH}")
    return token
Exemplo n.º 3
0
def get_access_token():
    global token_data
    if not token_data:
        logger.info("Access token not found in config. "
                    "Initiating device authentication.")
        token_data = device_auth()
        write_json(token_data, TRAKT_TOKEN_PATH)
    elif token_data['created_at'] + token_data['expires_in'] - \
            time.time() < 86400:
        logger.info("Access token about to expire. Refreshing.")
        token_data = refresh_token(token_data)
        write_json(token_data, TRAKT_TOKEN_PATH)
    if not token_data:
        logger.error("Unable to get access token. "
                     f"Try deleting {TRAKT_TOKEN_PATH!s} and retry.")
        notify("Failed to authorize application.", stdout=True)
        sys.exit(1)
    return token_data['access_token']
Exemplo n.º 4
0
def get_token():
    global token_data
    if not token_data:
        logger.info("Retrieving plex token")
        login = input("Plex login ID: ")
        pwd = getpass()
        resp = plex_token_auth(login, pwd)
        if resp.ok:
            token_data = {"token": resp.json()["user"]["authToken"]}
            write_json(token_data, PLEX_TOKEN_PATH)
            logger.info(f"Saved plex token to {PLEX_TOKEN_PATH}")
        elif resp is not None:
            print(resp.json().get("error", resp.text))
            return None
        else:
            logger.error("Unable to get access token. "
                         f"Try deleting {PLEX_TOKEN_PATH!s} and retry.")
            return None
    return token_data['token']
Exemplo n.º 5
0
def get_trakt_id(title, item_type, year=None):
    required_type = 'show' if item_type == 'episode' else 'movie'

    global trakt_cache
    if not trakt_cache:
        trakt_cache = read_json(TRAKT_CACHE_PATH) or {'movie': {}, 'show': {}}

    key = f"{title}{year or ''}"

    trakt_id = trakt_cache[required_type].get(key)
    if trakt_id:
        return trakt_id

    logger.debug(
        f'Searching trakt: Title: "{title}"{year and f", Year: {year}" or ""}')
    results = search(title, [required_type], year)
    if results == [] and year is not None:
        # no match, possibly a mismatch in year metadata
        msg = (
            f'Trakt search yielded no results for the {required_type}, {title}, '
            f'Year: {year}. Retrying search without filtering by year.')
        logger.warning(msg)
        notify(msg, category="trakt")
        results = search(title, [required_type])  # retry without 'year'

    if results is None:  # Connection error
        return 0  # Dont store in cache
    elif results == [] or results[0]['score'] < 5:  # Weak or no match
        msg = f'Trakt search yielded no results for the {required_type}, {title}'
        msg += f", Year: {year}" * bool(year)
        logger.warning(msg)
        notify(msg, category="trakt")
        trakt_id = -1
    else:
        trakt_id = results[0][required_type]['ids']['trakt']

    trakt_cache[required_type][key] = trakt_id
    logger.debug(f'Trakt ID: {trakt_id}')
    write_json(trakt_cache, TRAKT_CACHE_PATH)
    return trakt_id
Exemplo n.º 6
0
def get_trakt_id(title, item_type):
    required_type = 'show' if item_type == 'episode' else 'movie'

    logger.debug('Searching cache.')
    trakt_id = trakt_cache[required_type].get(title)
    if trakt_id:
        return trakt_id

    logger.debug('Searching trakt.')
    results = search(title, [required_type])
    if results is None:  # Connection error
        return 0  # Dont store in cache
    elif results == [] or results[0]['score'] < 5:  # Weak or no match
        logger.warning('Trakt search yielded no results.')
        notify('Trakt search yielded no results for ' + title)
        trakt_id = -1
    else:
        trakt_id = results[0][required_type]['ids']['trakt']

    trakt_cache[required_type][title] = trakt_id
    logger.debug(f'Trakt ID: {trakt_id}')
    write_json(trakt_cache, TRAKT_CACHE_PATH)
    return trakt_id
Exemplo n.º 7
0
 def save_backlog(self):
     write_json(self.backlog, self.BACKLOG_PATH)
Exemplo n.º 8
0
 def token_data(self, value):
     if value is None:
         return
     self._token_data = value
     write_json(self._token_data, self.TRAKT_TOKEN_PATH)