mirror of
https://github.com/wahyd4/you-music.git
synced 2026-08-08 20:59:47 +10:00
86 lines
1.7 KiB
Python
86 lines
1.7 KiB
Python
from pydantic import BaseModel, HttpUrl
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
|
|
|
|
class MusicBase(BaseModel):
|
|
title: str
|
|
artist: Optional[str] = None
|
|
album: Optional[str] = None
|
|
duration: Optional[float] = None
|
|
source_url: Optional[str] = None
|
|
source_type: Optional[str] = None
|
|
thumbnail: Optional[str] = None
|
|
lyrics: Optional[str] = None
|
|
|
|
|
|
class MusicCreate(MusicBase):
|
|
file_path: str
|
|
|
|
|
|
class MusicUpdate(BaseModel):
|
|
title: Optional[str] = None
|
|
artist: Optional[str] = None
|
|
album: Optional[str] = None
|
|
lyrics: Optional[str] = None
|
|
|
|
|
|
class Music(MusicBase):
|
|
id: int
|
|
file_path: str
|
|
file_size: Optional[int] = None
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class PlaylistBase(BaseModel):
|
|
name: str
|
|
description: Optional[str] = None
|
|
thumbnail: Optional[str] = None
|
|
|
|
|
|
class PlaylistCreate(PlaylistBase):
|
|
pass
|
|
|
|
|
|
class PlaylistUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
description: Optional[str] = None
|
|
thumbnail: Optional[str] = None
|
|
|
|
|
|
class Playlist(PlaylistBase):
|
|
id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
music_items: list[Music] = []
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class SearchResult(BaseModel):
|
|
title: str
|
|
artist: Optional[str] = None
|
|
duration: Optional[int] = None
|
|
thumbnail: Optional[str] = None
|
|
url: str
|
|
source: str # youtube, bilibili
|
|
|
|
|
|
class DownloadRequest(BaseModel):
|
|
url: str
|
|
title: Optional[str] = None
|
|
add_to_playlist: Optional[str] = None
|
|
thumbnail: Optional[str] = None
|
|
artist: Optional[str] = None
|
|
|
|
|
|
class ShareLink(BaseModel):
|
|
music_id: int
|
|
token: str
|
|
url: str
|