- Скачивание треков в MP3 по публичной ссылке
- Извлечение метаданных через
window.__sc_hydration - Поддержка progressive streams (прямое скачивание MP3)
- Повторные попытки с джиттером и управление таймаутами
- Python-биндинги через pyo3/maturin
cargo run --release -- https://soundcloud.com/artist/track-nameПолный пример с указанием директории:
cargo run --release -- \
https://soundcloud.com/artist/track-name \
--output-root downloads| Аргумент | Описание |
|---|---|
url |
Публичная ссылка на трек (обязателен) |
--output |
Желаемое имя файла или каталога |
--output-root |
Корень файлов выгрузки |
--config |
Явный путь к JSON-конфигу |
--skip-check |
Пропустить предварительную проверку |
use sksave_core::{execute_download, DownloadRequest};
let request = DownloadRequest {
url: "https://soundcloud.com/artist/track-name".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 sksave_core import download_as_files, download_as_binary
files = download_as_files(url="https://soundcloud.com/artist/track-name")
binary = download_as_binary(url="https://soundcloud.com/artist/track-name")
for asset in binary.assets:
print(asset.filename, len(asset.content))download_as_binary не создаёт файлы на диске — все данные живут в памяти. download_as_files сохраняет MP3 и metadata.json рядом с ассетами.
Настройки берутся из soundcloud_config.json (путь можно переопределить через SOUNDCLOUD_CONFIG_PATH).
Пример конфига:
{
"cookies": {},
"proxies": ["socks5://127.0.0.1:9050"],
"max_retries": 3,
"retry_backoff": 1.25,
"request_timeout": 15.0,
"output_dir": "downloads"
}| Переменная | Описание |
|---|---|
SOUNDCLOUD_CONFIG_PATH |
Путь к JSON-конфигу |
SKSAVE_COOKIES_JSON |
JSON-строка с парами cookie |
SKSAVE_COOKIE |
Простая строка "a=b; c=d" |
SKSAVE_PROXIES |
Список прокси через запятую |
SKSAVE_MAX_RETRIES |
Количество попыток повтора HTTP |
SKSAVE_RETRY_BACKOFF |
Базовая задержка между повторами (секунды) |
SKSAVE_REQUEST_TIMEOUT |
Таймаут запроса (секунды) |
SKSAVE_ACCEPT_LANGUAGE |
Значение заголовка Accept-Language |
Приоритет: переменные окружения → значения из файла → значения по умолчанию.
MIT — см. LICENSE.