diff --git a/rapport.py b/rapport.py
index 18162b3..b9eada1 100644
--- a/rapport.py
+++ b/rapport.py
@@ -2,11 +2,12 @@
"""
Adres Analyse - Rapport generator
Gebruikt PDOK voor geocoding, ORS voor isochronen/routes en PostGIS OSM-data voor voorzieningen.
-Slaat rapport ook op in Obsidian vault (map: huizenjacht).
+Slaat rapport en HTML-kaarten op in /root/mkdocs/docs/docs/Huizenjacht/
"""
import json
import sys
+import os
import urllib.request
import urllib.parse
import re
@@ -31,8 +32,7 @@ from voorzieningen import analyse_voorzieningen, format_voorzieningen_markdown
# Config
ORS_BASE = "http://192.168.1.71:9080/ors/v2"
PDOK_BASE = "https://api.pdok.nl/bzk/locatieserver/search/v3_1"
-OBSIDIAN_BASE = "http://192.168.1.50:27123"
-OBSIDIAN_TOKEN = "90ec" + "6de948dc8ef7832fda3516fd900c7a3071dd526edf852ade145aa9daf637"
+MKDOCS_DIR = "/root/mkdocs/docs/docs/Huizenjacht"
def geocode_adres(adres):
"""Geocode adres naar coördinaten via PDOK Locatieserver"""
@@ -98,28 +98,18 @@ def format_oppervlakte(m2):
else:
return f"{m2:.0f} m²"
-def schrijf_naar_obsidian(rapport_text, adres, subpath="huizenjacht", ext=".md"):
- """Schrijf rapport naar Obsidian vault"""
+def schrijf_naar_mkdocs(content, adres, ext=".md"):
+ """Schrijf content naar MkDocs docs map als bestand"""
+ os.makedirs(MKDOCS_DIR, exist_ok=True)
safe_name = re.sub(r'[^a-zA-Z0-9]+', '-', adres)
safe_name = safe_name.strip('-')
- filename = f"{subpath}/{safe_name}_{datetime.now().strftime('%Y%m%d_%H%M%S')}{ext}"
-
- content_type = "text/html" if ext == ".html" else "text/markdown"
- req = urllib.request.Request(
- f"{OBSIDIAN_BASE}/vault/{filename}",
- data=rapport_text.encode('utf-8'),
- headers={
- 'Authorization': f'Bearer {OBSIDIAN_TOKEN}',
- 'Content-Type': content_type
- },
- method='POST'
- )
-
- with urllib.request.urlopen(req, timeout=10) as resp:
- if resp.status in [200, 204]:
- return filename
- else:
- return None
+ filename = f"{safe_name}_{datetime.now().strftime('%Y%m%d_%H%M%S')}{ext}"
+ filepath = os.path.join(MKDOCS_DIR, filename)
+
+ with open(filepath, 'w', encoding='utf-8') as f:
+ f.write(content)
+
+ return filepath, filename
def genereer_isochroon_html(adres_naam, lat, lon, auto_iso, fiets_iso):
"""Genereer een zelf-contained HTML kaart met Leaflet"""
@@ -156,7 +146,7 @@ var autoLayer = L.geoJSON(autoGeojson, {{
style: {{ color: '#2563eb', weight: 2, fillColor: '#3b82f6', fillOpacity: 0.2 }},
onEachFeature: function(feature, layer) {{
var props = feature.properties;
- layer.bindPopup('Auto 20 min
Oppervlakte: ' + (props.area/1000000).toFixed(1) + ' km\u00b2
Reach factor: ' + props.reachfactor.toFixed(3));
+ layer.bindPopup('Auto 20 min
Oppervlakte: ' + (props.area/1000000).toFixed(1) + ' km\\u00b2
Reach factor: ' + props.reachfactor.toFixed(3));
}}
}}).addTo(map);
@@ -164,7 +154,7 @@ var fietsLayer = L.geoJSON(fietsGeojson, {{
style: {{ color: '#16a34a', weight: 2, fillColor: '#22c55e', fillOpacity: 0.2 }},
onEachFeature: function(feature, layer) {{
var props = feature.properties;
- layer.bindPopup('Fiets 30 min
Oppervlakte: ' + (props.area/1000000).toFixed(1) + ' km\u00b2
Reach factor: ' + props.reachfactor.toFixed(3));
+ layer.bindPopup('Fiets 30 min
Oppervlakte: ' + (props.area/1000000).toFixed(1) + ' km\\u00b2
Reach factor: ' + props.reachfactor.toFixed(3));
}}
}}).addTo(map);
@@ -196,7 +186,6 @@ def maak_isochroon_screenshot(html_content, width=1280, height=900, resize_width
return None, "Pillow niet geïnstalleerd"
import tempfile
- import os
# Write HTML to temp file
with tempfile.NamedTemporaryFile(mode='w', suffix='.html', delete=False, encoding='utf-8') as f:
@@ -231,7 +220,7 @@ def maak_isochroon_screenshot(html_content, width=1280, height=900, resize_width
return b64, None
def print_isochroon_sectie(titel, icoon, iso_data, rapport_lines=None):
- """Print isochroon sectie; optioneel ook toevoegen aan rapport_lines voor Obsidian"""
+ """Print isochroon sectie; optioneel ook toevoegen aan rapport_lines"""
text = f"{icoon} **{titel}**"
print(text)
if rapport_lines is not None:
@@ -293,15 +282,12 @@ def genereer_rapport(adres_input):
print_line(format_voorzieningen_markdown("🏫 **Scholen**", voorzieningen['scholen']))
print_line()
- # Genereer interactieve HTML kaart en upload naar Obsidian
+ # Genereer interactieve HTML kaart en sla op in MkDocs.map
html_content = genereer_isochroon_html(
locatie['adres'], locatie['lat'], locatie['lon'], auto_iso, fiets_iso
)
- html_path = schrijf_naar_obsidian(html_content, locatie['adres'], subpath="huizenjacht", ext=".html")
- if html_path:
- print_line(f"🗺️ **[Bekijk interactieve isochroon kaart]({html_path})**")
- else:
- print_line("⚠️ Kon interactieve kaart niet opslaan in Obsidian")
+ html_filepath, html_filename = schrijf_naar_mkdocs(html_content, locatie['adres'], ext=".html")
+ print_line(f"🗺️ **Interactieve kaart opgeslagen:** `{html_filepath}`")
# Genereer screenshot en embed in markdown
b64_img, err = maak_isochroon_screenshot(html_content)
@@ -313,7 +299,7 @@ def genereer_rapport(adres_input):
else:
print_line(f"⚠️ Kon geen screenshot maken: {err}")
- # Sla ook ruwe geojson op (lokaal, niet in Obsidian)
+ # Sla ook ruwe geojson op
output_file = f"/tmp/isochronen_{datetime.now().strftime('%Y%m%d_%H%M%S')}.geojson"
with open(output_file, 'w') as f:
json.dump({'auto_20_min': auto_iso, 'fiets_30_min': fiets_iso}, f)
@@ -322,13 +308,10 @@ def genereer_rapport(adres_input):
print_line("---")
print_line("_Onderdelen: geocoding, isochronen, voorzieningen_")
- # Schrijf rapport naar Obsidian
+ # Schrijf rapport naar MkDocs map
print_line()
- md_path = schrijf_naar_obsidian('\n'.join(rapport_lines), locatie['adres'])
- if md_path:
- print_line(f"📝 **Opgeslagen in Obsidian:** `{md_path}`")
- else:
- print_line("⚠️ Obsidian upload mislukt")
+ md_filepath, md_filename = schrijf_naar_mkdocs('\n'.join(rapport_lines), locatie['adres'], ext=".md")
+ print_line(f"📝 **Rapport opgeslagen:** `{md_filepath}`")
if __name__ == '__main__':
adres = sys.argv[1] if len(sys.argv) > 1 else "Griendvelden 14 Best"