Skip to content

2Xsave/trsave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧵 trsave_core

Rust-библиотека и CLI для скачивания видео и фото из Threads

CI License: MIT Rust pyo3

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

  • Загрузка видео (MP4) и фото-каруселей по публичной ссылке на пост
  • Парсинг метаданных через JSON-блоки в <script> тегах страницы
  • Нормализация URL: обработка \/, \uXXXX и percent-encoding
  • Ротация User-Agent, поддержка прокси и cookies
  • Повторные попытки с джиттером и управление таймаутами
  • Python-биндинги через pyo3/maturin

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

# Скачать пост по ссылке
cargo run --release -- https://www.threads.net/@username/post/ABC123

# Указать корневую папку для сохранения
cargo run --release -- https://www.threads.net/@username/post/ABC123 --output-root ./downloads

Аргументы CLI:

Аргумент Описание
url Ссылка на пост Threads
--output Путь для сохранения конкретного файла
--output-root Корневая папка для сохранения ассетов
--config Путь к файлу конфигурации
--skip-check Пропустить проверку URL перед загрузкой

🦀 Rust API

use trsave_core::{execute_download, DownloadRequest};

let request = DownloadRequest {
    url: "https://www.threads.net/@username/post/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?;
println!("Скачано: {:?}", outcome.assets);

🐍 Python API

from trsave_core import download_as_files, download_as_binary

# Скачать в файлы на диск
files = download_as_files(url="https://www.threads.net/@username/post/ABC123")

# Скачать в память (binary)
binary = download_as_binary(url="https://www.threads.net/@username/post/ABC123")
for asset in binary.assets:
    print(asset.filename, len(asset.content))

⚙️ Конфигурация

Создайте файл threads_config.json:

{
  "cookies": {
    "sessionid": "your_session_id"
  },
  "proxies": [],
  "max_retries": 3,
  "retry_backoff": 1.25,
  "request_timeout": 15.0,
  "accept_language": "ru-RU,ru;q=0.9"
}

Или используйте переменные окружения:

Переменная Описание
THREADS_CONFIG_PATH Путь к файлу конфигурации
TRSAVE_COOKIES_JSON Cookies в виде JSON-строки
TRSAVE_COOKIE Cookies в формате key=value;key2=value2
TRSAVE_PROXIES Список прокси через запятую
TRSAVE_MAX_RETRIES Максимальное количество повторных попыток
TRSAVE_RETRY_BACKOFF Задержка между повторами (секунды)
TRSAVE_REQUEST_TIMEOUT Таймаут запроса (секунды)
TRSAVE_ACCEPT_LANGUAGE Значение заголовка Accept-Language

📄 Лицензия

MIT — см. LICENSE.

About

Threads media downloader core — Rust async library and CLI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages