faet(serverlibrary): add colorlog to custom logger
import colorlog and change formatter for console no change needed in client
This commit is contained in:
1 parent
3f19182d35
commit
7f2048cda6
2 files changed
+61
-55
No files matched your search
@@ -12,6 +12,7 @@ dependencies = [
|
||||
"cffi==2.0.0",
|
||||
"charset-normalizer==3.4.7",
|
||||
"click==8.3.2",
|
||||
"colorlog>=6.12.0",
|
||||
"contourpy==1.3.3",
|
||||
"cryptography==46.0.7",
|
||||
"cycler==0.12.1",
|
||||
|
||||
@@ -9,7 +9,7 @@ from datetime import datetime
|
||||
|
||||
import requests
|
||||
import logging
|
||||
|
||||
import colorlog
|
||||
|
||||
# -----------------------------
|
||||
# Logger
|
||||
@@ -38,12 +38,23 @@ LOG_LEVELS = {
|
||||
"CRITICAL": logging.CRITICAL,
|
||||
}
|
||||
|
||||
|
||||
def setup_logging(log_level: str = "INFO", logfile: str | None = None) -> None:
|
||||
formatter = logging.Formatter("%(asctime)s %(levelname)s %(name)s %(message)s")
|
||||
logging.addLevelName(TRACE, "TRACE")
|
||||
|
||||
file_formatter = logging.Formatter("%(asctime)s %(levelname)s %(name)s %(message)s")
|
||||
console_formatter = colorlog.ColoredFormatter(
|
||||
"%(log_color)s%(asctime)s %(levelname)-8s%(reset)s %(name)s %(message)s",
|
||||
log_colors={
|
||||
"TRACE": "cyan",
|
||||
"DEBUG": "blue",
|
||||
"INFO": "green",
|
||||
"WARNING": "yellow",
|
||||
"ERROR": "red",
|
||||
"CRITICAL": "red,bg_white",
|
||||
},
|
||||
)
|
||||
stdout_handler = logging.StreamHandler(sys.stdout)
|
||||
stdout_handler.setFormatter(formatter)
|
||||
stdout_handler.setFormatter(console_formatter)
|
||||
stdout_handler.setLevel(LOG_LEVELS[log_level.upper()])
|
||||
|
||||
root_logger = logging.getLogger()
|
||||
@@ -59,7 +70,7 @@ def setup_logging(log_level: str = "INFO", logfile: str | None = None) -> None:
|
||||
)
|
||||
|
||||
file_handler = logging.FileHandler(logfile_data, encoding="utf-8")
|
||||
file_handler.setFormatter(formatter)
|
||||
file_handler.setFormatter(file_formatter)
|
||||
file_handler.setLevel(TRACE)
|
||||
|
||||
root_logger.addHandler(file_handler)
|
||||
@@ -127,6 +138,49 @@ def safe_rename(
|
||||
return ret, True
|
||||
|
||||
|
||||
def get_subtitle_tracks(source):
|
||||
result = subprocess.run(
|
||||
[
|
||||
"ffprobe",
|
||||
"-v",
|
||||
"quiet",
|
||||
"-print_format",
|
||||
"json",
|
||||
"-show_streams",
|
||||
source,
|
||||
],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True,
|
||||
)
|
||||
|
||||
info = json.loads(result.stdout)
|
||||
|
||||
tracks = []
|
||||
|
||||
for stream in info["streams"]:
|
||||
if stream.get("codec_type") != "subtitle":
|
||||
continue
|
||||
|
||||
tracks.append(
|
||||
{
|
||||
"number": stream["index"],
|
||||
"description": (
|
||||
stream.get("tags", {}).get("title")
|
||||
or stream.get("tags", {}).get("language")
|
||||
or f"Subtitle {stream['index']}"
|
||||
),
|
||||
"lang": stream.get("lang", ""),
|
||||
"language": stream.get("tags", {}).get("language", ""),
|
||||
"primary": (stream.get("disposition", {}).get("default") == 1),
|
||||
}
|
||||
)
|
||||
|
||||
if not tracks:
|
||||
tracks.append({"number": 0, "description": "", "lang": "", "language": "", "primary": False})
|
||||
|
||||
return tracks
|
||||
|
||||
def get_audio_tracks(
|
||||
source: str, title: int | None = None, handbrake: bool = False
|
||||
) -> list[dict]:
|
||||
@@ -232,59 +286,10 @@ def get_audio_tracks(
|
||||
)
|
||||
|
||||
if not tracks:
|
||||
tracks.append({"number": 0, "description": "", "primary": False})
|
||||
tracks.append({"number": 0, "description": "","lang":"","language":"", "primary": False})
|
||||
|
||||
return tracks
|
||||
|
||||
|
||||
def get_subtitle_tracks(source):
|
||||
result = subprocess.run(
|
||||
[
|
||||
"ffprobe",
|
||||
"-v",
|
||||
"quiet",
|
||||
"-print_format",
|
||||
"json",
|
||||
"-show_streams",
|
||||
source,
|
||||
],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True,
|
||||
)
|
||||
|
||||
info = json.loads(result.stdout)
|
||||
|
||||
tracks = []
|
||||
|
||||
for stream in info["streams"]:
|
||||
if stream.get("codec_type") != "subtitle":
|
||||
continue
|
||||
|
||||
tracks.append(
|
||||
{
|
||||
"number": stream["index"],
|
||||
"description": (
|
||||
stream.get("tags", {}).get("title")
|
||||
or stream.get("tags", {}).get("language")
|
||||
or f"Subtitle {stream['index']}"
|
||||
),
|
||||
"primary": (stream.get("disposition", {}).get("default") == 1),
|
||||
}
|
||||
)
|
||||
|
||||
if not tracks:
|
||||
tracks.append(
|
||||
{
|
||||
"number": 0,
|
||||
"description": "",
|
||||
"primary": False,
|
||||
}
|
||||
)
|
||||
|
||||
return tracks
|
||||
|
||||
|
||||
def words(text):
|
||||
return set(re.findall(r"[^\W_]+", text.lower()))
|
||||
|
||||
|
||||
Reference in new issue
Block a user