init: scripts diversos (crawlers, conversores, scrapers)
This commit is contained in:
Executable
+95
@@ -0,0 +1,95 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
process_transcripts.py
|
||||
|
||||
Author: Descomplicar® Crescimento Digital
|
||||
Link: https://descomplicar.pt
|
||||
Copyright: 2025 Descomplicar®
|
||||
"""
|
||||
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
from processors.text_corrector import TextCorrector
|
||||
import concurrent.futures
|
||||
from tqdm import tqdm
|
||||
|
||||
def copy_structure(src_dir, dest_dir):
|
||||
"""Copia a estrutura de pastas mantendo a hierarquia"""
|
||||
src_path = Path(src_dir)
|
||||
dest_path = Path(dest_dir)
|
||||
|
||||
# Copia cada pasta e ficheiro
|
||||
for src_file in src_path.rglob('*.txt'):
|
||||
# Calcula o caminho relativo
|
||||
rel_path = src_file.relative_to(src_path)
|
||||
# Cria o caminho de destino
|
||||
dest_file = dest_path / rel_path
|
||||
# Garante que a pasta de destino existe
|
||||
dest_file.parent.mkdir(parents=True, exist_ok=True)
|
||||
# Copia o ficheiro
|
||||
shutil.copy2(src_file, dest_file)
|
||||
print(f"Copiado: {rel_path}")
|
||||
|
||||
def process_file(corrector, src_file, input_dir, output_dir):
|
||||
"""Processa um único ficheiro"""
|
||||
try:
|
||||
# Calcula caminhos relativos
|
||||
rel_path = src_file.relative_to(input_dir)
|
||||
output_file = output_dir / rel_path.parent / f"corrigido_{rel_path.name}"
|
||||
|
||||
# Garante que a pasta de destino existe
|
||||
output_file.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# Lê e corrige o texto
|
||||
texto = src_file.read_text(encoding="utf-8")
|
||||
texto_corrigido = corrector.correct_text(texto)
|
||||
|
||||
# Salva o resultado
|
||||
output_file.write_text(texto_corrigido, encoding="utf-8")
|
||||
|
||||
return True, str(rel_path)
|
||||
|
||||
except Exception as e:
|
||||
return False, f"Erro ao processar {rel_path}: {str(e)}"
|
||||
|
||||
def main():
|
||||
# Definir diretórios
|
||||
src_dir = Path("/home/ealmeida/Scripts/youtube-transcript/transcricoes")
|
||||
input_dir = Path("/home/ealmeida/Scripts/SuperBot-KB/input")
|
||||
output_dir = Path("/home/ealmeida/Scripts/SuperBot-KB/corrected")
|
||||
|
||||
# Copiar estrutura para input
|
||||
print("\nCopiando ficheiros para input...")
|
||||
copy_structure(src_dir, input_dir)
|
||||
|
||||
# Listar todos os ficheiros .txt no input
|
||||
input_files = list(input_dir.rglob("*.txt"))
|
||||
if not input_files:
|
||||
print("Nenhum ficheiro .txt encontrado para processar")
|
||||
return
|
||||
|
||||
print(f"\nProcessando {len(input_files)} ficheiros...")
|
||||
|
||||
# Criar instância do corretor
|
||||
corrector = TextCorrector()
|
||||
|
||||
# Processar ficheiros em paralelo
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
|
||||
# Criar lista de futures
|
||||
futures = [
|
||||
executor.submit(process_file, corrector, f, input_dir, output_dir)
|
||||
for f in input_files
|
||||
]
|
||||
|
||||
# Processar resultados com barra de progresso
|
||||
for future in tqdm(concurrent.futures.as_completed(futures), total=len(input_files)):
|
||||
success, result = future.result()
|
||||
if success:
|
||||
print(f"✓ {result}")
|
||||
else:
|
||||
print(f"✗ {result}")
|
||||
|
||||
print("\nProcessamento concluído!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user