From 942a3348c75552dda04d1c429a088e9019441d32 Mon Sep 17 00:00:00 2001 From: Thomas Dannenberg Date: Thu, 28 Aug 2025 17:46:46 +0000 Subject: [PATCH] Kapitel 13/Tutorial.md aktualisiert --- Kapitel 13/Tutorial.md | 63 +++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 37 deletions(-) diff --git a/Kapitel 13/Tutorial.md b/Kapitel 13/Tutorial.md index d26aa2e..668049f 100644 --- a/Kapitel 13/Tutorial.md +++ b/Kapitel 13/Tutorial.md @@ -373,67 +373,56 @@ Im Ergebnis findest du im Feld `data[0].id` deine **User-ID** (z. B. `123456789` {"file_exists":true,"non_empty":false,"vods":[]} {"file_exists":true,"non_empty":true,"vods":["123456789","987654321"]} ``` +5. Set Node – Felder übernehmen -5. **Set Node – Felder übernehmen** - Direkt nach dem SSH Node fügen wir einen **Edit Fields (Set)** Node ein. - Damit parsen wir das JSON aus `stdout` in echte Felder, die wir später leicht in IF- oder anderen Nodes verwenden können. +Direkt nach dem SSH Node einen Edit Fields (Set) Node einfügen. +Damit parsen wir das JSON aus stdout in echte Felder. - **Felder (Expressions):** +Felder (Expressions): - * `file_exists` → `={{ JSON.parse($json.stdout).file_exists }}` - * `non_empty` → `={{ JSON.parse($json.stdout).non_empty }}` - * `vods` → `={{ JSON.parse($json.stdout).vods }}` +file_exists → ={{ JSON.parse($json.stdout).file_exists }} -```md -## Schritt 3: Workflow bauen (n8n-Weboberfläche) +non_empty → ={{ JSON.parse($json.stdout).non_empty }} -1. **Cron-Trigger:** alle 10 Minuten -2. **HTTP Request (Get Videos):** -``` +vods → ={{ JSON.parse($json.stdout).vods }} -[https://api.twitch.tv/helix/videos?user\_id=](https://api.twitch.tv/helix/videos?user_id=)\\&type=archive\&first=1 +6. State ermitteln (Set-Node – EIN Feld) -### 6. State ermitteln (Set-Node – EIN Feld) +Wir bewerten nur den Dateistatus. vodId aus Twitch wird erst später benötigt, wenn die Datei existiert und nicht leer ist. -Wir bewerten **nur den Dateistatus**. `vodId` aus Twitch wird erst später benötigt, wenn die Datei existiert **und** nicht leer ist. - -**Feld:** `state` -**Expression:** - -```js +Feld: state +Expression: +```json {{ $json.file_exists === false ? 'CREATE_AND_DOWNLOAD' : ($json.non_empty === false ? 'APPEND_AND_DOWNLOAD' : 'NEED_CHECK') }} ``` +7. Switch-Node – drei klare Wege ---- +Switch → Property Name: ={{ $json.state }} -### 7. Switch-Node – drei klare Wege +Cases: -**Switch → Property Name:** `={{ $json.state }}` +CREATE_AND_DOWNLOAD → Datei anlegen und VOD sofort downloaden. -**Cases:** +APPEND_AND_DOWNLOAD → Datei ist leer → VOD-ID direkt eintragen und downloaden. -* **CREATE\_AND\_DOWNLOAD** → Datei anlegen **und** VOD sofort downloaden. -* **APPEND\_AND\_DOWNLOAD** → Datei ist leer → VOD-ID direkt eintragen und downloaden. -* **NEED\_CHECK** → Datei existiert und ist nicht leer → hier prüfen, ob die aktuelle VOD-ID schon enthalten ist. +NEED_CHECK → Datei existiert und ist nicht leer → hier prüfen, ob die aktuelle VOD-ID schon enthalten ist. ---- +Branch NEED_CHECK -### Branch `NEED_CHECK` +Set (kurz) -1. **Set (kurz)** +currentVod → ={{ $json.vodId ?? $json.data[0].id }} - * `currentVod` → `={{ $json.vodId ?? $json.data[0].id }}` - * `contains_vod` → `={{ Array.isArray($json.vods) && $json.vods.includes($json.currentVod) }}` +contains_vod → ={{ Array.isArray($json.vods) && $json.vods.includes($json.currentVod) }} -2. **IF Node (einmalig in diesem Branch)** +IF Node (einmalig in diesem Branch) - * **Bedingung:** `={{ $json.contains_vod === true }}` - - * **True:** Pfad beenden (VOD bereits verarbeitet) - * **False:** Download & Analyse starten, danach ID anhängen +Bedingung: ={{ $json.contains_vod === true }} +True: Pfad beenden (VOD bereits verarbeitet) +False: Download & Analyse starten, danach ID anhängen \ No newline at end of file