import requests
import time
import json
from datetime import datetime
import os
from concurrent.futures import ThreadPoolExecutor, as_completed
# Configuración
API_URL = 'https://api.olostep.com/v1'
API_KEY = '<your_olostep_api_key>'
HEADERS = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {API_KEY}'
}
# Función para recuperar contenido en formato markdown
def retrieve_content(retrieve_id, formats):
params = {
"retrieve_id": retrieve_id,
"formats": json.dumps(formats)
}
response = requests.get(f"{API_URL}/retrieve", headers=HEADERS, params=params)
return response.json()
# Continuando desde el ejemplo de rastreo anterior
if status_data['status'] == 'completed':
print(f"\n¡Rastreo completado! Se recuperaron {status_data['pages_count']} páginas.")
pages_response = requests.get(f'{API_URL}/crawls/{crawl_id}/pages', headers=HEADERS)
pages_data = pages_response.json()
# Crear directorio de salida si no existe
os.makedirs("output", exist_ok=True)
# Preparar para recopilar contenido markdown
markdown_pages = []
total_pages = len(pages_data['pages'])
# Procesar páginas en paralelo para obtener contenido markdown
with ThreadPoolExecutor(max_workers=10) as executor:
# Crear futuros para la recuperación de contenido
future_to_page = {
executor.submit(retrieve_content, page['retrieve_id'], ["markdown"]): page
for page in pages_data['pages']
}
# Procesar resultados a medida que se completan
for i, future in enumerate(as_completed(future_to_page), 1):
page = future_to_page[future]
url = page['url']
print(f"Procesando {i}/{total_pages}: {url}")
try:
content_data = future.result()
if content_data and "markdown_content" in content_data:
markdown_pages.append({
'url': url,
'title': page['title'],
'markdown_content': content_data['markdown_content']
})
print(f"✓ Contenido markdown recuperado para {url}")
else:
print(f"⚠ No hay contenido markdown para {url}")
except Exception as e:
print(f"❌ Error al recuperar contenido para {url}: {str(e)}")
# Guardar todo el contenido markdown en un solo archivo
output_file = "output/stripe_blog_markdown.md"
with open(output_file, "w", encoding="utf-8") as f:
for page in markdown_pages:
# Escribir encabezado de página con título y URL
f.write(f"URL: {page['url']}\n\n")
# Escribir el contenido markdown
f.write(f"{page['markdown_content']}\n\n")
# Añadir separador entre páginas
f.write("---\n\n")
print(f"✓ Contenido markdown añadido desde {page['url']}")
print(f"\n✅ ¡Proceso completo! Todo el contenido markdown ha sido guardado en '{output_file}'")
print(f"Total de páginas procesadas: {len(markdown_pages)}")
else:
print(f"Rastreo fallido con estado: {status_data['status']}")