Kapitel 13/Tutorial.md aktualisiert
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user