Добавлен коллбек для обработки новых полей.
このコミットが含まれているのは:
コミット
e330c35573
|
@ -33,12 +33,16 @@ class YandexMusicObject:
|
|||
def __getitem__(self, item):
|
||||
return self.__dict__[item]
|
||||
|
||||
@staticmethod
|
||||
def report_new_fields_callback(obj, new_fields):
|
||||
logger.warning(f'Found unknown fields received from API! Please copy warn message '
|
||||
f'and send to {new_issue_by_template_url} (github issue), thank you!')
|
||||
logger.warning(f'Type: {type(obj)}; kwargs: {new_fields}')
|
||||
|
||||
@staticmethod
|
||||
def handle_unknown_kwargs(obj, **kwargs):
|
||||
if kwargs and obj.client.report_new_fields:
|
||||
logger.warning(f'Found unknown fields received from API! Please copy warn message '
|
||||
f'and send to {new_issue_by_template_url} (github issue), thank you!')
|
||||
logger.warning(f'Type: {type(obj)}; kwargs: {kwargs}')
|
||||
obj.client.report_new_fields_callback(obj, kwargs)
|
||||
|
||||
@classmethod
|
||||
def de_json(cls, data: dict, client: Optional['Client']) -> Optional[dict]:
|
||||
|
|
|
@ -48,6 +48,8 @@ class Client(YandexMusicObject):
|
|||
При `fetch_account_status = False` многие сокращения перестанут работать в связи с тем, что неоткуда будет взять
|
||||
uid аккаунта для отправки запроса. Так же в большинстве методов придётся передавать `uid` явно.
|
||||
|
||||
Для отключения предупреждений о новых полях установите `report_new_fields` в `False`.
|
||||
|
||||
Attributes:
|
||||
logger (:obj:`logging.Logger`): Объект логгера.
|
||||
token (:obj:`str`): Уникальный ключ для аутентификации.
|
||||
|
@ -55,6 +57,8 @@ class Client(YandexMusicObject):
|
|||
oauth_url (:obj:`str`): Ссылка на OAuth Yandex Music.
|
||||
me (:obj:`yandex_music.Status`): Информация об аккаунте.
|
||||
report_new_fields (:obj:`bool`): Включены ли сообщения о новых полях от API, которых нет в библиотеке.
|
||||
report_new_fields_callback (:obj:`function`): Функция обратного вызова для обработки новых полей.
|
||||
Принимает объект, в котором нет поля и kwargs с неизвестными полями.
|
||||
|
||||
Args:
|
||||
token (:obj:`str`, optional): Уникальный ключ для аутентификации.
|
||||
|
@ -64,10 +68,13 @@ class Client(YandexMusicObject):
|
|||
request (:obj:`yandex_music.utils.request.Request`, optional): Пре-инициализация
|
||||
:class:`yandex_music.utils.request.Request`.
|
||||
report_new_fields (:obj:`bool`, optional): Включить сообщения о новых полях от API, которых нет в библиотеке.
|
||||
report_new_fields_callback (:obj:`function`, optional): Функция обратного вызова для обработки новых полей.
|
||||
Принимает объект, в котором нет поля и kwargs с неизвестными полями.
|
||||
"""
|
||||
|
||||
def __init__(self, token: str = None, fetch_account_status: bool = True, base_url: str = None,
|
||||
oauth_url: str = None, request: Request = None, report_new_fields=True) -> None:
|
||||
oauth_url: str = None, request: Request = None,
|
||||
report_new_fields=True, report_new_fields_callback: Callable[[object, dict], None] = None) -> None:
|
||||
self.logger = logging.getLogger(__name__)
|
||||
self.token = token
|
||||
|
||||
|
@ -81,6 +88,9 @@ class Client(YandexMusicObject):
|
|||
|
||||
self.report_new_fields = report_new_fields
|
||||
|
||||
if report_new_fields_callback is not None:
|
||||
self.report_new_fields_callback = report_new_fields_callback
|
||||
|
||||
if request:
|
||||
self._request = request
|
||||
self._request.set_and_return_client(self)
|
||||
|
|
読み込み中…
新しいイシューから参照