faet(serverlibrary): add colorlog to custom logger

import colorlog and change formatter for console
no change needed in client
This commit is contained in:
Lucas Vivo committed 2026-10-27 09:46:01 +01:00
1 parent 3f19182d35
commit 7f2048cda6
2 files changed
+61 -55

No files matched your search

+1
View File
@@ -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",
+60 -55
View File
@@ -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()))