commit 140a05669abf37e69850f24d9e84504346f1914f
parent 5bbcd6d69fd1b234f66583972fdb61fee345ec7c
Author: Pablo Murad <pablo@pablomurad.com>
Date: Sat, 31 Jan 2026 15:44:52 -0300
changes
Diffstat:
4 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/lazier/api/routes.py b/lazier/api/routes.py
@@ -528,6 +528,12 @@ def process_youtube_async(url: str, job_id: str, output_format: str, should_tran
'timestamp': datetime.now().isoformat(),
})
+ # Garantir link do vídeo no cabeçalho do documento
+ if metadata is None:
+ metadata = {}
+ if not metadata.get('webpage_url'):
+ metadata = {**metadata, 'webpage_url': url}
+
# Gera arquivo consolidado apenas se ambos foram solicitados OU se apenas transcrever (sem arquivo separado)
should_generate_consolidated = False
if should_transcribe and should_summarize:
@@ -615,6 +621,7 @@ def process_video_url_async(url: str, job_id: str, output_format: str, should_tr
should_summarize=should_summarize,
cache_prefix='video',
url_hash=calculate_url_hash(url),
+ url=url,
)
except Exception as e:
if jobs[job_id].get('status') != 'failed':
@@ -632,6 +639,7 @@ def _run_video_pipeline(
should_summarize: bool,
cache_prefix: str,
url_hash: str,
+ url: str = "",
):
"""Pipeline comum: transcrever, sumarizar, exportar, cache. Usado por YouTube e vídeo genérico."""
if 'transcription' not in jobs[job_id]:
@@ -652,6 +660,11 @@ def _run_video_pipeline(
transcription_internal = cached.get('transcription')
summary = cached.get('summary')
metadata = cached.get('metadata', metadata)
+ # Garantir link do vídeo no cabeçalho do documento
+ if metadata is None:
+ metadata = {}
+ if url and not metadata.get('webpage_url'):
+ metadata = {**metadata, 'webpage_url': url}
if should_transcribe:
transcription = transcription_internal
if transcription_internal and (not should_summarize or summary):
@@ -681,6 +694,11 @@ def _run_video_pipeline(
'metadata': metadata,
'timestamp': datetime.now().isoformat(),
})
+ # Garantir link do vídeo no cabeçalho do documento (também quando não veio do cache)
+ if metadata is None:
+ metadata = {}
+ if url and not metadata.get('webpage_url'):
+ metadata = {**metadata, 'webpage_url': url}
should_generate_consolidated = (should_transcribe and should_summarize) or (should_transcribe and not should_summarize and not transcription_path)
if should_generate_consolidated:
broadcast_progress(job_id, 90, 'processing', 'Gerando arquivo de saída...')
diff --git a/lazier/cli.py b/lazier/cli.py
@@ -327,6 +327,12 @@ def process_input(
# Gera arquivo de saída
task6 = progress.add_task(f"[blue]Gerando arquivo {format_type.upper()}...", total=100)
+ # Garantir link do vídeo no cabeçalho quando o input é URL (YouTube ou vídeo genérico)
+ if metadata is None:
+ metadata = {}
+ if not metadata.get('webpage_url') and input_path.strip().startswith(('http://', 'https://')):
+ metadata = {**metadata, 'webpage_url': input_path.strip()}
+
if not output:
output = get_output_filename(input_path)
# Adiciona extensão correta
diff --git a/lazier/core/formats.py b/lazier/core/formats.py
@@ -57,7 +57,7 @@ def export_txt(
lines.append(f"Canal/Criador: {metadata['uploader']}")
if metadata.get('webpage_url'):
- lines.append(f"URL: {metadata['webpage_url']}")
+ lines.append(f"Link do vídeo: {metadata['webpage_url']}")
lines.append("")
lines.append("-" * 80)
@@ -145,7 +145,7 @@ def export_markdown(
lines.append(f"- **Canal/Criador:** {metadata['uploader']}")
if metadata.get('webpage_url'):
- lines.append(f"- **URL:** [{metadata['webpage_url']}]({metadata['webpage_url']})")
+ lines.append(f"- **Link do vídeo:** [{metadata['webpage_url']}]({metadata['webpage_url']})")
lines.append("")
@@ -311,7 +311,7 @@ def export_pdf(
if metadata.get('uploader'):
meta_line += f" | Canal/Criador: {sanitize_xml_string(str(metadata['uploader']))}"
if metadata.get('webpage_url'):
- meta_line += f" | URL: {sanitize_xml_string(str(metadata['webpage_url']))}"
+ meta_line += f" | Link do vídeo: {sanitize_xml_string(str(metadata['webpage_url']))}"
story.append(Paragraph(sanitize_xml_string(meta_line), body_style))
story.append(Spacer(1, 16))
diff --git a/lazier/docx_generator.py b/lazier/docx_generator.py
@@ -62,7 +62,7 @@ def create_document(
metadata_section.add_run(sanitize_xml_string(str(metadata['uploader'])))
if metadata.get('webpage_url'):
- metadata_section.add_run('\nURL: ').bold = True
+ metadata_section.add_run('\nLink do vídeo: ').bold = True
metadata_section.add_run(sanitize_xml_string(str(metadata['webpage_url'])))
# Espaçamento