fix: Mejoras en generación de PDFs y resúmenes
- Corrige PDFGenerator para pasar contenido (no ruta) - Agrega prompt siguiendo código.md (español, estructura académica) - Limpia thinking tokens de respuesta AI - Agrega skip de archivos ya procesados en watcher - Implementa tablas LaTeX en PDFs (reportlab Table) - Agrega load_dotenv() en main.py - Actualiza .env con MiniMax config - Agrega transcriptions/ a .gitignore Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
36
main.py
36
main.py
@@ -5,10 +5,15 @@ CBFacil - Sistema de transcripción de audio con IA y Notion
|
||||
Características:
|
||||
- Polling de Nextcloud vía WebDAV
|
||||
- Transcripción con Whisper (medium, GPU)
|
||||
- Resúmenes con IA (GLM-4.7)
|
||||
- Resúmenes con IA (MiniMax)
|
||||
- Generación de PDF
|
||||
- Notificaciones Telegram
|
||||
"""
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# Cargar variables de entorno desde .env
|
||||
load_dotenv()
|
||||
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
@@ -414,10 +419,31 @@ class PollingService:
|
||||
# Extensiones de audio soportadas
|
||||
audio_extensions = {".mp3", ".wav", ".m4a", ".mp4", ".webm", ".ogg", ".flac"}
|
||||
|
||||
pending_files = [
|
||||
f for f in downloads_dir.iterdir()
|
||||
if f.is_file() and f.suffix.lower() in audio_extensions and not f.name.startswith(".")
|
||||
]
|
||||
# Obtener transcripciones existentes para comparar
|
||||
transcriptions_dir = settings.TRANSCRIPTIONS_DIR
|
||||
processed_names = set()
|
||||
if transcriptions_dir.exists():
|
||||
for f in transcriptions_dir.iterdir():
|
||||
if f.is_file() and f.suffix == ".txt":
|
||||
# Extraer nombre base sin extensión
|
||||
processed_names.add(f.stem)
|
||||
|
||||
# Filtrar solo archivos que NO han sido procesados
|
||||
pending_files = []
|
||||
for f in downloads_dir.iterdir():
|
||||
if f.is_file() and f.suffix.lower() in audio_extensions and not f.name.startswith("."):
|
||||
# Verificar si ya existe transcripción para este archivo
|
||||
file_stem = f.stem
|
||||
# También verificar versiones con " (copy)" o similar
|
||||
if file_stem not in processed_names:
|
||||
# Verificar variaciones del nombre
|
||||
is_processed = False
|
||||
for processed in processed_names:
|
||||
if file_stem in processed or processed in file_stem:
|
||||
is_processed = True
|
||||
break
|
||||
if not is_processed:
|
||||
pending_files.append(f)
|
||||
|
||||
if not pending_files:
|
||||
logger.debug("No pending audio files to process")
|
||||
|
||||
Reference in New Issue
Block a user