import requests
import time
import json
from datetime import datetime
import os
from concurrent.futures import ThreadPoolExecutor, as_completed
# Configuratie
API_URL = 'https://api.olostep.com/v1'
API_KEY = '<your_olostep_api_key>'
HEADERS = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {API_KEY}'
}
# Functie om inhoud op te halen in markdown-formaat
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()
# Voortzetting van het vorige crawlvoorbeeld
if status_data['status'] == 'completed':
print(f"\nCrawl voltooid! {status_data['pages_count']} pagina's opgehaald.")
pages_response = requests.get(f'{API_URL}/crawls/{crawl_id}/pages', headers=HEADERS)
pages_data = pages_response.json()
# Maak uitvoermap aan als deze niet bestaat
os.makedirs("output", exist_ok=True)
# Voorbereiden om markdown-inhoud te verzamelen
markdown_pages = []
total_pages = len(pages_data['pages'])
# Pagina's parallel verwerken om markdown-inhoud te krijgen
with ThreadPoolExecutor(max_workers=10) as executor:
# Futures maken voor inhoudsophaling
future_to_page = {
executor.submit(retrieve_content, page['retrieve_id'], ["markdown"]): page
for page in pages_data['pages']
}
# Resultaten verwerken zodra ze voltooid zijn
for i, future in enumerate(as_completed(future_to_page), 1):
page = future_to_page[future]
url = page['url']
print(f"Verwerken {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"✓ Markdown-inhoud opgehaald voor {url}")
else:
print(f"⚠ Geen markdown-inhoud voor {url}")
except Exception as e:
print(f"❌ Fout bij ophalen inhoud voor {url}: {str(e)}")
# Alle markdown-inhoud opslaan in één bestand
output_file = "output/stripe_blog_markdown.md"
with open(output_file, "w", encoding="utf-8") as f:
for page in markdown_pages:
# Paginakop schrijven met titel en URL
f.write(f"URL: {page['url']}\n\n")
# De markdown-inhoud schrijven
f.write(f"{page['markdown_content']}\n\n")
# Scheidingsteken tussen pagina's toevoegen
f.write("---\n\n")
print(f"✓ Markdown-inhoud toegevoegd van {page['url']}")
print(f"\n✅ Proces voltooid! Alle markdown-inhoud is opgeslagen in '{output_file}'")
print(f"Totaal aantal verwerkte pagina's: {len(markdown_pages)}")
else:
print(f"Crawl mislukt met status: {status_data['status']}")