63 lines
1.7 KiB
Python
63 lines
1.7 KiB
Python
import logging
|
|
import os
|
|
import sys
|
|
|
|
import psutil
|
|
|
|
|
|
def restart_program():
|
|
"""
|
|
Restarts the current program, with file objects and descriptors cleanup.
|
|
https://stackoverflow.com/a/33334183
|
|
"""
|
|
try:
|
|
p = psutil.Process(os.getpid())
|
|
for handler in p.open_files() + p.connections():
|
|
os.close(handler.fd)
|
|
except Exception as e:
|
|
print('Could not restart Automated FBI Reporter after update.')
|
|
print(e)
|
|
sys.exit(1)
|
|
python = sys.executable
|
|
os.execl(python, python, *sys.argv)
|
|
|
|
|
|
def setup_file_logger(name, log_file, level=logging.INFO, format_str: str = '%(asctime)s - %(name)s - %(levelname)s - %(message)s', filemode='a'):
|
|
formatter = logging.Formatter(format_str)
|
|
|
|
logger = logging.getLogger(name)
|
|
logger.setLevel(level)
|
|
handler = logging.FileHandler(log_file, mode=filemode)
|
|
handler.setLevel(level)
|
|
handler.setFormatter(formatter)
|
|
logger.addHandler(handler)
|
|
|
|
# Silence console logging
|
|
# if no_console:
|
|
# console = logging.StreamHandler()
|
|
# console.setLevel(100)
|
|
|
|
return logger
|
|
|
|
|
|
def get_silent_logger(name, level=logging.INFO, format_str: str = '%(asctime)s - %(name)s - %(levelname)s - %(message)s', silent: bool = True):
|
|
logger = logging.getLogger(name)
|
|
console = logging.StreamHandler()
|
|
console.setFormatter(logging.Formatter(format_str))
|
|
logger.addHandler(console)
|
|
if silent:
|
|
logger.setLevel(100)
|
|
else:
|
|
logger.setLevel(level)
|
|
return logger
|
|
|
|
|
|
def remove_duplicates_from_playlist(entries):
|
|
videos = []
|
|
s = set()
|
|
for p, video in enumerate(entries):
|
|
if video['id'] not in s:
|
|
videos.append(video)
|
|
s.add(video['id'])
|
|
return videos
|