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