Workflow

Aus casis kochbuch

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]]