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