24.12.2023
- Добавлена поддержка Python 3.12 by @MarshalX in #628
- Добавлен fallback до
None
или пустого списка при данных неправильного типа by @MarshalX in #612 - Обновлён HTTP заголовок версии приложения by @glebliutsko in #592 and @MarshalX in #635
- Исправлен метод
fetch_lyrics_async
by @MarshalX in #627 - Исправлен тип поля
items_uri
в классеCover
by @Rirusha in #603 - Исправлена аннотация типа
de_list
и тесты на пустой список by @MarshalX in #612
Ведение проекта:
- Переезд на
ruff
иruff format
by @MarshalX in #625 and #632 - Добавлен GitHub Actions Workflow для проверки актуальности генерируемого кода by @MarshalX in #624
- Упрощены GitHub Actions Workflow by @MarshalX in #623
- Удалено использование dev ветки by @MarshalX in #622
- Улучшены аннотации типов by @MarshalX in #626
- Исправление ошибок в
README
by @json1c in #599 and @MarshalX in #629 - Обновлена структура документации by @MarshalX in #633
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).
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
. - Изменена тема документации.
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
.ya_money_id
вArtist
(#351, #370).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.
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
для получения контента для воспроизведения после трека (реклама, шот). - Добавлены методы для загрузки обложки и аудиоверсии шота.
- Добавлены новые классы:
Shot
ShotData
ShotEvent
ShotType
- Добавлен метод
- Добавлен метод для изменения видимости плейлиста (#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.
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).
- Исправлен баг в загрузке обложки альбома.
01.12.2019
Переломные изменения
- У классов
Artist
,Track
иPlaylist
изменился перечень полей для генерации хеша.
Крупные изменения
- Добавлена возможность выполнять запросы через прокси-сервер для использовании библиотеки на зарубежных серверах (#139).
- Добавлен пример использования в
README
.
- Добавлен пример использования в
- Добавлена обработка капчи при авторизации с возможностью использования callback-функции для её обработки (#140):
- Новые исключения:
- Captcha:
- CaptchaRequired.
- CaptchaWrong.
- Captcha:
- Новые классы:
- CaptchaResponse.
- Новые примеры в
README
:- Пример обработки с использованием callback-функции.
- Пример полностью своей обработки капчи.
- Новые исключения:
- Добавлена документация для класса
Search
(#83). - Добавлена возможность получения всех альбомов исполнителя (#141):
- Новые классы:
- ArtistAlbums.
- Новые методы:
artists_direct_albums
уClient
.get_albums
уArtist
.
- Новые классы:
- Добавлена обработка несуществующего плейлиста (#147):
- Новые классы:
PlaylistAbsence
.
- Новые классы:
Незначительные изменения и/или исправления
- Исправлен баг с загрузкой файлов (#149).
- Исправлен баг некорректной десериализации плейлиста при отсутствии прав на него (#147).
- Исправлен баг неправильной десериализации треков и артистов у собственных загруженных файлов (#154).
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). - Исправлена загрузка обложки у трека.
- Исправлены сравнения объектов.