Add structured logging for Docker; support LOG_LEVEL env and --log-level
This commit is contained in:
@@ -16,12 +16,15 @@ but ignored when not relevant.
|
||||
"""
|
||||
|
||||
import os
|
||||
import logging
|
||||
from typing import Union, Optional
|
||||
|
||||
from .localai_client import LocalAIClient, LocalAIError
|
||||
from .summarizer import SummarizerClient, SummarizerError
|
||||
from .transcript_exporter import Transcript
|
||||
|
||||
logger = logging.getLogger("scraibe.autotranscript")
|
||||
|
||||
|
||||
class Scraibe:
|
||||
"""
|
||||
@@ -68,6 +71,8 @@ class Scraibe:
|
||||
"""
|
||||
self.verbose = verbose or kwargs.get("verbose", False)
|
||||
|
||||
logger.info("Initializing Scraibe.")
|
||||
|
||||
try:
|
||||
self.client = LocalAIClient(
|
||||
api_url=api_url,
|
||||
@@ -75,6 +80,7 @@ class Scraibe:
|
||||
model=model,
|
||||
)
|
||||
except LocalAIError as e:
|
||||
logger.error("Failed to initialize LocalAI client: %s", e)
|
||||
raise LocalAIError(f"Failed to initialize LocalAI client: {e}")
|
||||
|
||||
# Summarizer is lazy-initialized if needed
|
||||
@@ -95,6 +101,7 @@ class Scraibe:
|
||||
if self._summarizer is not None:
|
||||
return self._summarizer
|
||||
|
||||
logger.info("Initializing SummarizerClient (lazy).")
|
||||
try:
|
||||
self._summarizer = SummarizerClient(
|
||||
api_url=api_url,
|
||||
@@ -102,6 +109,7 @@ class Scraibe:
|
||||
model=model,
|
||||
)
|
||||
except SummarizerError as e:
|
||||
logger.error("Failed to initialize Summarizer client: %s", e)
|
||||
raise SummarizerError(f"Failed to initialize Summarizer client: {e}")
|
||||
|
||||
return self._summarizer
|
||||
@@ -137,6 +145,7 @@ class Scraibe:
|
||||
)
|
||||
|
||||
verbose = kwargs.get("verbose", self.verbose)
|
||||
logger.info("transcribe called for: %s", audio_file)
|
||||
|
||||
try:
|
||||
result = self.client.diarize_and_transcribe(
|
||||
@@ -146,10 +155,13 @@ class Scraibe:
|
||||
**kwargs,
|
||||
)
|
||||
except LocalAIError as e:
|
||||
logger.error("Error during LocalAI transcription: %s", e)
|
||||
raise LocalAIError(f"Error during LocalAI transcription: {e}")
|
||||
|
||||
transcripts = result.get("transcripts", [])
|
||||
return " ".join(t.strip() for t in transcripts if t.strip())
|
||||
text = " ".join(t.strip() for t in transcripts if t.strip())
|
||||
logger.info("transcribe completed, length=%d chars", len(text))
|
||||
return text
|
||||
|
||||
def transcript_and_summarize(
|
||||
self,
|
||||
@@ -182,6 +194,7 @@ class Scraibe:
|
||||
)
|
||||
|
||||
verbose = kwargs.get("verbose", self.verbose)
|
||||
logger.info("transcript_and_summarize called for: %s", audio_file)
|
||||
|
||||
# 1) Get diarized + transcribed result
|
||||
try:
|
||||
@@ -192,6 +205,7 @@ class Scraibe:
|
||||
**kwargs,
|
||||
)
|
||||
except LocalAIError as e:
|
||||
logger.error("Error during LocalAI transcription: %s", e)
|
||||
raise LocalAIError(f"Error during LocalAI transcription: {e}")
|
||||
|
||||
segments = result.get("segments", [])
|
||||
@@ -199,6 +213,7 @@ class Scraibe:
|
||||
transcripts = result.get("transcripts", [])
|
||||
|
||||
if not segments:
|
||||
logger.warning("No segments returned; returning empty transcript/summary.")
|
||||
return {
|
||||
"transcript": "",
|
||||
"summary": "No transcript content to summarize.",
|
||||
@@ -213,6 +228,7 @@ class Scraibe:
|
||||
lines.append(line)
|
||||
|
||||
full_transcript = "\n\n".join(lines)
|
||||
logger.info("Built full transcript, length=%d chars", len(full_transcript))
|
||||
|
||||
# 3) Summarize
|
||||
try:
|
||||
@@ -222,13 +238,17 @@ class Scraibe:
|
||||
model=summarizer_model,
|
||||
)
|
||||
except SummarizerError as e:
|
||||
logger.error("Failed to initialize summarizer: %s", e)
|
||||
raise SummarizerError(f"Failed to initialize summarizer: {e}")
|
||||
|
||||
try:
|
||||
summary = summarizer.summarize_transcript(full_transcript)
|
||||
except SummarizerError as e:
|
||||
logger.error("Error during summarization: %s", e)
|
||||
raise SummarizerError(f"Error during summarization: {e}")
|
||||
|
||||
logger.info("transcript_and_summarize completed.")
|
||||
|
||||
return {
|
||||
"transcript": full_transcript,
|
||||
"summary": summary,
|
||||
|
||||
Reference in New Issue
Block a user