Compare commits

...

8 Commits

Author SHA1 Message Date
3d1cf6bb4d Merge pull request '0.2.2' (#4) from dev into latest
All checks were successful
Build And Publish Package / publish (push) Successful in 31s
Reviewed-on: #4
2026-03-08 21:49:49 +03:00
7e4807f95a Добавлено более подробное описание ошибки
All checks were successful
Verify Dev Build / publish (push) Successful in 33s
2026-03-08 21:48:27 +03:00
de37fcb5fa Merge pull request '1.2.1' (#3) from dev into latest
All checks were successful
Build And Publish Package / publish (push) Successful in 32s
Reviewed-on: #3
2026-03-08 17:56:38 +03:00
88f6bbb7db Фикс статус кода при отсутствии модели
All checks were successful
Verify Dev Build / publish (push) Successful in 31s
2026-03-08 17:55:24 +03:00
0640ab9242 Merge pull request '0.2.0' (#2) from dev into latest
All checks were successful
Build And Publish Package / publish (push) Successful in 33s
Reviewed-on: #2
2026-03-08 10:14:35 +03:00
c7ffb2608d Добавлено 2 эндпоинта на скип текущего и возврат прошлого сонга
All checks were successful
Verify Dev Build / publish (push) Successful in 32s
2026-03-08 10:10:21 +03:00
b921cf9138 Merge pull request '0.1.1' (#1) from dev into latest
All checks were successful
Build And Publish Package / publish (push) Successful in 31s
Reviewed-on: #1
2026-03-08 08:06:46 +03:00
93644882a0 Фикс получения и обновления токенов
Some checks failed
Verify Dev Build / publish (push) Has been cancelled
2026-03-08 08:05:05 +03:00
3 changed files with 28 additions and 9 deletions

View File

@ -1,6 +1,6 @@
[project] [project]
name = "oxidespotify" name = "oxidespotify"
version = "0.1.0" version = "0.2.2"
description = "Client for Spotify API" description = "Client for Spotify API"
readme = "README.md" readme = "README.md"
authors = [{ name = "Miwory", email = "miwory.uwu@gmail.com" }] authors = [{ name = "Miwory", email = "miwory.uwu@gmail.com" }]

View File

@ -36,7 +36,9 @@ class SpotifyAPIClient(OxideHTTP):
async def _process[T: BaseModel]( async def _process[T: BaseModel](
self, req: Response | CachedResponse, schema: type[T] | None self, req: Response | CachedResponse, schema: type[T] | None
) -> T | None: ) -> T | None:
if req.status_code == 204: if req.status_code == 204 or (
req.status_code == 200 and schema is None
):
return None return None
if req.status_code >= 500: if req.status_code >= 500:
@ -128,11 +130,27 @@ class SpotifyAPIClient(OxideHTTP):
async def pause_playback(self) -> NoReturn: async def pause_playback(self) -> NoReturn:
raise NotImplementedError raise NotImplementedError
async def skip_to_next(self) -> NoReturn: async def skip_to_next(self, access_token: str, device_id: str) -> None:
raise NotImplementedError req = self.post(
'/me/player/next',
params={'device_id': device_id},
headers=self._auth(access_token),
)
async def skip_to_previous(self) -> NoReturn: req = await self._process_request(req)
raise NotImplementedError return await self._process(req, None)
async def skip_to_previous(
self, access_token: str, device_id: str
) -> None:
req = self.post(
'/me/player/previous',
params={'device_id': device_id},
headers=self._auth(access_token),
)
req = await self._process_request(req)
return await self._process(req, None)
async def seek_to_position(self) -> NoReturn: async def seek_to_position(self) -> NoReturn:
raise NotImplementedError raise NotImplementedError

View File

@ -41,14 +41,15 @@ class SpotifyAuthClient(OxideHTTP):
data = await req.json() data = await req.json()
if req.status_code >= 400: if req.status_code >= 400:
raise s.ClientError(req.status_code, data['error']['message']) err = f'{data["error"]}: {data["error_description"]}'
raise s.ClientError(req.status_code, err)
return schema.model_validate(data) return schema.model_validate(data)
async def user_access_token(self, code: str) -> s.UserAccessToken: async def user_access_token(self, code: str) -> s.UserAccessToken:
req = await self.post( req = await self.post(
'/token', '/token',
json={ form={
'grant_type': 'authorization_code', 'grant_type': 'authorization_code',
'code': code, 'code': code,
'redirect_uri': self.__redirect_uri, 'redirect_uri': self.__redirect_uri,
@ -60,7 +61,7 @@ class SpotifyAuthClient(OxideHTTP):
async def refresh_access_token(self, refresh_token: str) -> s.Token: async def refresh_access_token(self, refresh_token: str) -> s.Token:
req = await self.post( req = await self.post(
'/token', '/token',
json={ form={
'grant_type': 'refresh_token', 'grant_type': 'refresh_token',
'refresh_token': refresh_token, 'refresh_token': refresh_token,
'client_id': self.__client_id, 'client_id': self.__client_id,