diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..2ba986f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "name": "Launch Chrome against localhost", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}" + } + ] +} \ No newline at end of file diff --git a/markers.js b/markers.js index 3f28bb3..ea5a3f4 100644 --- a/markers.js +++ b/markers.js @@ -1,91 +1,14 @@ -// === CONFIG === -const WIKI_API = 'https://wiki.arenos.danielnagel.at/api.php'; // dein Wiki-Host (mit index.php) -const CATEGORY_TITLE = 'Kategorie:Orte'; // Hauptkategorie -const MAX_PAGES = 500; // genug Luft +const url = "https://data.arenos.danielnagel.at/api/docs/rp78Zashtzfe7mgFSbeMkd"; +const apiKey = "77fc2fdb0b54a27e4da954a077a670e67f45b203"; -// Hilfsfunktion: MediaWiki API-URL bauen -function apiURL(params) { - const u = new URL(WIKI_API); - u.search = new URLSearchParams({ ...params, format: 'json', origin: '*' }).toString(); - return u.toString(); -} - -// 1) Alle Mitglieder einer Kategorie holen -async function fetchCategoryMembers(categoryTitle) { - const url = apiURL({ - action: 'query', - list: 'categorymembers', - cmtitle: categoryTitle, - cmlimit: String(MAX_PAGES) - }); - const res = await fetch(url); - if (!res.ok) throw new Error(`categorymembers failed: ${res.status}`); - const data = await res.json(); - return data?.query?.categorymembers || []; -} - -// 2) Gerendertes HTML einer Seite holen (damit
drin ist) -async function fetchPageHTML(title) { - const url = apiURL({ - action: 'parse', - page: title, - prop: 'text' - }); - const res = await fetch(url); - if (!res.ok) throw new Error(`parse failed for ${title}: ${res.status}`); - const data = await res.json(); - const html = data?.parse?.text?.['*'] || ''; - const div = document.createElement('div'); - div.innerHTML = html; - return div; -} - -// 3) Daten aus dem versteckten Div extrahieren -function extractPlaceData(container) { - const node = container.querySelector('.place-data'); - if (!node) return null; - const name = node.getAttribute('data-name') || ''; - const xStr = node.getAttribute('data-x') || ''; - const yStr = node.getAttribute('data-y') || ''; - const desc = node.getAttribute('data-description') || ''; - const link = node.getAttribute('data-link') || ''; - const x = parseFloat(xStr); - const y = parseFloat(yStr); - if (Number.isNaN(x) || Number.isNaN(y)) return null; - return { name, x, y, desc, link }; -} - -// 4) Marker laden + hinzufügen -async function loadWikiMarkers(map) { - try { - const pages = await fetchCategoryMembers(CATEGORY_TITLE); - - // Optionales Bounding, falls du später auto-fit willst - const layers = []; - for (const p of pages) { - try { - const html = await fetchPageHTML(p.title); - const d = extractPlaceData(html); - if (!d) continue; - - // Leaflet: Bei CRS.Simple = [y, x] - const m = L.marker([d.y, d.x]).addTo(map); - const wikiLink = d.link || `https://wiki.arenos.danielnagel.at/index.php/${encodeURIComponent(p.title)}`; - const popup = ` - ${d.name || p.title}
- ${d.desc ? `${d.desc}
` : ''} - Open in Wiki - `; - m.bindPopup(popup); - layers.push(m); - - } catch (e) { - console.warn('skip page due to parse error:', p.title, e); - } +async function main() { + const response = await fetch(url, { + headers: { + "Authorization": `Bearer ${apiKey}` } - - } catch (e) { - console.error('Failed to load wiki markers:', e); - } + }); + const json = await response.json(); + console.log(json); } +main(); \ No newline at end of file