Workflow
Workflow: Rezepte & Bilder einpflegen
Grunddaten
| Wiki-URL | https://kochbuch.casilor.de |
|---|---|
| Login | casilor (gespeichertes Passwort im Browser)
|
| Autor-Seite | Reinhild & Lutz |
| Bilderordner (Server) | /htdocs/casilor-de/kochbuch/images/reinhild/KATEGORIENAME/
|
| Bilderordner (Web) | https://kochbuch.casilor.de/images/reinhild/KATEGORIENAME/
|
Seitenstruktur
Reinhild & Lutz ← Hauptseite
== [[Reinhild & Lutz/1. Salat …|1. Salat …]] == ← klickbare Überschrift → Unterseite
└── [[Rezeptname]] ← eigenständige Rezeptseite
Workflow für neue Rezept-Batch
Schritt 1 – PDFs lesen
Die PDFs liegen direkt im Bilderordner auf dem Server, erreichbar über:
https://kochbuch.casilor.de/images/reinhild/KATEGORIENAME/Dateiname.pdf
→ Jedes PDF im Browser öffnen, Inhalt per Screenshot/Zoom erfassen (Titel, Zutaten, Zubereitung).
Schritt 2 – Bilder hochladen (via API)
Alle JPGs aus dem Bilderordner per JavaScript-API ins MediaWiki laden. Token holen, dann für jede Datei als Blob fetchen und hochladen:
<syntaxhighlight lang="javascript"> (async () => {
const r = await fetch('/api.php?action=query&meta=tokens&format=json');
const token = (await r.json()).query.tokens.csrftoken;
const base = '/images/reinhild/KATEGORIENAME/';
const files = [ ['Server_Dateiname_01.jpg', 'Wiki Dateiname 01.jpg'], // weitere Einträge … ];
for (const [serverName, wikiName] of files) {
const blob = await (await fetch(base + serverName)).blob();
const fd = new FormData();
fd.append('action', 'upload'); fd.append('format', 'json');
fd.append('filename', wikiName); fd.append('file', blob, serverName);
fd.append('token', token); fd.append('ignorewarnings', '1');
const res = await (await fetch('/api.php', {method:'POST', body:fd})).json();
console.log(wikiName, res.upload?.result);
}
})(); </syntaxhighlight>
Hinweis: Wiki-Dateiname = Servername mit Unterstrichen durch Leerzeichen ersetzt.
Bei 404 → alternativen Dateinamen testen (z.B. Eier_-_Thunfisch_-_... statt Eier-_Thunfisch-_...).
Schritt 3 – Unterseite für Kategorie anlegen
URL aufrufen: kochbuch.casilor.de/index.php?title=Reinhild_%26_Lutz%2FKATEGORIENAME&action=edit
Inhalt:
__NOEDITSECTION__ == Kategoriename == === [[Rezeptname 1]] === === [[Rezeptname 2]] === [[Kategorie:Reinhild & Lutz]]
Schritt 4 – Hauptseite aktualisieren
In Reinhild & Lutz die neue Kategorie als klickbare Überschrift ergänzen:
== [[Reinhild & Lutz/Kategoriename|Kategoriename]] ==
Schritt 5 – Rezeptseiten anlegen (via API)
Für jedes Rezept eine eigenständige Seite erstellen (kein Reinhild & Lutz/-Präfix!):
<syntaxhighlight lang="javascript"> (async () => {
const r = await fetch('/api.php?action=query&meta=tokens&format=json');
const token = (await r.json()).query.tokens.csrftoken;
async function createPage(title, imageWikiName, content) {
const text = `== ${title} ==\n[[Datei:${imageWikiName}|thumb|450px|right|${title}]]\n\n${content}\n\n`;
const fd = new FormData();
fd.append('action','edit'); fd.append('format','json');
fd.append('title', title); fd.append('text', text);
fd.append('token', token);
const res = await (await fetch('/api.php', {method:'POST', body:fd})).json();
console.log(title, res.edit?.result);
}
await createPage('Rezeptname', 'Wiki Dateiname 01.jpg', '=== Zutaten ===\n* ...\n\n=== Zubereitung ===\n...');
})(); </syntaxhighlight>
Schritt 6 – Cache leeren
<syntaxhighlight lang="javascript"> (async () => {
const pages = ['Rezeptname 1', 'Rezeptname 2'];
for (const title of pages) {
await fetch(`/api.php?action=purge&titles=${encodeURIComponent(title)}&format=json`, {method:'POST'});
}
})(); </syntaxhighlight>
Feste Regeln
| Regel | Richtig | Falsch |
|---|---|---|
Antipasti Salat | Reinhild & Lutz/Antipasti Salat
| ||
[[Kategorie:Reinhild & Lutz]] auf jeder Rezeptseite | fehlt
| ||
thumb|450px|right | andere Größe
| ||
== [[R & L/Kat|Kat]] == | Plain-Text-Überschrift
| ||
nicht verwenden (wiki blockiert es) | {{DISPLAYTITLE:...}}
|
Bild-Zuordnung ermitteln
Wenn ein Dateiname unklar ist → Bild direkt im Browser öffnen und visuell prüfen:
https://kochbuch.casilor.de/images/reinhild/KATEGORIENAME/Dateiname.jpg
Bei mehreren Bildern pro Rezept: erstes Bild (_01.jpg) als Hauptbild verwenden.
Rezeptseiten-Format
== Rezeptname == [[Datei:Wiki Dateiname 01.jpg|thumb|450px|right|Rezeptname]] [Portionen-Angabe falls vorhanden] === Zutaten === * Zutat 1 * Zutat 2 === Zubereitung === 1. Schritt 1 2. Schritt 2 [[Kategorie:Reinhild & Lutz]]