Список изменений
Версия 3.0.0
18.04.2026
Массовое расширение покрытия API, OAuth Device Flow, переход на миксины
Переломные изменения
Прекращена поддержка
Python 3.7.Асинхронные зависимости (
aiohttp,aiofiles) вынесены в опциональный экстра — теперь устанавливаются черезpip install yandex-music[async]. Синхронный клиент работает без них.Модель
Labelперемещена из подпакетаyandex_music.albumв новый подпакетyandex_music.labelи расширена полямиdescription,description_formatted,image,links,type. Публичный импортfrom yandex_music import Labelпродолжает работать; сломаются только прямые импорты из подмодуляyandex_music.album.label.
Крупные изменения
Добавлена поддержка
Python 3.13иPython 3.14.Поддержка OAuth Device Flow для получения токена:
Новый миксин
DeviceAuthMixinс методамиrequest_device_code,poll_device_tokenи блокирующим хелперомdevice_auth(callback для показа кода,poll_interval,timeout,should_cancel).Новые модели
DeviceCodeиOAuthToken, исключениеDeviceAuthError.Новый пример
examples/device_auth.py(sync + async), переписанная страница документации по получению токена.
Массовое расширение покрытия API. Добавлено более 70 новых методов клиента и около 90 новых моделей в следующих доменных группах:
Альбомы:
albums_with_tracks(перенесён),albums_disclaimer,albums_similar_entities,albums_trailer.Артисты:
artists_similar,artists_links,artists_also_albums,artists_discography_albums,artists_safe_direct_albums,artists_track_ids,artists_about,artists_clips,artists_donation,artists_info,artists_skeleton,artists_trailer,artists_disclaimer. Новые наиболее значимые модели:ArtistAbout,ArtistInfo,ArtistSimilar,ArtistLinks,ArtistDonations,ArtistClips,ArtistTrailer,ArtistSkeleton,ArtistConcerts.Треки:
tracks_credits,tracks_disclaimer,tracks_trailer,tracks_full_info. Новые модели:Credit,Credits,Disclaimer,ForeignAgent,TrackTrailer,TrackFullInfo,Fade,SmartPreviewParams.Плейлисты:
playlist,playlist_similar_entities,playlists,playlists_personal,users_playlists_description,users_playlists_trailer,users_playlists_kinds. Новые модели:PlaylistTrailer,PlaylistSimilarEntities,PlaylistAvailability,PlaylistsList.Клипы (новая сущность):
clips,clips_will_like,clips_credits,clips_disclaimer. Новые модели:Clip,ClipsWillLike.Концерты:
concert_info,concert_skeleton,concerts_feed,concerts_locations,concerts_tab_config,artists_concerts. Новые модели:Concert,ConcertInfo,ConcertFeed,ConcertLocations,ConcertTabConfig,ConcertSkeletonи ещё около десятка связанных.Лейблы (новая группа):
label,label_albums,label_artists. Новые модели:LabelAlbums,LabelArtists,AlbumActionButton.Метатеги (новая группа, подборки лендинга):
metatags,metatag,metatag_albums,metatag_artists,metatag_playlists. Около 10 новых моделей в подпакетеyandex_music.metatag.История прослушивания (новая группа):
music_history,music_history_items. Новые модели:MusicHistory,MusicHistoryTab,MusicHistoryGroup,MusicHistoryItemи другие.Предсохранения альбомов (новая группа):
users_presaves,users_presaves_add,users_presaves_remove. Новая модельPresaves.Закреплённые элементы (новая группа):
pins,pin_album,unpin_album,pin_artist,unpin_artist,pin_playlist,unpin_playlist,pin_wave,unpin_wave. Новые модели:Pin,PinData,PinsList.Лайки и дизлайки:
users_dislikes_artists,users_dislikes_artists_add,users_dislikes_artists_remove,users_likes_clips,users_likes_clips_add,users_likes_clips_remove. Все 20 маршрутов лайков/дизлайков теперь покрыты.Аккаунт:
account_experiments_details. Новые модели:ExperimentsDetails,ExperimentDetail,ExperimentDetailValue.Прочее:
ContentRestrictions,CoverDerivedColors,Wave,WaveAgent, а также скелетоны страниц (общие модели вyandex_music.skeleton).В существующие модели (
Track,Album,Artist,Playlist,Cover,Clip,Concertи др.) добавлены десятки новых полей.
Поддержка
orjsonкак опциональной заменыujsonи стандартногоjsonдля ускорения сериализации/десериализации.RequestиRequestAsyncтеперь поддерживают HTTP-методыPUTиDELETE.Добавлена статистика прослушиваний исполнителя за месяц.
Ведение проекта
Монолитный
client_async.pyразбит на миксины в_client_async/, сгруппированные по доменам API (account, landing, tracks, search, playlists, radio, artists, albums, likes, queue, clips, concerts, credits, disclaimers, labels, metatags, music_history, pins, presaves, device_auth). Публичный API клиента остался прежним.Кодогенерация синхронного клиента переведена на
unasync(вместо собственного генератора). Асинхронная версия теперь первична, синхронная версия автоматически генерируется из_client_async/.Оптимизирована десериализация моделей: ленивая нормализация ключей
camelCase → snake_case, устранение лишних аллокаций,frozensetдля зарезервированных имён, удаление избыточных.copy()вcleanup_dataиto_dict.Общая логика
Requestвынесена в базовый класс.requests,aiohttpиaiofilesимпортируются лениво.Переработана документация: смена темы на
sphinxawesome_theme, интеграцияAlgolia DocSearch, добавленыsitemap.xml,OpenGraph, плоская навигация, витрина моделей с карточкамиsphinx-design, глоссарий, отдельные страницы для каждого миксина клиента, редиректы для совместимости старых URL.
Незначительные изменения и/или исправления
Исправлены
get_pageиget_page_asyncу классаSearch.Исправлен тайпхинт в классе
LandingList.Исправлен метод
de_listдля классаList.Исправлена отправка
POSTзапроса в методахrotor_station_*.Поле
idклассаArtistстало опциональным.Поле
uriклассаDescriptionстало опциональным.Исправлено форматирование документации у класса
Like.Методам
.init()уClientиClientAsyncдобавлена передача*args, **kwargs.Добавлена передача
kwargsв запросы из методов-сокращений скачивания трека.Уточнены аннотации типов в миксинах клиента (
TypeGuard,Overload, корректный типaccount_uid).Улучшены аннотации типов во всех моделях.
Версия 2.2.0
24.12.2023
Крупные изменения
Добавлена поддержка
Python 3.12(#628).Добавлен fallback до
Noneили пустого списка при данных неправильного типа (#612).
Незначительные изменения и/или исправления
Исправлен метод
fetch_lyrics_async(#627).Исправлен тип поля
items_uriв классеCover(#603).Исправлена аннотация типа
de_listи тесты на пустой список (#612).
Ведение проекта
Версия 2.1.0
23.04.2023
Переломные изменения
При работе над #547 и
#550
были удалены *args параметры, у методов класса Client, которые не имели никакого эффекта.
Передать через позиционные аргументы что-то в конечный запрос не было возможно.
Удаление данной конструкции могло затронуть код в котором ошибочно передавались лишние аргументы.
При корректном использовании библиотеки новая версия полностью совместима со старым кодом.
Крупные изменения
Добавлена поддержка Python 3.11.
В модели добавлены методы
download_bytesиdownload_bytes_async, для получения файлов в виде байтов (#539).Добавлен новый метод получения текста и синхронного текста треков (#568).
Добавлена возможность задать
timeoutпо умолчанию дляClient(#362).Использование настройки языка клиента во всех методах (#554).
Добавлено поле
preview_descriptionклассуGeneratedPlaylist.Добавлены поля
pretrial_activeиuserhashклассуStatus.Добавлено поле
had_any_subscriptionклассуSubscription.Добавлено поле
childклассуAccount.Добавлены новые поля
up_title,rup_description,custom_nameклассуStationResult.Добавлены новые модели:
CustomWave,R128,LyricsInfo.Классу
Trackдобавлены новые поля:track_source,available_for_options,r128,lyrics_info,track_sharing_flag.Классу
TrackShortдобавлены новые поля:original_index.Классу
Playlistдобавлены новые поля:custom_wave,pager.Классу
Albumдобавлены новые поля:available_for_options.Поле
cover_whiteклассаMixLinkтеперь опциональное.
Незначительные изменения и/или исправления
Добавлен генератор Camel Case псевдонимов для методов (#542).
Добавлен Makefile с сокращениями удобными при разработке библиотеки.
Добавлено отображение модуля при нахождении неизвестного поля.
Добавлена поддержка MD файлов для документации.
Добавлена страница в документацию по получению токена.
Добавлены примеры в документацию.
Переделана структура и обновлена документации.
Исправлен запуск генератора async клиента на Windows.
Исправлен метод
fetch_tracks_asyncу классаPlaylist.Исправлены type hints у декоратора
log.Исправлены type hints для
SearchResultв классеSearch.Исправлено отображение название класса в
report_unknown_fields_callback.Исправлены методы-сокращения
likeиdislikeклассаPlaylist(#516).
Версия 2.0.0
23.02.2022
Поддержка asyncio и модели на dataclasses
Переломные изменения
Убрана поддержка
Python 3.6.Удалено получение авторизационного токена по логину и паролю (метод
from_credentialsклассаClient).Удалена возможность задать свой обработчик на полученные неизвестные поля от API (аргумент
report_new_fields_callbackконструктора классаClient.Удалён аргумент
fetch_account_statusиз конструктора классаClient. Теперь необходимо вызывать методinitдля получения ID аккаунта который будет использоваться в последующих запросах. В противном случае передачаuser_idпри вызове многих методов классаClientстановится обязательной.Исключение
BadRequestпереименовано вBadRequestError.Исключение
Unauthorizedпереименовано вUnauthorizedError.Исключение
InvalidBitrateпереименовано вInvalidBitrateError.Исключение
TimedOutпереименовано вTimedOutError.Свойство
resultклассаResponseудалено. Вместо него добавлен методget_result.Свойство
errorклассаResponseудалено. Вместо него добавлен метоlget_error.В JSON представлении моделей к полям, чьё имя совпадает с именем стандартных функций, больше не добавляется нижнее подчеркивание в конец (пример:
id, а неid_;max, а неmax_). Теперь нижнее подчеркивание добавляется только к зарезервированным словам (пример:fromбудетfrom_).
Крупные изменения
Добавлена асинхронная версия клиента и всех методов-сокращений (класс
ClientAsync).Добавлено новое исключение
NotFoundError(наследникNetworkError). Будет сгенерировано при получении статус кода 404.Проект больше не использует
pipenv.Зависимости проекта больше не требуют конкретных версий.
Для генерации исходных файлов
Sphinxтеперь используетсяsphinx-apidoc.
Незначительные изменения и/или исправления
Исправлена обработка серверных ошибок которые вернулись в отличном от JSON формате.
Исправлена обработка серверных ошибок метода
searchклассаClient.Предупреждения о пришедших неизвестных полях от API отключены по умолчанию.
Используется английская локализация
Sphinx.Изменена тема документации.
Версия 1.0.0
06.02.2021
Стабильная версия библиотеки
Переломные изменения
Поле
errorклассаArtistтеперь называетсяreason.Метод
users_playlistsклассаClientтеперь возвращает один объект плейлиста, когда был передан одинkind. При передаче списка вkindвернётся список плейлистов (#318).Поле
labelsклассаAlbumтеперь может содержать список из строк, а не только список объектов классаLabel.
Крупные изменения
Добавлены примеры в папку
examples.Добавлена поддержка рекомендаций для плейлистов (#324):
Добавлен класс
PlaylistRecommendations.Добавлен метод клиента для получения рекомендаций(
users_playlists_recommendations).Добавлен метод
get_recommendationsклассуPlaylistдля
Добавлено получение чартов (#294):
Добавлены новые классы:
ChartInfo,ChartInfoMenu,ChartInfoMenuItem.Добавлен метод клиента для получения чарта (
chart).
Добавлена поддержка тегов/подборок (#192):
Добавлены новые классы:
TagResult,Tag.Добавлен новый метод клиента для получения тегов (
tags).
Добавлено присоединение к коллективному плейлисту (#317):
Добавлен новый метод клиента для присоединения(
playlists_collective_join).
Добавлена поддержка очередей прослушивания (#246):
Добавлены новые классы:
Context,Queue,QueueItem.Добавлены новые методы в
Client:queues_list,queue,queue_update_position,queue_create.Добавлены поля
track_idиfrom_в классTrackId.Добавлена возможность смены языка у клиента для ответов от API.
Добавлена десериализация любого объекта в
JSONпригодного для отправки в запросе на Яндекс API.
Добавлены следующие методы для
Client:new_releases– получение полного списка всех новых релизов.new_playlists– получение полного списка всех новый плейлистов.podcasts– получение подкаста с лендинга.
Добавлены новые сокращения в модели:
download_cover_white,download_cover_uriвMixLink.download_imageвPromotion.artists_nameвAlbumиTrack.fetch_track,track_full_idвTrackId.fetch_tracksвTracksList.insert_track,delete_tracks,deleteвPlaylist.playlist_id,fetch_playlistвPlaylistId.get_current_trackвQueue.fetch_queueвQueueItem.next_page,get_page,prev_pageвSearch.и другие…
Добавлена поддержка новых типов поиска: подкасты, выпуски, пользователи.
Добавлен callback для обработки новых полей.
Добавлена информацию по поводу запуска потока по треку, плейлисту и др.
Добавлена десериализация
decomposedуArtist(#10).Добавлен
__len__дляTracksList(#380).Добавлены
__iter__,__len__и__getitem__для классов представляющих список каких-либо объектов.Добавлено сокращение
fetch_tracksклассуPlaylistдля получения треков плейлиста.Добавлен метод
get_urlклассуIconдля получения прямой ссылки на изображение.Класс
Userрасширен для поддержки поляuser_infoизTrack(поляfull_name,display_name).Добавлены новые классы по отчётам с Telegram бота (#306, #398):
LandingList.RenewableRemainder.Alert.AlertButton.StationData.Brand.Contest.OpenGraphData.NonAutoRenewable.Operator.Deactivation.PoetryLoverMatch.Deprecation.
Добавлены новые поля классам по отчётам с Telegram бота (#306, #398):
plusвProduct.non_auto_renewable_remainderвSubscription.og_imageвArtist.meta_typeвAlbum.advertisementвStatus.bestвTrack.offer_idиartist_idsвVinyl.playlistsвBriefInfo.is_customвCover.play_count,recent,chart,trackвTrackShort.url_part,og_title,image,cover_without_text,background_color,text_color,id_for_from,similar_playlists,last_owner_playlistsвPlaylist.bg_colorвChart.errorвArtist.substituted,matched_track,can_publish,state,desired_visibility,filename,user_info,meta_dataвTrack.copyright_name,copyright_clineвCover.directвDownloadInfo.cheapest,title,family_sub,fb_image,fb_name,family,intro_period_duration,intro_price,start_period_duration,start_price,licence_text_partsвProduct.storage_dir,duplicatesвAlbum.subscribedвArtistEvent.descriptionвGeneratedPlaylist.genreвEvent.show_in_regionsвGenre.cover_uriвMixLink.og_description,top_artistвPlaylist.full_image_url,mts_full_image_urlвStation.coauthorsиrecent_tracksвPlaylist.regionsвUser.users,podcasts,podcast_episodes,type_,page,per_pageвSearch.short_description,description,is_premiere,is_bannerвLike.master_infoвAutoRenewable.station_dataиbar_belowвStatus.family_auto_renewableвSubscription.misspell_resultиmisspell_originalвSearch.experimentв классStatus.operatorиnon_auto_renewableвSubscription.text_color,short_description,description,is_premiereиis_bannerвAlbum.hand_made_descriptionвArtist.metrika_idвPlaylist.og_imageвTag.urlвLyrics.number,genreвMetaData.poetry_lover_matchesвTrack.contest,dummy_description,dummy_page_description,dummy_cover,dummy_rollover_cover,og_data,brandingвPlaylist.available_as_rbt,lyrics_available,remember_position,albums,duration_ms,explicit,start_date,likes_count,deprecationвAlbum.lyricist,version,composerвMetaData.last_releasesвBriefInfo.playlist_uuidвPlaylist.sync_queue_enabledвUserSettings.background_video_uri,short_description,is_suitable_for_childrenвTrack(#376).meta_type,likes_countвAlbum(#386).deprecationвAlbum.available_regionsвAlbum.type,readyвPlaylist.descriptionвSupplement.
Незначительные изменения и/или исправления
Добавлена опциональность следующим полям:
Исправлена десериализация подкастов, эпизодов подкастов и пользователей в лучшем результате поиска.
Исправлена десериализация альбомов. В зависимости от запроса содержимое лейблов может быть списком объектом или списком строк (в поиске).
Исправлен выбор настроек радио.
Исправлены ошибки в документации.
Протестирована работа на Python 3.9.
Версия 0.1.1
25.03.2020
Закончено документирование всех классов и основных методов!
Переломные изменения
Классы отметок “мне нравится” для альбомов, плейлистов и исполнителей обобщены. Теперь представлены одним классом.
Удаленные классы:
ArtistsLikes.AlbumsLikes.PlaylistsLikes.
Новый класс:
Like(полеtypeдля определения содержимого).
Изменено название пакета с
statusнаaccount(#195).Исправлено выбрасываемое исключение при таймауте:
Прошлое исключение:
TimeoutError(built-in).Новое исключение:
TimedOut(yandex_music.exceptions).
Удалены следующие файлы:
requirements.txt,requirements-dev.txt,requirements-docs.txt.
Крупные изменения
Добавлено обнаружение новых полей с просьбой сообщить о них (#216).
Добавлена проверка на неизвестные поля.
Добавлен вывод отладочной информации в виде warning’a.
Добавлен шаблон issue для отправки логов.
Добавлено поле
typeдля классаSearchResultдля определения типа результата поиска по объекту.Добавлены настройки пользователя (#195):
Добавлен класс
UserSettings.Добавлен метод для получения своих настроек (
account_settings).Добавлен метод для получения настроек другого пользователя (
users_settings).Добавлен метод для изменения настроек (
account_settings_set).
Добавлен возможность получить похожие треки (#197):
Добавлен класс
TracksSimilarс полями трека и списка похожих треков.Добавлен метод для получения похожих треков (
tracks_similar).
Добавлены шоты от Алисы (#185):
Добавлен метод
after_trackв классClientдля получения контента для воспроизведения после трека (реклама, шот).Добавлены методы для загрузки обложки и аудиоверсии шота.
Добавлены новые классы:
ShotShotDataShotEventShotType
Добавлен метод для изменения видимости плейлиста (#179).
Добавлена поддержка Яндекс.Радио (#20):
Исправлена отправка фидбека.
Написана инструкция по использованию (в доке к методу).
Добавлен аргумент для перехода по цепочке треков.
Добавлен метод для изменения настроек станции.
Незначительные изменения и/или исправления
Убрано дублирование информации в документации (#247).
Добавлены новые поля в класс
Track:version,remember_position(#238).Добавлено исключение
InvalidBitrateпри попытке загрузить недопустимый трек по критериям (кодек, битрейт).Исправлено получение прямой ссылки на файл с кодеком AAC (#237, #25).
Исправлено получение плейлиста с Алисой в лендинге (#185).
Исправлено название поля с ссылкой на источник в классе
Description(сurlнаuri).Исправлена десериализация несуществующего исполнителя.
Добавлено поле
versionв классAlbum(#178).Поле
pictureклассаVinylтеперь опциональное.Поле
weekклассаRatingsтеперь опциональное.Поле
product_idклассаAutoRenewableтеперь опциональное (#182).Правки замечаний по codacy.
Версия 0.0.16
29.12.2019
Переломные изменения
Поле
accountпереименовано вmeи теперь содержит объектStatus, вместоAccount(#162).Убрано использование зарезервированных имён в аргументах конструкторов (теперь они с
_на конце). Имена с нижними подчёркиваниями есть как при сериализации так и при десериализации (#168).
Крупные изменения
Добавлены аннотации типов во всей библиотеке!
Незначительные изменения и/или исправления
Добавлен аргумент
fetch_account_statusдля опциональности получения информации об аккаунте при инициализации клиента (#162).Добавлены тесты c передачей пустого словаря в
de_jsonиde_list(#174).Использование
ujsonпри наличии, обновлены зависимости (#161).Добавлен в зависимости для разработки
importlib_metadataдля поддержки старых версий (в новой версииpytestего больше не используют, в угодуimportlib.metadata#pytest-5537)) (#161).Добавлен в зависимости для разработки
atomicwrites, который используетсяpytestтеперь только наWindows- #pytest-6148 (#161).Исправлен баг с передачей
timeoutаргумента в аргументparamsв следующих методах:artists,albums,playlists_list(#120).Исправлена инициализация клиента при помощи логина и пароля с использованием прокси (#159).
Исправлен баг в загрузке обложки альбома.
Версия 0.0.15
01.12.2019
Переломные изменения
У классов
Artist,TrackиPlaylistизменился перечень полей для генерации хеша.
Крупные изменения
Добавлена возможность выполнять запросы через прокси-сервер для использовании библиотеки на зарубежных серверах (#139).
Добавлен пример использования в
README.
Добавлена обработка капчи при авторизации с возможностью использования callback-функции для её обработки (#140):
Новые исключения:
Captcha:
CaptchaRequired.
CaptchaWrong.
Новые классы:
CaptchaResponse.
Новые примеры в
README:Пример обработки с использованием callback-функции.
Пример полностью своей обработки капчи.
Добавлена документация для класса
Search(#83).Добавлена возможность получения всех альбомов исполнителя (#141):
Новые классы:
ArtistAlbums.
Новые методы:
artists_direct_albumsуClient.get_albumsуArtist.
Добавлена обработка несуществующего плейлиста (#147):
Новые классы:
PlaylistAbsence.
Незначительные изменения и/или исправления
Версия 0.0.14
10.11.2019
Переломные изменения
Практически у всех классов был обновлён список полей участвующих при сравнении объектов.
Если в атрибутах для сравнения объектов присутствуют списки, то они будут преобразованы к frozenset.
Убрано конвертирование даты из строки в объект. Теперь все даты представлены строками в ISO формате.
Классы
AlbumSearchResult,ArtistSearchResult,PlaylistSearchResult,TrackSearchResult,VideoSearchResultбыли объединены в один –SearchResult.
Крупные изменения
Добавлен метод получения треков исполнителя (#123).
Добавлены классы-обёртки над пагинацией (
Pager) и списка треков артиста (ArtistsTracks).Добавлено 554 unit-теста для всех классов-обёрток над объектами API.
Добавлен codecov и workflows для GitHub Actions.
Незначительные изменения и/или исправления
Поле
cover_uriклассаAlbumтеперь опциональное.Поле
regionу классаAccountтеперь не обязательное.Исправлен баг в
.to_dict()методе, связанный с десериализацией объектов списков и словарей.Исправлен баг в
.to_dict()методе, связанный с не рекурсивной десериализацией.Исправлена десериализация
similar_artistsвBriefInfo.Исправлен баг с десериализацией
artistв классеArtistEvent.Исправлен баг десериализации списка альбомов и артистов у класса
Track(#122).Исправлена загрузка обложки у трека.
Исправлены сравнения объектов.