feat: monorepo

This commit is contained in:
qier222 2022-05-12 02:45:43 +08:00
parent 4d54060a4f
commit 42089d4996
No known key found for this signature in database
GPG key ID: 9C85007ED905F14D
200 changed files with 1530 additions and 1521 deletions

View file

@ -0,0 +1,23 @@
export enum AlbumApiNames {
FetchAlbum = 'fetchAlbum',
}
// 专辑详情
export interface FetchAlbumParams {
id: number
}
export interface FetchAlbumResponse {
code: number
resourceState: boolean
album: Album
songs: Track[]
description: string
}
export interface LikeAAlbumParams {
t: 1 | 2
id: number
}
export interface LikeAAlbumResponse {
code: number
}

View file

@ -0,0 +1,28 @@
export enum ArtistApiNames {
FetchArtist = 'fetchArtist',
FetchArtistAlbums = 'fetchArtistAlbums',
}
// 歌手详情
export interface FetchArtistParams {
id: number
}
export interface FetchArtistResponse {
code: number
more: boolean
artist: Artist
hotSongs: Track[]
}
// 获取歌手的专辑列表
export interface FetchArtistAlbumsParams {
id: number
limit?: number // default: 50
offset?: number // default: 0
}
export interface FetchArtistAlbumsResponse {
code: number
hotAlbums: Album[]
more: boolean
artist: Artist
}

View file

@ -0,0 +1,48 @@
export enum PlaylistApiNames {
FetchPlaylist = 'fetchPlaylist',
FetchRecommendedPlaylists = 'fetchRecommendedPlaylists',
FetchDailyRecommendPlaylists = 'fetchDailyRecommendPlaylists',
LikeAPlaylist = 'likeAPlaylist',
}
// 歌单详情
export interface FetchPlaylistParams {
id: number
s?: number // 歌单最近的 s 个收藏者
}
export interface FetchPlaylistResponse {
code: number
playlist: Playlist
privileges: unknown // TODO: unknown type
relatedVideos: null
resEntrance: null
sharedPrivilege: null
urls: null
}
// 推荐歌单
export interface FetchRecommendedPlaylistsParams {
limit?: number
}
export interface FetchRecommendedPlaylistsResponse {
code: number
category: number
hasTaste: boolean
result: Playlist[]
}
// 每日推荐歌单(需要登录)
export interface FetchDailyRecommendPlaylistsResponse {
code: number
featureFirst: boolean
haveRcmdSongs: boolean
recommend: Playlist[]
}
export interface LikeAPlaylistParams {
t: 1 | 2
id: number
}
export interface LikeAPlaylistResponse {
code: number
}

View file

@ -0,0 +1,82 @@
export enum SearchApiNames {
Search = 'search',
MultiMatchSearch = 'multiMatchSearch',
}
// 搜索
export enum SearchTypes {
Single = '1',
Album = '10',
Artist = '100',
Playlist = '1000',
User = '1002',
Mv = '1004',
Lyrics = '1006',
Radio = '1009',
Video = '1014',
All = '1018',
}
export interface SearchParams {
keywords: string
limit?: number // 返回数量 , 默认为 30
offset?: number // 偏移数量,用于分页 , 如 : 如 :( 页数 -1)*30, 其中 30 为 limit 的值 , 默认为 0
type: keyof typeof SearchTypes // type: 搜索类型
}
export interface SearchResponse {
code: number
result: {
album: {
albums: Album[]
more: boolean
moreText: string
resourceIds: number[]
}
artist: {
artists: Artist[]
more: boolean
moreText: string
resourceIds: number[]
}
playList: {
playLists: Playlist[]
more: boolean
moreText: string
resourceIds: number[]
}
song: {
songs: Track[]
more: boolean
moreText: string
resourceIds: number[]
}
user: {
users: User[]
more: boolean
moreText: string
resourceIds: number[]
}
circle: unknown
new_mlog: unknown
order: string[]
rec_type: null
rec_query: null[]
sim_query: unknown
voice: unknown
voiceList: unknown
}
}
// 搜索多重匹配
export interface MultiMatchSearchParams {
keywords: string
}
export interface MultiMatchSearchResponse {
code: number
result: {
album: Album[]
artist: Artist[]
playlist: Playlist[]
orpheus: unknown
orders: Array<'artist' | 'album'>
}
}

