- Скачивание видео (MP4) и фото-каруселей по публичной ссылке
- Опциональная загрузка аудиодорожки (MP3)
- Парсинг метаданных через
SIGI_STATE/__UNIVERSAL_DATA_FOR_REHYDRATION__ - Ротация User-Agent, поддержка прокси и cookies
- Повторные попытки с джиттером и управление таймаутами
- Python-биндинги через pyo3/maturin
cargo run --release -- https://www.tiktok.com/@handle/video/1234567890 --download-audioПолный пример с указанием директории:
cargo run --release -- \
https://www.tiktok.com/@handle/video/1234567890 \
--output-root downloads \
--download-audio| Аргумент | Описание |
|---|---|
url |
Публичная ссылка на пост (обязателен) |
--output |
Желаемое имя файла или каталога |
--output-root |
Корень файлов выгрузки |
--config |
Явный путь к JSON-конфигу |
--skip-check |
Пропустить запрос /ttwid/check/ |
--download-audio |
Дополнительно сохранить MP3 |
--audio-output |
Путь для аудиофайла |
use ttsave_core::{execute_download, DownloadRequest};
let request = DownloadRequest {
url: "https://www.tiktok.com/@handle/video/123".to_string(),
output: None,
skip_check: false,
download_audio: false,
audio_output: None,
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 ttsave_core import download_as_files, download_as_binary, load_config
config = load_config(path="tiktok_config.json")
files = download_as_files(url="...", download_audio=True, config=config)
binary = download_as_binary(url="...")
for asset in binary.assets:
print(asset.filename, len(asset.content))download_as_binary не создаёт файлы на диске — все данные живут в памяти. download_as_files сохраняет медиа и metadata.json рядом с ассетами.
Настройки берутся из tiktok_config.json (путь можно переопределить через TIKTOK_CONFIG_PATH).
Пример конфига:
{
"cookies": { "sessionid": "xxx" },
"proxies": ["socks5://127.0.0.1:9050"],
"max_retries": 4,
"retry_backoff": 1.5,
"request_timeout": 20.0,
"output_dir": "downloads"
}| Переменная | Описание |
|---|---|
TIKTOK_CONFIG_PATH |
Путь к JSON-конфигу |
TTSAVE_COOKIES_JSON |
JSON-строка с парами cookie |
TTSAVE_COOKIE |
Простая строка "a=b; c=d" |
TTSAVE_PROXIES |
Список прокси через запятую |
TTSAVE_MAX_RETRIES |
Количество попыток повтора HTTP |
TTSAVE_RETRY_BACKOFF |
Базовая задержка между повторами (секунды) |
TTSAVE_REQUEST_TIMEOUT |
Таймаут запроса (секунды) |
TTSAVE_ACCEPT_LANGUAGE |
Значение заголовка Accept-Language |
Приоритет: переменные окружения → значения из файла → значения по умолчанию.
MIT — см. LICENSE.