Kapitel 13/Tutorial.md aktualisiert
This commit is contained in:
@@ -557,61 +557,61 @@ In diesem Schritt erstellen wir den eigentlichen Workflow in **n8n**. Er sorgt d
|
|||||||
Nun befüllst du sie mit:
|
Nun befüllst du sie mit:
|
||||||
```bash
|
```bash
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
ENV_FILE="/etc/clipper/clipper.env"
|
ENV_FILE="/etc/clipper/clipper.env"
|
||||||
[[ -r "$ENV_FILE" ]] || { echo "ENV nicht lesbar: $ENV_FILE" >&2; exit 1; }
|
[[ -r "$ENV_FILE" ]] || { echo "ENV nicht lesbar: $ENV_FILE" >&2; exit 1; }
|
||||||
source "$ENV_FILE"
|
source "$ENV_FILE"
|
||||||
|
|
||||||
ID="${1:?need VOD id}"
|
ID="${1:?need VOD id}"
|
||||||
URL="${2:-https://www.twitch.tv/videos/${ID}}"
|
URL="${2:-https://www.twitch.tv/videos/${ID}}"
|
||||||
|
|
||||||
TMP="${CLIPPER_TMP:-/srv/clipper/temp}"
|
TMP="${CLIPPER_TMP:-/srv/clipper/temp}"
|
||||||
OUT_BASE="${CLIPPER_OUT:-/srv/clipper/out}/${ID}"
|
OUT_BASE="${CLIPPER_OUT:-/srv/clipper/out}/${ID}"
|
||||||
LOGDIR="${CLIPPER_LOG:-/srv/clipper/logs}/${ID}"
|
LOGDIR="${CLIPPER_LOG:-/srv/clipper/logs}/${ID}"
|
||||||
FILE="${TMP}/${ID}.mp4"
|
FILE="${TMP}/${ID}.mp4"
|
||||||
TEMP="${TMP}/${ID}.temp.mp4"
|
TEMP="${TMP}/${ID}.temp.mp4"
|
||||||
PART="${TMP}/${ID}.mp4.part"
|
PART="${TMP}/${ID}.mp4.part"
|
||||||
LOCK="${TMP}/${ID}.lock"
|
LOCK="${TMP}/${ID}.lock"
|
||||||
|
|
||||||
mkdir -p "$TMP" "$LOGDIR" "$OUT_BASE"
|
mkdir -p "$TMP" "$LOGDIR" "$OUT_BASE"
|
||||||
LOG="${LOGDIR}/download.log"
|
LOG="${LOGDIR}/download.log"
|
||||||
log(){ printf '[%(%F %T)T] %s\n' -1 "$*" ; }
|
log(){ printf '[%(%F %T)T] %s\n' -1 "$*" ; }
|
||||||
exec > >(tee -a "$LOG") 2>&1
|
exec > >(tee -a "$LOG") 2>&1
|
||||||
|
|
||||||
exec 9>"$LOCK"
|
exec 9>"$LOCK"
|
||||||
if ! flock -n 9; then
|
if ! flock -n 9; then
|
||||||
log "LOCK: $ID wird bereits verarbeitet"
|
log "LOCK: $ID wird bereits verarbeitet"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
trap 'flock -u 9; rm -f "$LOCK"' EXIT
|
trap 'flock -u 9; rm -f "$LOCK"' EXIT
|
||||||
|
|
||||||
log "=== START: VOD ${ID} ==="
|
log "=== START: VOD ${ID} ==="
|
||||||
log "URL: ${URL}"
|
log "URL: ${URL}"
|
||||||
log "TMP: ${TMP}"
|
log "TMP: ${TMP}"
|
||||||
|
|
||||||
if [[ -s "$TEMP" && ! -s "$FILE" ]]; then
|
if [[ -s "$TEMP" && ! -s "$FILE" ]]; then
|
||||||
log "RESUME: $TEMP -> $FILE"
|
log "RESUME: $TEMP -> $FILE"
|
||||||
mv -f "$TEMP" "$FILE"
|
mv -f "$TEMP" "$FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
OUT="${TMP}/${ID}.%(ext)s"
|
OUT="${TMP}/${ID}.%(ext)s"
|
||||||
yt-dlp -q --no-progress --retries 20 --fragment-retries 50 --retry-sleep 5 \
|
yt-dlp -q --no-progress --retries 20 --fragment-retries 50 --retry-sleep 5 \
|
||||||
--socket-timeout 30 --hls-prefer-ffmpeg --remux-video mp4 -o "$OUT" "$URL"
|
--socket-timeout 30 --hls-prefer-ffmpeg --remux-video mp4 -o "$OUT" "$URL"
|
||||||
|
|
||||||
[[ -s "$FILE" ]] || { [[ -s "$TEMP" ]] && mv -f "$TEMP" "$FILE"; }
|
[[ -s "$FILE" ]] || { [[ -s "$TEMP" ]] && mv -f "$TEMP" "$FILE"; }
|
||||||
|
|
||||||
if [[ ! -s "$FILE" ]]; then
|
if [[ ! -s "$FILE" ]]; then
|
||||||
log "ERROR: Download fehlgeschlagen ($FILE fehlt/leer)"
|
log "ERROR: Download fehlgeschlagen ($FILE fehlt/leer)"
|
||||||
exit 10
|
exit 10
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FINAL_DIR="${OUT_BASE}/original"
|
FINAL_DIR="${OUT_BASE}/original"
|
||||||
mkdir -p "$FINAL_DIR"
|
mkdir -p "$FINAL_DIR"
|
||||||
mv -f "$FILE" "$FINAL_DIR/${ID}.mp4"
|
mv -f "$FILE" "$FINAL_DIR/${ID}.mp4"
|
||||||
log "MOVE: ${FILE} -> ${FINAL_DIR}/${ID}.mp4"
|
log "MOVE: ${FILE} -> ${FINAL_DIR}/${ID}.mp4"
|
||||||
|
|
||||||
log "=== DONE: VOD ${ID} erfolgreich geladen ==="
|
log "=== DONE: VOD ${ID} erfolgreich geladen ==="
|
||||||
|
|
||||||
```
|
```
|
||||||
Mit diesem Skript laden wir die aktuellen VODs herunter, laden sie in die Nextcloud für die weitere Verabeitung und räumen wieder auf. Zusätzlich erzeugen wir logs in `<clipper-ordner>/logs/<ID>.log`.
|
Mit diesem Skript laden wir die aktuellen VODs herunter, laden sie in die Nextcloud für die weitere Verabeitung und räumen wieder auf. Zusätzlich erzeugen wir logs in `<clipper-ordner>/logs/<ID>.log`.
|
||||||
|
|||||||
Reference in New Issue
Block a user