Rust-библиотека для скачивания видео, фото и сохранения текстовых постов из X (Twitter)
- Загрузка видео (MP4) и фото по ссылке на пост X (Twitter)
- Поддержка текстовых постов — сохраняется
metadata.jsonс содержимым - Автоматическое получение Bearer-токена и guest-токена
- Fallback-стратегия: GraphQL API → HTML парсинг
- Ротация User-Agent, поддержка прокси и cookies
- Python-биндинги через
pyo3/maturin
use twsave_core::{execute_download, DownloadRequest};
let request = DownloadRequest {
url: "https://x.com/username/status/1234567890".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);from twsave_core import download_as_files, download_as_binary, load_config
# Загрузить конфигурацию из файла
config = load_config(path="twitter_config.json")
# Скачать в файлы на диск
files = download_as_files(url="https://x.com/username/status/1234567890", config=config)
# Скачать в память (binary)
binary = download_as_binary(url="https://x.com/username/status/1234567890")
for asset in binary.assets:
print(asset.filename, len(asset.content))Создайте файл twitter_config.json:
{
"cookies": {
"auth_token": "xxx",
"ct0": "yyy"
},
"bearer_token": "AAAAAAAAA...",
"max_retries": 3,
"retry_backoff": 1.25,
"request_timeout": 15.0,
"accept_language": "ru-RU,ru;q=0.9"
}Примечание: поле
bearer_tokenопционально. Если оно не указано, крейт автоматически извлекает токен из HTML/JS страницы при каждом запросе.
Или используйте переменные окружения:
| Переменная | Описание |
|---|---|
TWITTER_CONFIG_PATH |
Путь к файлу конфигурации |
TWSAVE_COOKIES_JSON |
Cookies в виде JSON-строки |
TWSAVE_COOKIE |
Cookies в формате key=value;key2=value2 |
TWSAVE_BEARER_TOKEN |
Bearer-токен для Twitter API |
TWSAVE_PROXIES |
Список прокси через запятую |
TWSAVE_MAX_RETRIES |
Максимальное количество повторных попыток |
TWSAVE_RETRY_BACKOFF |
Задержка между повторами (секунды) |
TWSAVE_REQUEST_TIMEOUT |
Таймаут запроса (секунды) |
TWSAVE_ACCEPT_LANGUAGE |
Значение заголовка Accept-Language |
MIT — см. LICENSE.