|
|
from dataclasses import dataclass |
|
|
from enum import Enum |
|
|
from datetime import datetime |
|
|
import re |
|
|
|
|
|
|
|
|
class LogTag(Enum): |
|
|
load_start:str = "start initial TranslatePipe" |
|
|
load_end:str = "Pipeline is ready." |
|
|
audio_end:str = "Audio buffer length" |
|
|
transcribe_end:str = "transcribe output" |
|
|
transcribe_cost:str = "transcribe cost" |
|
|
translate_start:str = "Translation input" |
|
|
translate_end:str = "Translation out" |
|
|
translate_cost:str = "Translate cost" |
|
|
translate_large_end:str = "Translation large model output" |
|
|
translate_large_cost:str = "Translate-large cost" |
|
|
|
|
|
|
|
|
@dataclass |
|
|
class LogItem: |
|
|
timestamp: datetime |
|
|
tag: LogTag |
|
|
content: str = "" |
|
|
|
|
|
@classmethod |
|
|
def from_log(cls, log_tag, log_line): |
|
|
try: |
|
|
time_str = re.match("^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}", log_line).group(0) |
|
|
timestamp = datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S,%f") |
|
|
|
|
|
|
|
|
res = re.match(".*?]:\s*(.*)", log_line) |
|
|
content = "" |
|
|
if res: |
|
|
content = res.group(1) |
|
|
except Exception as e: |
|
|
print(e) |
|
|
print(log_line) |
|
|
return cls(timestamp=timestamp, |
|
|
tag=log_tag, |
|
|
content=content) |
|
|
@dataclass |
|
|
class WebItem: |
|
|
timestamp: datetime |
|
|
src_text: str |
|
|
dst_text: str |
|
|
|
|
|
if __name__ == '__main__': |
|
|
a = LogItem.from_log(LogTag.translate_finish, "2025-05-08 16:17:28,468 - INFO - [ ๐ transcribe output ]: Today is Friday.") |
|
|
print(a) |
|
|
|