Rust-библиотека и CLI для скачивания рилсов и постов Instagram (видео, фото, карусели)
- Скачивание видео из рилсов (
/reel/) и изображений из постов (/p/) - Поддержка каруселей (несколько фото в одном посте)
- Парсинг метаданных через JSON-блоки в
<script>тегах - Ротация User-Agent, поддержка прокси и cookies
- Повторные попытки с джиттером и управление таймаутами
- Python-биндинги через pyo3/maturin
cargo run --release -- https://www.instagram.com/reel/ABC123/
cargo run --release -- https://www.instagram.com/p/DEF456/ --output-root ./downloads| Аргумент | Описание |
|---|---|
url |
Публичная ссылка на рилс или пост (обязателен) |
--output |
Желаемое имя файла или каталога |
--output-root |
Корень файлов выгрузки |
--config |
Явный путь к JSON-конфигу |
--skip-check |
Пропустить предварительную проверку |
use insave_core::{execute_download, DownloadRequest};
let request = DownloadRequest {
url: "https://www.instagram.com/reel/ABC123/".to_string(),
output: None,
skip_check: false,
output_root: None,
config_path: None,
runtime_config: None,
max_size_mb: None,
};
let outcome = execute_download(request).await?;Сборка Python-модуля:
cargo build --release --features python
# либо используйте maturin для упаковки в wheel
maturin developИспользование:
from insave_core import download_as_files, download_as_binary
files = download_as_files(url="https://www.instagram.com/reel/ABC123/")
binary = download_as_binary(url="https://www.instagram.com/p/DEF456/")
for asset in binary.assets:
print(asset.filename, len(asset.content))download_as_binary не создаёт файлы на диске — все данные живут в памяти. download_as_files сохраняет медиа и metadata.json рядом с ассетами.
Настройки берутся из instagram_config.json (путь можно переопределить через INSTAGRAM_CONFIG_PATH).
Пример конфига:
{
"cookies": { "sessionid": "your_session_id" },
"proxies": ["socks5://127.0.0.1:9050"],
"max_retries": 3,
"retry_backoff": 1.25,
"request_timeout": 15.0,
"output_dir": "downloads"
}| Переменная | Описание |
|---|---|
INSTAGRAM_CONFIG_PATH |
Путь к JSON-конфигу |
INSAVE_COOKIES_JSON |
JSON-строка с парами cookie |
INSAVE_COOKIE |
Простая строка "a=b; c=d" |
INSAVE_PROXIES |
Список прокси через запятую |
INSAVE_MAX_RETRIES |
Количество попыток повтора HTTP |
INSAVE_RETRY_BACKOFF |
Базовая задержка между повторами (секунды) |
INSAVE_REQUEST_TIMEOUT |
Таймаут запроса (секунды) |
INSAVE_ACCEPT_LANGUAGE |
Значение заголовка Accept-Language |
Приоритет: переменные окружения → значения из файла → значения по умолчанию.
MIT — см. LICENSE.