This repository has been archived on 2023-11-11. You can view files and clone it, but cannot push or open issues or pull requests.
automated-youtube-dl/process/funcs.py

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