View file

@ -0,0 +1,104 @@
export enum TrackApiNames {
FetchTracks = 'fetchTracks',
FetchAudioSource = 'fetchAudioSource',
FetchLyric = 'fetchLyric',
}
// 获取歌曲详情
export interface FetchTracksParams {
ids: number[]
}
export interface FetchTracksResponse {
code: number
songs: Track[]
privileges: {
[key: string]: unknown
}
}
// 获取音源URL
export interface FetchAudioSourceParams {
id: number
br?: number // bitrate, default 999000320000 = 320kbps
}
export interface FetchAudioSourceResponse {
code: number
data: {
br: number
canExtend: boolean
code: number
encodeType: 'mp3' | null
expi: number
fee: number
flag: number
freeTimeTrialPrivilege: {
[key: string]: unknown
}
freeTrialPrivilege: {
[key: string]: unknown
}
freeTrialInfo: null
gain: number
id: number
level: 'standard' | 'null'
md5: string | null
payed: number
size: number
type: 'mp3' | null
uf: null
url: string | null
urlSource: number
}[]
}
// 获取歌词
export interface FetchLyricParams {
id: number
}
export interface FetchLyricResponse {
code: number
sgc: boolean
sfy: boolean
qfy: boolean
lyricUser?: {
id: number
status: number
demand: number
userid: number
nickname: string
uptime: number
}
transUser?: {
id: number
status: number
demand: number
userid: number
nickname: string
uptime: number
}
lrc: {
version: number
lyric: string
}
klyric?: {
version: number
lyric: string
}
tlyric?: {
version: number
lyric: string
}
}
// 收藏歌曲
export interface LikeATrackParams {
id: number
like: boolean
}
export interface LikeATrackResponse {
code: number
playlistId: number
songs: Track[]
}

108
packages/shared/api/User.ts Normal file
View file

@ -0,0 +1,108 @@
export enum UserApiNames {
FetchUserAccount = 'fetchUserAccount',
FetchUserLikedTracksIds = 'fetchUserLikedTracksIDs',
FetchUserPlaylists = 'fetchUserPlaylists',
FetchUserAlbums = 'fetchUserAlbums',
FetchUserArtist = 'fetchUserArtists',
}
// 获取账号详情
export interface FetchUserAccountResponse {
code: number
account: {
anonimousUser: boolean
ban: number
baoyueVersion: number
createTime: number
donateVersion: number
id: number
paidFee: boolean
status: number
tokenVersion: number
type: number
userName: string
vipType: number
whitelistAuthority: number
} | null
profile: {
userId: number
userType: number
nickname: string
avatarImgId: number
avatarUrl: string
backgroundImgId: number
backgroundUrl: string
signature: string
createTime: number
userName: string
accountType: number
shortUserName: string
birthday: number
authority: number
gender: number
accountStatus: number
province: number
city: number
authStatus: number
description: string | null
detailDescription: string | null
defaultAvatar: boolean
expertTags: [] | null
experts: [] | null
djStatus: number
locationStatus: number
vipType: number
followed: boolean
mutual: boolean
authenticated: boolean
lastLoginTime: number
lastLoginIP: string
remarkName: string | null
viptypeVersion: number
authenticationTypes: number
avatarDetail: string | null
anchor: boolean
} | null
}
// 获取用户歌单
export interface FetchUserPlaylistsParams {
uid: number
offset: number
limit?: number // default 30
}
export interface FetchUserPlaylistsResponse {
code: number
more: boolean
version: string
playlist: Playlist[]
}
export interface FetchUserLikedTracksIDsParams {
uid: number
}
export interface FetchUserLikedTracksIDsResponse {
code: number
checkPoint: number
ids: number[]
}
export interface FetchUserAlbumsParams {
offset?: number // default 0
limit?: number // default 25
}
export interface FetchUserAlbumsResponse {
code: number
hasMore: boolean
paidCount: number
count: number
data: Album[]
}
// 获取收藏的歌手
export interface FetchUserArtistsResponse {
code: number
hasMore: boolean
count: number
data: Artist[]
}