Compare commits
2 Commits
fa89e49f29
...
c15db42e5b
| Author | SHA1 | Date | |
|---|---|---|---|
| c15db42e5b | |||
| 80a97758a6 |
@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "oxidespotify"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
description = "Client for Spotify API"
|
||||
readme = "README.md"
|
||||
authors = [{ name = "Miwory", email = "miwory.uwu@gmail.com" }]
|
||||
|
||||
@ -1,7 +1,13 @@
|
||||
from datetime import datetime
|
||||
from typing import Literal
|
||||
from datetime import date, datetime
|
||||
from typing import Annotated, Literal
|
||||
|
||||
from pydantic import BaseModel, HttpUrl, RootModel, field_validator
|
||||
from pydantic import (
|
||||
BaseModel,
|
||||
BeforeValidator,
|
||||
HttpUrl,
|
||||
RootModel,
|
||||
field_validator,
|
||||
)
|
||||
|
||||
|
||||
class Error(Exception):
|
||||
@ -22,6 +28,21 @@ class InternalError(Error):
|
||||
pass
|
||||
|
||||
|
||||
def normalize_spotify_date(v: str) -> str:
|
||||
parts = v.split('-')
|
||||
if len(parts) == 1:
|
||||
return f'{v}-01-01'
|
||||
if len(parts) == 2:
|
||||
return f'{v}-01'
|
||||
|
||||
return v
|
||||
|
||||
|
||||
PrecisionedReleaseDate = Annotated[
|
||||
date, BeforeValidator(normalize_spotify_date)
|
||||
]
|
||||
|
||||
|
||||
class Token(BaseModel):
|
||||
token_type: Literal['Bearer']
|
||||
access_token: str
|
||||
@ -134,7 +155,7 @@ class BaseAlbum(BaseModel):
|
||||
id: str
|
||||
images: list[Image]
|
||||
name: str
|
||||
release_date: datetime
|
||||
release_date: PrecisionedReleaseDate
|
||||
release_date_precision: Literal['year', 'month', 'day']
|
||||
restrictions: Restriction | None = None
|
||||
type: Literal['album']
|
||||
@ -206,7 +227,7 @@ class AudioBookChapter(BaseModel):
|
||||
is_playable: bool
|
||||
languages: list[str]
|
||||
name: str
|
||||
release_date: datetime
|
||||
release_date: PrecisionedReleaseDate
|
||||
release_date_precision: Literal['year', 'month', 'day']
|
||||
resume_point: ResumePoint
|
||||
type: Literal['episode']
|
||||
|
||||
Reference in New Issue
Block a user