Kapitel 13/Tutorial.md aktualisiert

This commit is contained in:
2025-08-28 17:46:46 +00:00
parent c70210c46b
commit 942a3348c7

View File

@@ -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=)\<DEINE\_TWITCH\_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