File size: 2,824 Bytes
82970de
3aa3b77
 
82970de
 
 
 
 
 
7dc09d2
82970de
3aa3b77
82970de
7dc09d2
 
3aa3b77
82970de
3aa3b77
82970de
7dc09d2
82970de
3aa3b77
 
 
 
 
82970de
3aa3b77
7dc09d2
684d20b
 
 
3aa3b77
684d20b
3aa3b77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
684d20b
82970de
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
45
46
47
48
49
50
51
52
53
54
---
title: Hybrid Command Runner
emoji: 🚀
colorFrom: indigo
colorTo: blue
sdk: docker
pinned: false
---

# API для выполнения команд

Это API позволяет удаленно выполнять консольные команды. Поддерживается два режима, но основной — это **умный стриминг**.

---

## Режим 1: "Умный" стриминг (рекомендуемый)

Этот эндпоинт — ваш основной инструмент. Он автоматически определяет лучший способ выполнения команды.

**Эндпоинт:** `POST /api/run/stream`

### Использование с FFmpeg (Надежный режим)

Если вы вызываете `ffmpeg`, API автоматически сохранит ваш файл на сервере, выполнит команду и вернет вам готовый результат. **Запрос будет длиться ровно столько, сколько идет конвертация.**

**Пример `curl` для конвертации видео:**
```bash
# Эта команда теперь будет работать через /api/run/stream
curl -X POST 'https://<your-space-url>/api/run/stream' \
-F 'command=ffmpeg' \
-F 'args=["-i", "{INPUT_FILE}", "-vcodec", "libx264", "-acodec", "aac", "{OUTPUT_FILE}"]' \
-F 'file=@"/path/to/your/video.mov"' \
--output "converted_video.mp4"

Использование с другими командами (Режим реального стриминга)
Для команд вроде magick (ImageMagick) API работает в режиме реального времени, обрабатывая данные "на лету".
Пример curl для обработки изображения:
curl -X POST 'https://<your-space-url>/api/run/stream' \
-F 'file=@/path/to/your/image.jpg' \
-F 'command=magick' \
-F 'args=["-", "-resize", "50%", "jpg:-"]' \
--output "resized_image.jpg"

Режим 2: Асинхронные задачи (для UI или очень долгих операций)
Этот режим полезен, если вы создаете UI и не хотите, чтобы запрос "висел", или если конвертация занимает очень много времени (например, часы).
Шаг 1: Создание задачи (POST /api/task/create)
Мгновенно получаете ID задачи.
Шаг 2: Проверка статуса (GET /api/task/status/:taskId)
Периодически проверяете, как дела.
Шаг 3: Скачивание (GET /api/download/:fileId)
Когда задача готова, скачиваете результат.