コミット
6db8f8562b
|
@ -227,8 +227,6 @@ class Client(YandexMusicObject):
|
||||||
if not data:
|
if not data:
|
||||||
data = {param: str(value)}
|
data = {param: str(value)}
|
||||||
|
|
||||||
# TODO (MarshalX) значения в data типа bool должны быть приведены к str при работе с async клиентом.
|
|
||||||
|
|
||||||
result = self._request.post(url, data=data, *args, **kwargs)
|
result = self._request.post(url, data=data, *args, **kwargs)
|
||||||
|
|
||||||
return UserSettings.de_json(result, self)
|
return UserSettings.de_json(result, self)
|
||||||
|
@ -366,7 +364,8 @@ class Client(YandexMusicObject):
|
||||||
url = f'{self.base_url}/landing3'
|
url = f'{self.base_url}/landing3'
|
||||||
|
|
||||||
result = self._request.get(url, {'blocks': blocks, 'eitherUserId': '10254713668400548221'}, *args, **kwargs)
|
result = self._request.get(url, {'blocks': blocks, 'eitherUserId': '10254713668400548221'}, *args, **kwargs)
|
||||||
# TODO что тут делает константа с моим User ID
|
# TODO (MarshalX) что тут делает константа с чьим-то User ID
|
||||||
|
# https://github.com/MarshalX/yandex-music-api/issues/553
|
||||||
|
|
||||||
return Landing.de_json(result, self)
|
return Landing.de_json(result, self)
|
||||||
|
|
||||||
|
@ -1146,6 +1145,7 @@ class Client(YandexMusicObject):
|
||||||
url = f'{self.base_url}/rotor/stations/list'
|
url = f'{self.base_url}/rotor/stations/list'
|
||||||
|
|
||||||
# TODO (MarshalX) почему тут константный 'ru' когда есть поддержка выбора языка клиентом
|
# TODO (MarshalX) почему тут константный 'ru' когда есть поддержка выбора языка клиентом
|
||||||
|
# https://github.com/MarshalX/yandex-music-api/issues/554
|
||||||
|
|
||||||
result = self._request.get(url, {'language': language}, *args, **kwargs)
|
result = self._request.get(url, {'language': language}, *args, **kwargs)
|
||||||
|
|
||||||
|
@ -1358,7 +1358,7 @@ class Client(YandexMusicObject):
|
||||||
station: str,
|
station: str,
|
||||||
mood_energy: str,
|
mood_energy: str,
|
||||||
diversity: str,
|
diversity: str,
|
||||||
language: str = 'not-russian', # TODO (MarshalX) почему не any
|
language: str = 'not-russian', # TODO (MarshalX) почему не any https://github.com/MarshalX/yandex-music-api/issues/555
|
||||||
type_: str = 'rotor',
|
type_: str = 'rotor',
|
||||||
*args,
|
*args,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
|
@ -1689,7 +1689,8 @@ class Client(YandexMusicObject):
|
||||||
Raises:
|
Raises:
|
||||||
:class:`yandex_music.exceptions.YandexMusicError`: Базовое исключение библиотеки.
|
:class:`yandex_music.exceptions.YandexMusicError`: Базовое исключение библиотеки.
|
||||||
"""
|
"""
|
||||||
# TODO (Marshal) что за True. Переделать на named argument
|
# TODO (MarshalX) что за True. Переделать на named argument
|
||||||
|
# https://github.com/MarshalX/yandex-music-api/issues/550
|
||||||
return self._like_action('artist', artist_ids, True, user_id, *args, **kwargs)
|
return self._like_action('artist', artist_ids, True, user_id, *args, **kwargs)
|
||||||
|
|
||||||
@log
|
@log
|
||||||
|
@ -2261,6 +2262,7 @@ class Client(YandexMusicObject):
|
||||||
result = self._request.get(url, params=params, *args, **kwargs)
|
result = self._request.get(url, params=params, *args, **kwargs)
|
||||||
|
|
||||||
# TODO (MarshalX) судя по всему ручка ещё возвращает рекламу после треков для пользователей без подписки.
|
# TODO (MarshalX) судя по всему ручка ещё возвращает рекламу после треков для пользователей без подписки.
|
||||||
|
# https://github.com/MarshalX/yandex-music-api/issues/557
|
||||||
return ShotEvent.de_json(result.get('shot_event'), self)
|
return ShotEvent.de_json(result.get('shot_event'), self)
|
||||||
|
|
||||||
@log
|
@log
|
||||||
|
|
|
@ -231,8 +231,6 @@ class ClientAsync(YandexMusicObject):
|
||||||
if not data:
|
if not data:
|
||||||
data = {param: str(value)}
|
data = {param: str(value)}
|
||||||
|
|
||||||
# TODO (MarshalX) значения в data типа bool должны быть приведены к str при работе с async клиентом.
|
|
||||||
|
|
||||||
result = await self._request.post(url, data=data, *args, **kwargs)
|
result = await self._request.post(url, data=data, *args, **kwargs)
|
||||||
|
|
||||||
return UserSettings.de_json(result, self)
|
return UserSettings.de_json(result, self)
|
||||||
|
@ -372,7 +370,8 @@ class ClientAsync(YandexMusicObject):
|
||||||
result = await self._request.get(
|
result = await self._request.get(
|
||||||
url, {'blocks': blocks, 'eitherUserId': '10254713668400548221'}, *args, **kwargs
|
url, {'blocks': blocks, 'eitherUserId': '10254713668400548221'}, *args, **kwargs
|
||||||
)
|
)
|
||||||
# TODO что тут делает константа с моим User ID
|
# TODO (MarshalX) что тут делает константа с чьим-то User ID
|
||||||
|
# https://github.com/MarshalX/yandex-music-api/issues/553
|
||||||
|
|
||||||
return Landing.de_json(result, self)
|
return Landing.de_json(result, self)
|
||||||
|
|
||||||
|
@ -1156,6 +1155,7 @@ class ClientAsync(YandexMusicObject):
|
||||||
url = f'{self.base_url}/rotor/stations/list'
|
url = f'{self.base_url}/rotor/stations/list'
|
||||||
|
|
||||||
# TODO (MarshalX) почему тут константный 'ru' когда есть поддержка выбора языка клиентом
|
# TODO (MarshalX) почему тут константный 'ru' когда есть поддержка выбора языка клиентом
|
||||||
|
# https://github.com/MarshalX/yandex-music-api/issues/554
|
||||||
|
|
||||||
result = await self._request.get(url, {'language': language}, *args, **kwargs)
|
result = await self._request.get(url, {'language': language}, *args, **kwargs)
|
||||||
|
|
||||||
|
@ -1368,7 +1368,7 @@ class ClientAsync(YandexMusicObject):
|
||||||
station: str,
|
station: str,
|
||||||
mood_energy: str,
|
mood_energy: str,
|
||||||
diversity: str,
|
diversity: str,
|
||||||
language: str = 'not-russian', # TODO (MarshalX) почему не any
|
language: str = 'not-russian', # TODO (MarshalX) почему не any https://github.com/MarshalX/yandex-music-api/issues/555
|
||||||
type_: str = 'rotor',
|
type_: str = 'rotor',
|
||||||
*args,
|
*args,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
|
@ -1699,7 +1699,8 @@ class ClientAsync(YandexMusicObject):
|
||||||
Raises:
|
Raises:
|
||||||
:class:`yandex_music.exceptions.YandexMusicError`: Базовое исключение библиотеки.
|
:class:`yandex_music.exceptions.YandexMusicError`: Базовое исключение библиотеки.
|
||||||
"""
|
"""
|
||||||
# TODO (Marshal) что за True. Переделать на named argument
|
# TODO (MarshalX) что за True. Переделать на named argument
|
||||||
|
# https://github.com/MarshalX/yandex-music-api/issues/550
|
||||||
return await self._like_action('artist', artist_ids, True, user_id, *args, **kwargs)
|
return await self._like_action('artist', artist_ids, True, user_id, *args, **kwargs)
|
||||||
|
|
||||||
@log
|
@log
|
||||||
|
@ -2277,6 +2278,7 @@ class ClientAsync(YandexMusicObject):
|
||||||
result = await self._request.get(url, params=params, *args, **kwargs)
|
result = await self._request.get(url, params=params, *args, **kwargs)
|
||||||
|
|
||||||
# TODO (MarshalX) судя по всему ручка ещё возвращает рекламу после треков для пользователей без подписки.
|
# TODO (MarshalX) судя по всему ручка ещё возвращает рекламу после треков для пользователей без подписки.
|
||||||
|
# https://github.com/MarshalX/yandex-music-api/issues/557
|
||||||
return ShotEvent.de_json(result.get('shot_event'), self)
|
return ShotEvent.de_json(result.get('shot_event'), self)
|
||||||
|
|
||||||
@log
|
@log
|
||||||
|
|
|
@ -9,6 +9,7 @@ class UnauthorizedError(YandexMusicError):
|
||||||
|
|
||||||
|
|
||||||
# TODO (MarshalX) На самом деле поиск еще происходит по кодеку
|
# TODO (MarshalX) На самом деле поиск еще происходит по кодеку
|
||||||
|
# https://github.com/MarshalX/yandex-music-api/issues/552
|
||||||
class InvalidBitrateError(YandexMusicError):
|
class InvalidBitrateError(YandexMusicError):
|
||||||
"""Класс исключения, вызываемого при попытке загрузки трека
|
"""Класс исключения, вызываемого при попытке загрузки трека
|
||||||
с недоступным битрейтом.
|
с недоступным битрейтом.
|
||||||
|
|
|
@ -48,7 +48,7 @@ class CaseForms(YandexMusicObject):
|
||||||
client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
|
client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
:obj:`yandex_music.CaseForms`: TODO.
|
:obj:`yandex_music.CaseForms`: Склонение имени.
|
||||||
"""
|
"""
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
|
@ -49,3 +49,4 @@ class Tag(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
# TODO (MarshalX) add download_og_image shortcut?
|
# TODO (MarshalX) add download_og_image shortcut?
|
||||||
|
# https://github.com/MarshalX/yandex-music-api/issues/556
|
||||||
|
|
|
@ -47,3 +47,4 @@ class TagResult(YandexMusicObject):
|
||||||
return cls(client=client, **data)
|
return cls(client=client, **data)
|
||||||
|
|
||||||
# TODO (MarshalX) add fetch_playlists shortcut?
|
# TODO (MarshalX) add fetch_playlists shortcut?
|
||||||
|
# https://github.com/MarshalX/yandex-music-api/issues/551
|
||||||
|
|
|
@ -75,14 +75,18 @@ class Difference:
|
||||||
Returns:
|
Returns:
|
||||||
:obj:`yandex_music.utils.difference.Difference`: Набор операций над плейлистом.
|
:obj:`yandex_music.utils.difference.Difference`: Набор операций над плейлистом.
|
||||||
"""
|
"""
|
||||||
# TODO принимать TrackId, а так же строку и сплитить её по ":". При отсутствии album_id кидать исключение.
|
# TODO (MarshalX) принимать TrackId, а так же строку и сплитить её по ":".
|
||||||
|
# При отсутствии album_id кидать исключение.
|
||||||
|
# https://github.com/MarshalX/yandex-music-api/issues/558
|
||||||
if not isinstance(tracks, list):
|
if not isinstance(tracks, list):
|
||||||
tracks = [tracks]
|
tracks = [tracks]
|
||||||
|
|
||||||
operation = {'op': Operation.INSERT.value, 'at': at, 'tracks': []}
|
operation = {'op': Operation.INSERT.value, 'at': at, 'tracks': []}
|
||||||
|
|
||||||
for track in tracks:
|
for track in tracks:
|
||||||
track = type('TrackId', (), track) # TODO replace to normal TrackId object
|
# TODO (MarshalX) replace to normal TrackId object
|
||||||
|
# https://github.com/MarshalX/yandex-music-api/issues/558
|
||||||
|
track = type('TrackId', (), track)
|
||||||
|
|
||||||
operation['tracks'].append({'id': track.id, 'albumId': track.album_id})
|
operation['tracks'].append({'id': track.id, 'albumId': track.album_id})
|
||||||
|
|
||||||
|
|
読み込み中…
新しいイシューから参照