File size: 1,080 Bytes
0236599
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/env bash
set -Eeuo pipefail
JOBDIR="$1"
LAUNCHER="$2"
TASK="$3"
PROMPT="$4"
RESOLUTION="$5"
FRAMES="$6"
STEPS="$7"
SEED="$8"
IMAGE="${9:-}"

status(){
  python3 - "$JOBDIR/status.json" "$1" "$2" "${3:-}" <<'PY'
import json, sys, time
from pathlib import Path
p=Path(sys.argv[1])
data={"status":sys.argv[2],"message":sys.argv[3],"updated_at":time.time()}
if len(sys.argv)>4 and sys.argv[4]:
    data["video"]=sys.argv[4]
p.write_text(json.dumps(data,ensure_ascii=False,indent=2),encoding="utf-8")
PY
}

status running "generation started"
OUT="$JOBDIR/worker.log"
set +e
if [[ "$TASK" == "t2v" ]]; then
  "$LAUNCHER" t2v "$PROMPT" "$RESOLUTION" "$FRAMES" "$STEPS" "$SEED" "" "" >"$OUT" 2>&1
else
  "$LAUNCHER" i2v "$PROMPT" "$RESOLUTION" "$FRAMES" "$STEPS" "$SEED" "$IMAGE" "" >"$OUT" 2>&1
fi
RC=$?
set -e

if [[ "$RC" -ne 0 ]]; then
  status failed "launcher rc=$RC"
  exit "$RC"
fi

VIDEO="$(sed -n 's/^VIDEO=//p' "$OUT" | tail -n1)"
[[ -f "$VIDEO" ]] || { status failed "launcher passed but video missing"; exit 90; }
status completed "generation completed" "$VIDEO"