1# -*- coding: utf-8 -*- 2import logging 3import os 4from logging.handlers import RotatingFileHandler 5from platform import uname 6from uuid import getnode 7 8from plexapi.config import PlexConfig, reset_base_headers 9import plexapi.const as const 10from plexapi.utils import SecretsFilter 11 12# Load User Defined Config 13DEFAULT_CONFIG_PATH = os.path.expanduser('~/.config/plexapi/config.ini') 14CONFIG_PATH = os.environ.get('PLEXAPI_CONFIG_PATH', DEFAULT_CONFIG_PATH) 15CONFIG = PlexConfig(CONFIG_PATH) 16 17# PlexAPI Settings 18PROJECT = 'PlexAPI' 19VERSION = __version__ = const.__version__ 20TIMEOUT = CONFIG.get('plexapi.timeout', 30, int) 21X_PLEX_CONTAINER_SIZE = CONFIG.get('plexapi.container_size', 100, int) 22X_PLEX_ENABLE_FAST_CONNECT = CONFIG.get('plexapi.enable_fast_connect', False, bool) 23 24# Plex Header Configuation 25X_PLEX_PROVIDES = CONFIG.get('header.provides', 'controller') 26X_PLEX_PLATFORM = CONFIG.get('header.platform', CONFIG.get('header.platorm', uname()[0])) 27X_PLEX_PLATFORM_VERSION = CONFIG.get('header.platform_version', uname()[2]) 28X_PLEX_PRODUCT = CONFIG.get('header.product', PROJECT) 29X_PLEX_VERSION = CONFIG.get('header.version', VERSION) 30X_PLEX_DEVICE = CONFIG.get('header.device', X_PLEX_PLATFORM) 31X_PLEX_DEVICE_NAME = CONFIG.get('header.device_name', uname()[1]) 32X_PLEX_IDENTIFIER = CONFIG.get('header.identifier', str(hex(getnode()))) 33BASE_HEADERS = reset_base_headers() 34 35# Logging Configuration 36log = logging.getLogger('plexapi') 37logfile = CONFIG.get('log.path') 38logformat = CONFIG.get('log.format', '%(asctime)s %(module)12s:%(lineno)-4s %(levelname)-9s %(message)s') 39loglevel = CONFIG.get('log.level', 'INFO').upper() 40loghandler = logging.NullHandler() 41 42if logfile: # pragma: no cover 43 logbackups = CONFIG.get('log.backup_count', 3, int) 44 logbytes = CONFIG.get('log.rotate_bytes', 512000, int) 45 loghandler = RotatingFileHandler(os.path.expanduser(logfile), 'a', logbytes, logbackups) 46 47loghandler.setFormatter(logging.Formatter(logformat)) 48log.addHandler(loghandler) 49log.setLevel(loglevel) 50logfilter = SecretsFilter() 51if CONFIG.get('log.show_secrets', '').lower() != 'true': 52 log.addFilter(logfilter) 53