refactor: concentrate playback transition ownership
This commit is contained in:
@@ -42,11 +42,30 @@ def main():
|
||||
metadata = root / "info.json"
|
||||
metadata.write_text(json.dumps(info))
|
||||
wrapper = root / "yt-dlp"
|
||||
wrapper.write_text("#!/bin/bash\nset -eu\nargs=(\"$@\")\nexec " + shlex.quote(extractor)
|
||||
control = root / "control"
|
||||
control.mkdir()
|
||||
wrapper.write_text("#!/bin/bash\nset -eu\nargs=(\"$@\")\n"
|
||||
+ "control=" + shlex.quote(str(control)) + "\n"
|
||||
+ 'if [[ "$*" == *"[height=1080]"* ]]; then\n'
|
||||
+ ' if [[ -f "$control/fail-1080" ]]; then\n'
|
||||
+ ' echo "Fixture extraction deliberately failed" >&2; exit 1\n'
|
||||
+ ' fi\n'
|
||||
+ ' if [[ -f "$control/gate-1080" ]]; then\n'
|
||||
+ " " + shlex.quote(extractor) + " --load-info-json " + shlex.quote(str(metadata))
|
||||
+ ' "${args[@]:0:${#args[@]}-2}" > "$control/output-1080.json"\n'
|
||||
+ ' trap \': > "$control/finished-1080"; exit 0\' TERM\n'
|
||||
+ ' : > "$control/entered-1080"\n'
|
||||
+ ' while [[ ! -f "$control/release-1080" ]]; do sleep 0.01; done\n'
|
||||
+ ' cat "$control/output-1080.json" || true\n'
|
||||
+ ' : > "$control/finished-1080"\n'
|
||||
+ ' exit 0\n'
|
||||
+ ' fi\n'
|
||||
+ 'fi\nexec ' + shlex.quote(extractor)
|
||||
+ " --load-info-json " + shlex.quote(str(metadata))
|
||||
+ ' "${args[@]:0:${#args[@]}-2}"\n')
|
||||
wrapper.chmod(0o755)
|
||||
environment = dict(os.environ, PATH=str(root) + os.pathsep + os.environ.get("PATH", ""))
|
||||
environment = dict(os.environ, PATH=str(root) + os.pathsep + os.environ.get("PATH", ""),
|
||||
TEREBI_QUALITY_CONTROL=str(control))
|
||||
try:
|
||||
result = subprocess.run([str(args.binary.resolve())], env=environment, timeout=90, check=False)
|
||||
except subprocess.TimeoutExpired:
|
||||
|
||||
Reference in New Issue
Block a user