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",
|
"cffi==2.0.0",
|
||||||
"charset-normalizer==3.4.7",
|
"charset-normalizer==3.4.7",
|
||||||
"click==8.3.2",
|
"click==8.3.2",
|
||||||
|
"colorlog>=6.12.0",
|
||||||
"contourpy==1.3.3",
|
"contourpy==1.3.3",
|
||||||
"cryptography==46.0.7",
|
"cryptography==46.0.7",
|
||||||
"cycler==0.12.1",
|
"cycler==0.12.1",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from datetime import datetime
|
|||||||
|
|
||||||
import requests
|
import requests
|
||||||
import logging
|
import logging
|
||||||
|
import colorlog
|
||||||
|
|
||||||
# -----------------------------
|
# -----------------------------
|
||||||
# Logger
|
# Logger
|
||||||
@@ -38,12 +38,23 @@ LOG_LEVELS = {
|
|||||||
"CRITICAL": logging.CRITICAL,
|
"CRITICAL": logging.CRITICAL,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def setup_logging(log_level: str = "INFO", logfile: str | None = None) -> None:
|
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 = logging.StreamHandler(sys.stdout)
|
||||||
stdout_handler.setFormatter(formatter)
|
stdout_handler.setFormatter(console_formatter)
|
||||||
stdout_handler.setLevel(LOG_LEVELS[log_level.upper()])
|
stdout_handler.setLevel(LOG_LEVELS[log_level.upper()])
|
||||||
|
|
||||||
root_logger = logging.getLogger()
|
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 = logging.FileHandler(logfile_data, encoding="utf-8")
|
||||||
file_handler.setFormatter(formatter)
|
file_handler.setFormatter(file_formatter)
|
||||||
file_handler.setLevel(TRACE)
|
file_handler.setLevel(TRACE)
|
||||||
|
|
||||||
root_logger.addHandler(file_handler)
|
root_logger.addHandler(file_handler)
|
||||||
@@ -127,6 +138,49 @@ def safe_rename(
|
|||||||
return ret, True
|
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(
|
def get_audio_tracks(
|
||||||
source: str, title: int | None = None, handbrake: bool = False
|
source: str, title: int | None = None, handbrake: bool = False
|
||||||
) -> list[dict]:
|
) -> list[dict]:
|
||||||
@@ -232,59 +286,10 @@ def get_audio_tracks(
|
|||||||
)
|
)
|
||||||
|
|
||||||
if not tracks:
|
if not tracks:
|
||||||
tracks.append({"number": 0, "description": "", "primary": False})
|
tracks.append({"number": 0, "description": "","lang":"","language":"", "primary": False})
|
||||||
|
|
||||||
return tracks
|
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):
|
def words(text):
|
||||||
return set(re.findall(r"[^\W_]+", text.lower()))
|
return set(re.findall(r"[^\W_]+", text.lower()))
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user