Skip to content

2Xsave/ttsave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎵 ttsave_core

Rust-библиотека и CLI для скачивания видео, фото-каруселей и аудио из TikTok

CI License: MIT Crate

✨ Возможности

  • Скачивание видео (MP4) и фото-каруселей по публичной ссылке
  • Опциональная загрузка аудиодорожки (MP3)
  • Парсинг метаданных через SIGI_STATE / __UNIVERSAL_DATA_FOR_REHYDRATION__
  • Ротация User-Agent, поддержка прокси и cookies
  • Повторные попытки с джиттером и управление таймаутами
  • Python-биндинги через pyo3/maturin

🚀 Быстрый старт (CLI)

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 Путь для аудиофайла

🦀 Rust API

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 API

Сборка 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.

About

TikTok media downloader core — Rust async library and CLI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages