Python библиотека для работы с API Zvuk.com (СберЗвук)
Project description
Zvuk Music API
Python библиотека для работы с API музыкального сервиса Zvuk.com (СберЗвук).
Установка
pip install zvuk-music
С поддержкой async:
pip install zvuk-music[async]
С ускоренным JSON парсингом:
pip install zvuk-music[fast]
Быстрый старт
Анонимный доступ
from zvuk_music import Client
# Получение анонимного токена (ограниченный функционал)
token = Client.get_anonymous_token()
client = Client(token=token)
# Поиск
results = client.quick_search("Metallica")
for track in results.tracks[:5]:
print(f"{track.title} - {track.get_artists_str()}")
Авторизованный доступ
Для полного функционала (high quality, лайки, плейлисты) необходим токен авторизованного пользователя:
- Войдите на zvuk.com в браузере
- Откройте https://zvuk.com/api/tiny/profile
- Скопируйте значение поля
token
from zvuk_music import Client
client = Client(token="ваш_токен")
# Получение информации об артисте
artist = client.get_artist(754367, with_popular_tracks=True)
print(f"{artist.title}")
for track in artist.popular_tracks[:5]:
print(f" - {track.title}")
Примеры использования
Поиск
# Быстрый поиск (для автокомплита)
quick = client.quick_search("Nothing Else Matters", limit=5)
# Полнотекстовый поиск
search = client.search("Metallica", limit=10)
print(f"Найдено треков: {search.tracks.page.total}")
print(f"Найдено артистов: {search.artists.page.total}")
Треки
# Получение трека
track = client.get_track(5896627)
print(f"{track.title} ({track.get_duration_str()})")
# Получение URL для стриминга
from zvuk_music import Quality
url = client.get_stream_url(track.id, quality=Quality.HIGH)
print(f"Stream URL: {url}")
# Скачивание трека
track.download("metallica_nothing_else_matters.mp3", quality=Quality.MID)
Плейлисты
# Создание плейлиста
playlist_id = client.create_playlist("Мой плейлист", track_ids=["5896627", "5896628"])
# Добавление треков
client.add_tracks_to_playlist(playlist_id, ["5896629", "5896630"])
# Получение плейлиста
playlist = client.get_playlist(playlist_id)
for track in playlist.tracks:
print(f" - {track.title}")
# Удаление плейлиста
client.delete_playlist(playlist_id)
Коллекция (лайки)
# Лайкнуть трек
client.like_track(5896627)
# Получить лайкнутые треки
from zvuk_music import OrderBy, OrderDirection
liked = client.get_liked_tracks(
order_by=OrderBy.DATE_ADDED,
direction=OrderDirection.DESC
)
for track in liked[:10]:
print(f"{track.title} - {track.get_artists_str()}")
# Убрать лайк
client.unlike_track(5896627)
Артисты и релизы
# Информация об артисте
artist = client.get_artist(
754367, # Metallica
with_releases=True,
with_popular_tracks=True,
with_related_artists=True,
)
print(f"Артист: {artist.title}")
print(f"Релизов: {len(artist.releases)}")
print(f"Популярные треки: {len(artist.popular_tracks)}")
# Получение релиза
release = client.get_release(artist.releases[0].id)
print(f"\nАльбом: {release.title} ({release.get_year()})")
for track in release.tracks:
print(f" {track.position}. {track.title}")
Качество аудио
| Качество | Битрейт | Требует подписку |
|---|---|---|
Quality.MID |
128kbps MP3 | Нет |
Quality.HIGH |
320kbps MP3 | Да |
Quality.FLAC |
FLAC | Да |
from zvuk_music import Quality, SubscriptionRequiredError
try:
url = client.get_stream_url(track_id, quality=Quality.HIGH)
except SubscriptionRequiredError:
# Fallback на mid качество
url = client.get_stream_url(track_id, quality=Quality.MID)
Обработка ошибок
from zvuk_music import (
ZvukMusicError,
UnauthorizedError,
NotFoundError,
BotDetectedError,
SubscriptionRequiredError,
)
try:
track = client.get_track(123456789)
except NotFoundError:
print("Трек не найден")
except UnauthorizedError:
print("Невалидный токен")
except BotDetectedError:
print("API заблокировал запрос (бот-защита)")
except ZvukMusicError as e:
print(f"Ошибка: {e}")
API Reference
Client
Основные методы:
| Метод | Описание |
|---|---|
get_anonymous_token() |
Получить анонимный токен |
get_profile() |
Профиль пользователя |
quick_search(query) |
Быстрый поиск |
search(query) |
Полнотекстовый поиск |
get_track(id) |
Получить трек |
get_tracks(ids) |
Получить треки |
get_stream_url(id, quality) |
URL для стриминга |
get_artist(id) |
Получить артиста |
get_release(id) |
Получить релиз |
get_playlist(id) |
Получить плейлист |
create_playlist(name) |
Создать плейлист |
like_track(id) |
Лайкнуть трек |
get_liked_tracks() |
Лайкнутые треки |
Лицензия
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zvuk_music-0.1.2.tar.gz.
File metadata
- Download URL: zvuk_music-0.1.2.tar.gz
- Upload date:
- Size: 41.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca422f878cc70dff710a24ba03d597cb533a8f74a57f40ab83d625182f090612
|
|
| MD5 |
30018371e083363ba37900c5ad890250
|
|
| BLAKE2b-256 |
b00b02fb226502f2a9e01f1ba2303c2f40ba4add7065df93046f056cd1d209b8
|
Provenance
The following attestation bundles were made for zvuk_music-0.1.2.tar.gz:
Publisher:
publish.yml on trudenboy/zvuk-music
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zvuk_music-0.1.2.tar.gz -
Subject digest:
ca422f878cc70dff710a24ba03d597cb533a8f74a57f40ab83d625182f090612 - Sigstore transparency entry: 872262887
- Sigstore integration time:
-
Permalink:
trudenboy/zvuk-music@0a76fd52b8451bdcf9644992ac25f46f29d9ae7a -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/trudenboy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0a76fd52b8451bdcf9644992ac25f46f29d9ae7a -
Trigger Event:
release
-
Statement type:
File details
Details for the file zvuk_music-0.1.2-py3-none-any.whl.
File metadata
- Download URL: zvuk_music-0.1.2-py3-none-any.whl
- Upload date:
- Size: 70.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2499bddcdcba3fba16ee0e0c939a659c21e58a9461cbf32f2c7ccd61a4469b7
|
|
| MD5 |
bb4e035f613d57f3153bcbc240786cd6
|
|
| BLAKE2b-256 |
4c7da6146b9bb19cdef8c628147b65ea1330411204f96a006fe66fb4fadf72d4
|
Provenance
The following attestation bundles were made for zvuk_music-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on trudenboy/zvuk-music
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zvuk_music-0.1.2-py3-none-any.whl -
Subject digest:
f2499bddcdcba3fba16ee0e0c939a659c21e58a9461cbf32f2c7ccd61a4469b7 - Sigstore transparency entry: 872262889
- Sigstore integration time:
-
Permalink:
trudenboy/zvuk-music@0a76fd52b8451bdcf9644992ac25f46f29d9ae7a -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/trudenboy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0a76fd52b8451bdcf9644992ac25f46f29d9ae7a -
Trigger Event:
release
-
Statement type: