import requests
import time
import json
from datetime import datetime
import os
from concurrent.futures import ThreadPoolExecutor, as_completed
# Configuration
API_URL = 'https://api.olostep.com/v1'
API_KEY = '<your_olostep_api_key>'
HEADERS = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {API_KEY}'
}
# Fonction pour récupérer le contenu au format 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()
# Continuation de l'exemple d'exploration précédent
if status_data['status'] == 'completed':
print(f"\nExploration terminée ! {status_data['pages_count']} pages récupérées.")
pages_response = requests.get(f'{API_URL}/crawls/{crawl_id}/pages', headers=HEADERS)
pages_data = pages_response.json()
# Créer le répertoire de sortie s'il n'existe pas
os.makedirs("output", exist_ok=True)
# Préparer la collecte du contenu markdown
markdown_pages = []
total_pages = len(pages_data['pages'])
# Traiter les pages en parallèle pour obtenir le contenu markdown
with ThreadPoolExecutor(max_workers=10) as executor:
# Créer des futures pour la récupération de contenu
future_to_page = {
executor.submit(retrieve_content, page['retrieve_id'], ["markdown"]): page
for page in pages_data['pages']
}
# Traiter les résultats au fur et à mesure qu'ils se terminent
for i, future in enumerate(as_completed(future_to_page), 1):
page = future_to_page[future]
url = page['url']
print(f"Traitement {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"✓ Contenu markdown récupéré pour {url}")
else:
print(f"⚠ Pas de contenu markdown pour {url}")
except Exception as e:
print(f"❌ Erreur lors de la récupération du contenu pour {url} : {str(e)}")
# Enregistrer tout le contenu markdown dans un seul fichier
output_file = "output/stripe_blog_markdown.md"
with open(output_file, "w", encoding="utf-8") as f:
for page in markdown_pages:
# Écrire l'en-tête de la page avec le titre et l'URL
f.write(f"URL : {page['url']}\n\n")
# Écrire le contenu markdown
f.write(f"{page['markdown_content']}\n\n")
# Ajouter un séparateur entre les pages
f.write("---\n\n")
print(f"✓ Contenu markdown ajouté depuis {page['url']}")
print(f"\n✅ Processus terminé ! Tout le contenu markdown a été enregistré dans '{output_file}'")
print(f"Nombre total de pages traitées : {len(markdown_pages)}")
else:
print(f"Exploration échouée avec le statut : {status_data['status']}")