diff --git a/CHANGELOG.MD b/CHANGELOG.MD index 7d9a808..e9f6361 100644 --- a/CHANGELOG.MD +++ b/CHANGELOG.MD @@ -1,4 +1,9 @@ # 更新日志 +### 3.42.0 | 2020.10.04 +- 新增`用户绑定信息`,`用户绑定手机`,`新版评论`,`点赞过的视频`,`收藏视频到视频歌单`,`删除视频歌单里的视频`,`最近播放的视频`,`音乐日历`等接口 + +- 创建歌单接口增加`type`参数,可创建视频歌单 + ### 3.41.2 | 2020.09.20 - 更新`获取音乐 url`接口,未登录状态返回试听片段 [#897](https://github.com/Binaryify/NeteaseCloudMusicApi/issues/897) diff --git a/docs/README.md b/docs/README.md index cdc2312..ecfbb4a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -186,6 +186,14 @@ 168. 精品歌单标签列表 169. 用户等级信息 170. 电台个性推荐 +171. 用户绑定信息 +172. 用户绑定手机 +173. 新版评论 +174. 点赞过的视频 +175. 收藏视频到视频歌单 +176. 删除视频歌单里的视频 +177. 最近播放的视频 +178. 音乐日历 ## 安装 @@ -527,6 +535,41 @@ v3.30.0后支持手动传入cookie,登录接口返回内容新增 `cookie` 字 **调用例子 :** `/user/level` + +### 获取用户绑定信息 + +说明 : 登录后调用此接口 , 可以获取用户绑定信息 + +**必选参数 :** `uid` : 用户 id + + +**接口地址 :** `/user/binding` + +**调用例子 :** `/user/binding?uid=32953014` + + +### 用户绑定手机 + +说明 : 登录后调用此接口 , 可以更换绑定手机 + +**必选参数 :** + +`phone` : 手机号码 + +`oldcaptcha`: 原手机号码的验证码 + +`captcha`:新手机号码的验证码 + +**可选参数 :** + +`countrycode`: 国家地区代码,默认86 + + +**接口地址 :** `/user/replacephone` + +**调用例子 :** `/user/replacephone?uid=32953014` + + ### 更新用户信息 说明 : 登录后调用此接口 , 传入相关信息,可以更新用户信息 @@ -1192,14 +1235,15 @@ mp3url 不能直接用 , 可通过 `/song/url` 接口传入歌曲 id 获取具 **必选参数 :** `name` : 歌单名 -**可选参数 :** `privacy` : 是否设置为隐私歌单,默认否,传'10'则设置成隐私歌单 +**可选参数 :** + +`privacy` : 是否设置为隐私歌单,默认否,传'10'则设置成隐私歌单 + +`type` : 歌单类型,默认'NORMAL',传 'VIDEO'则为视频歌单 **接口地址 :** `/playlist/create` -**调用例子 :** `/playlist/create?name=测试歌单` - - - +**调用例子 :** `/playlist/create?name=测试歌单`,`/playlist/create?name=test&type=VIDEO` ### 删除歌单 @@ -1257,6 +1301,38 @@ mp3url 不能直接用 , 可通过 `/song/url` 接口传入歌曲 id 获取具 **调用例子 :** `/playlist/tracks?op=add&pid=24381616&tracks=347231` ( 对应把歌曲添加到 ' 我 ' 的歌单 , 测试的时候请把这里的 pid 换成你自己的, id 和 tracks 不对可能会报 502 错误) +### 收藏视频到视频歌单 +说明 : 调用此接口 , 可收藏视频到视频歌单 ( 需要登录 ) + +**必选参数 :** + +`pid` : 歌单 id + +`ids` : 视频id,支持多个,用`,`隔开 + +**接口地址 :** `/playlist/track/add` + +**调用例子 :** `/playlist/track/add?pid=5271999357&ids=186041` + +### 删除视频歌单里的视频 +说明 : 调用此接口 , 可删除视频歌单里的视频 ( 需要登录 ) +**必选参数 :** + +`pid` : 歌单 id + +`ids` : 视频id,支持多个,用`,`隔开 + +**接口地址 :** `/playlist/track/delete` + +**调用例子 :** `/playlist/track/delete?pid=5271999357&ids=186041` + +### 最近播放的视频 +说明 : 调用此接口 , 可获取最近播放的视频 ( 需要登录 ) + +**接口地址 :** `/playlist/video/recent` + +**调用例子 :** `/playlist/video/recent` + ### 获取歌词 说明 : 调用此接口 , 传入音乐 id 可获得对应音乐的歌词 ( 不需要登录 ) @@ -1483,6 +1559,36 @@ mp3url 不能直接用 , 可通过 `/song/url` 接口传入歌曲 id 获取具 **调用例子 :** `/comment/hot?id=186016&type=0` +### 新版评论接口 +说明 : 调用此接口 , 传入资源类型和资源id,以及排序方式,可获取对应资源的评论 + +**必选参数 :** +`id` : 资源 id, 如歌曲 id,mv id + +`tpye`: 数字 , 资源类型 , 对应歌曲 , mv, 专辑 , 歌单 , 电台, 视频对应以下类型 +``` +0: 歌曲 + +1: mv + +2: 歌单 + +3: 专辑 + +4: 电台 + +5: 视频 + +6: 动态 +``` +**可选参数 :** +`pageNo`:分页参数,第N页,默认为1 + +`pageSize`:分页参数,每页多少条数据,默认20 + +`sortType` 排序方式,1:按推荐排序,2:按热度排序,3:按时间排序 + + ### 给评论点赞 说明 : 调用此接口 , 传入 type, 资源 id, 和评论 id cid 和 是否点赞参数 t 即可给对 @@ -1646,6 +1752,14 @@ mp3url 不能直接用 , 可通过 `/song/url` 接口传入歌曲 id 获取具 注意:如给动态点赞,不需要传入 id,需要传入 `threadId`,可通过 `event`,`/user/event` 接口获取,如: `/resource/like?t=1&type=6&threadId=A_EV_2_6559519868_32953014` +### 获取点赞过的视频 + +说明 : 调用此接口, 可获取获取点赞过的视频 + +**接口地址 :** `/playlist/mylike` + +**调用例子 :** `/playlist/mylike` + ### 获取歌曲详情 说明 : 调用此接口 , 传入音乐 id(支持多个 id, 用 `,` 隔开), 可获得歌曲详情(注意:歌曲封面现在需要通过专辑内容接口获取) @@ -2784,6 +2898,14 @@ type='1009' 获取其 id, 如`/search?keywords= 代码时间 &type=1009` **调用例子 :** `/digitalAlbum/ordering?id=86286082&payment=3&quantity=1` +### 音乐日历 +说明 : 登录后调用此接口 传入开始和结束时间,可获取音乐日历 + +**接口地址 :** `/calendar` + +**调用例子 :** `/calendar?startTime=1606752000000&endTime=1609430399999` + + ### batch批量请求接口 说明 : 登录后调用此接口 ,传入接口和对应原始参数(原始参数非文档里写的参数,需参考源码),可批量请求接口 diff --git a/interface.d.ts b/interface.d.ts new file mode 100644 index 0000000..56a4db5 --- /dev/null +++ b/interface.d.ts @@ -0,0 +1,1250 @@ +export interface RequestBaseConfig { + cookie?: string + realIP?: string // IPv4/IPv6 filled in X-Real-IP + proxy?: string // HTTP proxy +} + +export interface MultiPageConfig { + limit?: string | number + offset?: string | number +} + +export interface ImageUploadConfig { + imgFile: { + name: string + data: string | Buffer + } + imgSize?: number + imgX?: number + imgY?: number +} + +export interface APIBaseResponse { + code: number + cookie: string + [index: string]: unknown +} + +export interface Response { + status: number // The Http Response Code + body: APIBaseResponse // API Response body + cookie: string[] +} + +export const enum SubAction { + sub = 1, + unsub = 0, +} + +export function activate_init_profile( + params: { nickname: string } & RequestBaseConfig, +): Promise + +export function album( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export function album_detail( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export function album_detail_dynamic( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export const enum AlbumListArea { + all = 'ALL', + zh = 'ZH', + ea = 'EA', + kr = 'KR', + jp = 'JP', +} + +export const enum ListOrder { + hot = 'hot', + new = 'new', +} + +export function album_list( + params: { area?: AlbumListArea; type: string } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export const enum AlbumListStyleArea { + zh = 'Z_H', + ea = 'E_A', + kr = 'KR', + jp = 'JP', +} + +export function album_list_style( + params: { area?: AlbumListStyleArea } & MultiPageConfig & RequestBaseConfig, +): Promise + +export function album_new( + params: { area?: AlbumListArea } & MultiPageConfig & RequestBaseConfig, +): Promise + +export function album_newest(params: RequestBaseConfig): Promise + +export const enum AlbumSongsaleboardType { + daily = 'daily', + week = 'week', + year = 'year', + total = 'total', +} + +export const enum AlbumSongsaleboardAlbumType { + album = 0, + single = 1, +} + +export function album_songsaleboard( + params: { + albumType?: AlbumSongsaleboardAlbumType // 0 为数字专辑,1 为数字单曲 + type?: AlbumSongsaleboardType + year?: string | number // 年份,默认本年。 type 为 year 时有效 + } & RequestBaseConfig, +): Promise + +export function album_sub( + params: { + id: string | number + t: SubAction + } & RequestBaseConfig, +): Promise + +export function album_sublist( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function artist_album( + params: { id: string | number } & MultiPageConfig & RequestBaseConfig, +): Promise + +export function artist_desc( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export const enum ArtistListArea { + zh = 'Z_H', + ea = 'E_A', + kr = 'KR', + jp = 'JP', +} + +export const enum ArtistArea { + all = '-1', + zh = '7', + ea = '96', + ja = '8', + kr = '16', + other = '0', +} + +export const enum ArtistType { + male = '1', + female = '2', + band = '3', +} + +export function artist_list( + params: { + area: ArtistArea + initial?: + | 'a' + | 'b' + | 'c' + | 'd' + | 'e' + | 'f' + | 'g' + | 'h' + | 'i' + | 'j' + | 'k' + | 'l' + | 'm' + | 'n' + | 'o' + | 'p' + | 'q' + | 'r' + | 's' + | 't' + | 'u' + | 'v' + | 'w' + | 'x' + | 'y' + | 'z' + | 'A' + | 'B' + | 'C' + | 'D' + | 'E' + | 'F' + | 'G' + | 'H' + | 'I' + | 'J' + | 'K' + | 'L' + | 'M' + | 'N' + | 'O' + | 'P' + | 'Q' + | 'R' + | 'S' + | 'T' + | 'U' + | 'V' + | 'W' + | 'X' + | 'Y' + | 'Z' + type?: ArtistType + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function artist_mv( + params: { id: string | number } & MultiPageConfig & RequestBaseConfig, +): Promise + +export const enum ArtistSongsOrder { + hot = 'hot', + time = 'time', +} + +export function artist_songs( + params: { + id: string | number + order?: ArtistSongsOrder + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function artist_sub( + params: { id: string | number; t: SubAction } & RequestBaseConfig, +): Promise + +export function artist_sublist( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function artist_top_song( + params: { + id: string | number + } & RequestBaseConfig, +): Promise + +export function artists( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export function avatar_upload( + params: ImageUploadConfig & RequestBaseConfig, +): Promise + +export const enum BannerType { + pc = 0, + android = 1, + iphone = 2, + ipad = 3, +} + +export function banner( + params: { type?: BannerType } & RequestBaseConfig, +): Promise + +export function batch( + params: { [index: string]: unknown } & RequestBaseConfig, +): Promise + +export function captcha_sent( + params: { cellphone: string; ctcode?: string } & RequestBaseConfig, +): Promise + +export function captcha_verify( + params: { + ctcode?: string + cellphone: string + captcha: string + } & RequestBaseConfig, +): Promise + +export function cellphone_existence_check( + params: { cellphone: string; countrycode: string } & RequestBaseConfig, +): Promise + +export function check_music( + params: { id: string | number; br: string | number } & RequestBaseConfig, +): Promise + +export const enum SearchType { + single = 1, + album = 10, + artist = 100, + playlist = 1000, + user = 1002, + mv = 1004, + lyric = 1006, + dj = 1009, + video = 1014, + complex = 1018, +} + +export function cloudsearch( + params: { + keywords: string + type?: SearchType + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export const enum CommentType { + song = 0, + mv = 1, + playlist = 2, + album = 3, + dj = 4, + video = 5, + event = 6, +} + +export const enum CommentAction { + add = 1, + delete = 0, + reply = 2, +} + +export function comment( + params: { + id: string | number + type: CommentType + t: CommentAction.delete + commentId: string | number + } & RequestBaseConfig, +): Promise + +export function comment( + params: { + type: CommentType.event + t: CommentAction.delete + threadId: string + commentId: string | number + } & RequestBaseConfig, +): Promise + +export function comment( + params: { + id: string | number + type: CommentType + t: CommentAction.add + content: string | number + } & RequestBaseConfig, +): Promise + +export function comment( + params: { + type: CommentType.event + t: CommentAction.add + threadId: string + content: string | number + } & RequestBaseConfig, +): Promise + +export function comment( + params: { + id: string | number + type: CommentType + t: CommentAction.reply + content: string | number + commentId: string | number + } & RequestBaseConfig, +): Promise + +export function comment( + params: { + type: CommentType.event + t: CommentAction.reply + threadId: string + content: string | number + commentId: string | number + } & RequestBaseConfig, +): Promise + +export function comment_album( + params: { + id: string | number + before?: string | number + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function comment_dj( + params: { + id: string | number + before?: string | number + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function comment_event( + params: { + threadId: string + before?: string | number + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function comment_floor( + params: { + id: string | number + parentCommentId: string | number + type: CommentType + limit?: string | number + time?: string | number + } & RequestBaseConfig, +): Promise + +export function comment_hot( + params: { + id: string | number + type: CommentType + before?: string | number + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function comment_hotwall_list( + params: RequestBaseConfig, +): Promise + +export function comment_like( + params: { + id: string | number + type: CommentType + t: SubAction + cid: string | number + threadId?: string + } & RequestBaseConfig, +): Promise + +export function comment_music( + params: { + id: string | number + before?: string | number + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function comment_mv( + params: { + id: string | number + before?: string | number + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function comment_playlist( + params: { + id: string | number + + before?: string | number + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function comment_video( + params: { + id: string | number + before?: string | number + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function countries_code_list( + params: RequestBaseConfig, +): Promise + +export const enum DailySigninType { + android = 0, + pc = 1, +} + +export function daily_signin( + params: { type?: DailySigninType } & RequestBaseConfig, +): Promise + +export function digitalAlbum_ordering( + params: { + payment: string + id: string | number + quantity: string + } & RequestBaseConfig, +): Promise + +export function digitalAlbum_purchased( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function dj_banner(params: RequestBaseConfig): Promise + +export function dj_category_excludehot( + params: RequestBaseConfig, +): Promise + +export function dj_category_recommend( + params: RequestBaseConfig, +): Promise + +export function dj_catelist(params: RequestBaseConfig): Promise + +export function dj_detail( + params: { rid: string | number } & RequestBaseConfig, +): Promise + +export function dj_hot( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function dj_paygift( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function dj_personalize_recommend( + params: { limit?: string | number } & RequestBaseConfig, +): Promise + +export function dj_program( + params: { + rid: string | number + asc: 'true' | 1 | 'false' | 0 + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function dj_program_detail( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export function dj_program_toplist( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function dj_program_toplist_hours( + params: { limit?: string | number } & RequestBaseConfig, +): Promise + +export function dj_radio_hot( + params: { + cateId: string | number + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function dj_recommend(params: RequestBaseConfig): Promise + +/* + 有声书 10001 + 知识技能 453050 + 商业财经 453051 + 人文历史 11 + 外语世界 13 + 亲子宝贝 14 + 创作|翻唱 2001 + 音乐故事 2 + 3D|电子 10002 + 相声曲艺 8 + 情感调频 3 + 美文读物 6 + 脱口秀 5 + 广播剧 7 + 二次元 3001 + 明星做主播 1 + 娱乐|影视 4 + 科技科学 453052 + 校园|教育 4001 + 旅途|城市 12 +*/ + +export function dj_recommend_type( + params: { type: number } & RequestBaseConfig, +): Promise + +export function dj_sub( + params: { t: SubAction; rid: string | number } & RequestBaseConfig, +): Promise + +export function dj_sublist( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function dj_today_perfered( + params: { page?: string | number } & RequestBaseConfig, +): Promise + +export function dj_toplist( + params: { type?: ListOrder } & MultiPageConfig & RequestBaseConfig, +): Promise + +export function dj_toplist_hours( + params: { limit?: string | number } & RequestBaseConfig, +): Promise + +export function dj_toplist_newcomer( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function dj_toplist_pay( + params: { limit?: string | number } & RequestBaseConfig, +): Promise + +export function dj_toplist_popular( + params: { limit?: string | number } & RequestBaseConfig, +): Promise + +export function event( + params: { pagesize?: number; lasttime?: number } & RequestBaseConfig, +): Promise + +export function event_del( + params: { evId: string | number } & RequestBaseConfig, +): Promise + +export function event_forward( + params: { + forwords: string + evId: string | number + uid: string | number + } & RequestBaseConfig, +): Promise + +export function fm_trash( + params: { id: string | number; time?: string | number } & RequestBaseConfig, +): Promise + +export function follow( + params: { t: SubAction; id: string | number } & RequestBaseConfig, +): Promise + +export function history_recommend_songs( + params: RequestBaseConfig, +): Promise + +export function history_recommend_songs_detail( + params: { date?: string } & RequestBaseConfig, +): Promise + +export function homepage_block_page( + params: { refresh?: 'true' | 'false' | boolean } & RequestBaseConfig, +): Promise + +export function homepage_dragon_ball( + params: RequestBaseConfig, +): Promise + +export function hot_topic( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function like( + params: { + like?: 'true' | 'false' | boolean + id: string | number + alg?: string + time?: string | number + } & RequestBaseConfig, +): Promise + +export function likelist( + params: { uid: string | number } & RequestBaseConfig, +): Promise + +export function login( + params: { email: string; password: string } & RequestBaseConfig, +): Promise + +export function login( + params: { email: string; md5_password: string } & RequestBaseConfig, +): Promise + +export function login_cellphone( + params: { + phone: string + countrycode?: string + password: string + } & RequestBaseConfig, +): Promise + +export function login_cellphone( + params: { + phone: string + countrycode?: string + md5_password: string + } & RequestBaseConfig, +): Promise + +export function login_refresh(params: RequestBaseConfig): Promise + +export function login_status(params: RequestBaseConfig): Promise + +export function logout(params: RequestBaseConfig): Promise + +export function lyric( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export function msg_comments( + params: { + uid: string | number + before?: string | number + limit?: string | number + } & RequestBaseConfig, +): Promise + +export function msg_forwards( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function msg_notices( + params: { + limit?: string | number + lasttime?: string | number + } & RequestBaseConfig, +): Promise + +export function msg_private( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function msg_private_history( + params: { + before?: string | number + limit?: string | number + uid: string | number + } & RequestBaseConfig, +): Promise + +export const enum MvArea { + all = '全部', + zh = '内地', + hk = '港台', + ea = '欧美', + kr = '韩国', + jp = '日本', +} + +export const enum MvType { + all = '全部', + offical = '官方版', + raw = '原生', + live = '现场版', + netease = '网易出品', +} + +export const enum MvOrder { + trend = '上升最快', + hot = '最热', + new = '最新', +} + +export function mv_all( + params: { + area?: MvArea + type?: MvType + order?: MvOrder + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function mv_detail( + params: { mvid?: string | number } & RequestBaseConfig, +): Promise + +export function mv_detail_info( + params: { mvid: string | number } & RequestBaseConfig, +): Promise + +export function mv_exclusive_rcmd( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function mv_first( + params: { area?: MvArea; limit?: string | number } & RequestBaseConfig, +): Promise + +export function mv_sub( + params: { t: SubAction; mvid: string | number } & RequestBaseConfig, +): Promise + +export function mv_sublist( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function mv_url( + params: { id?: string | number; r?: string | number } & RequestBaseConfig, +): Promise + +export function personal_fm(params: RequestBaseConfig): Promise + +export function personalized( + params: { limit?: string | number } & RequestBaseConfig, +): Promise + +export function personalized_djprogram( + params: RequestBaseConfig, +): Promise + +export function personalized_mv(params: RequestBaseConfig): Promise + +export function personalized_newsong( + params: RequestBaseConfig, +): Promise + +export function personalized_privatecontent( + params: RequestBaseConfig, +): Promise + +export function personalized_privatecontent_list( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function playlist_catlist(params: RequestBaseConfig): Promise + +export function playlist_cover_update( + params: { id: string } & ImageUploadConfig & RequestBaseConfig, +): Promise + +export function playlist_create( + params: { name: string; privacy: 0 | 10, type?: PlaylistType } & RequestBaseConfig, +): Promise + +export function playlist_delete( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export function playlist_desc_update( + params: { id: string | number; desc: string } & RequestBaseConfig, +): Promise + +export function playlist_detail( + params: { id: string | number; s?: string | number } & RequestBaseConfig, +): Promise + +export function playlist_highquality_tags( + params: RequestBaseConfig, +): Promise + +export function playlist_hot(params: RequestBaseConfig): Promise + +export function playlist_name_update( + params: { id: string | number; name: string } & RequestBaseConfig, +): Promise + +export function playlist_order_update( + params: { ids: string } & RequestBaseConfig, +): Promise + +export function playlist_subscribe( + params: { t: SubAction; id: string | number } & RequestBaseConfig, +): Promise + +export function playlist_subscribers( + params: { id?: string | number } & MultiPageConfig & RequestBaseConfig, +): Promise + +export function playlist_tags_update( + params: { id: string | number; tags: string } & RequestBaseConfig, +): Promise + +export function playlist_tracks( + params: { + op: 'add' | 'del' + pid: string | number + tracks: string + } & RequestBaseConfig, +): Promise + +export function playlist_update( + params: { + id: string | number + name: string + desc?: string + tags?: string + } & RequestBaseConfig, +): Promise + +export function playmode_intelligence_list( + params: { + id: string | number + pid: string | number + sid?: string | number + count?: string | number + } & RequestBaseConfig, +): Promise + +export function program_recommend( + params: { type: string } & MultiPageConfig & RequestBaseConfig, +): Promise + +export function rebind( + params: { + captcha: string + phone: string + oldcaptcha: string + ctcode?: string + } & RequestBaseConfig, +): Promise + +export function recommend_resource( + params: RequestBaseConfig, +): Promise + +export function recommend_songs(params: RequestBaseConfig): Promise + +export function register_cellphone( + params: { + captcha: string + phone: string + password: string + nickname: string + } & RequestBaseConfig, +): Promise + +export function related_allvideo( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export function related_playlist( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export const enum ResourceType { + mv = 1, + dj = 4, + video = 5, + event = 6, +} +type PlaylistType = 'NROMAL' | 'VIDEO'; + + + +export function resource_like( + params: { + t: SubAction + type: ResourceType + id?: string | number + threadId?: string + } & RequestBaseConfig, +): Promise + +export function scrobble( + params: { + id: string | number + sourceid: string | number + time: string | number + } & RequestBaseConfig, +): Promise + +export function search( + params: { + keywords: string + type?: SearchType + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function search_default(params: RequestBaseConfig): Promise + +export function search_hot(params: RequestBaseConfig): Promise + +export function search_hot_detail( + params: RequestBaseConfig, +): Promise + +export function search_multimatch( + params: { type?: number; keywords: string } & RequestBaseConfig, +): Promise + +export const enum SearchSuggestType { + mobile = 'mobile', + web = 'web', +} + +export function search_suggest( + params: { keywords: string; type?: SearchSuggestType } & RequestBaseConfig, +): Promise + +export function send_playlist( + params: { + playlist: string | number + msg: string + user_ids: string + } & RequestBaseConfig, +): Promise + +export function send_text( + params: { msg: string; user_ids: string } & RequestBaseConfig, +): Promise + +export function setting(params: RequestBaseConfig): Promise + +export const enum ShareResourceType { + song = 'song', + playlist = 'playlist', + mv = 'mv', + djprogram = 'djprogram', + djradio = 'djradio', +} + +export function share_resource( + params: { + type?: ShareResourceType + msg?: string + id?: string | number + } & RequestBaseConfig, +): Promise + +export function simi_artist( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export function simi_mv( + params: { mvid: string | number } & RequestBaseConfig, +): Promise + +export function simi_playlist( + params: { id: string | number } & MultiPageConfig & RequestBaseConfig, +): Promise + +export function simi_song( + params: { id: string | number } & MultiPageConfig & RequestBaseConfig, +): Promise + +export function simi_user( + params: { id: string | number } & MultiPageConfig & RequestBaseConfig, +): Promise + +export function song_detail( + params: { ids: string } & RequestBaseConfig, +): Promise + +export function song_order_update( + params: { pid: string | number; ids: string } & RequestBaseConfig, +): Promise + +export function song_url( + params: { id: string | number; br?: string | number } & RequestBaseConfig, +): Promise + +export function top_album( + params: { + area?: AlbumListArea + type?: ListOrder + year?: string + mouth?: string + } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function top_artists( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function top_list( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export function top_mv( + params: { area?: MvArea } & MultiPageConfig & RequestBaseConfig, +): Promise + +export function top_playlist( + params: { cat?: string; order?: ListOrder } & MultiPageConfig & + RequestBaseConfig, +): Promise + +export function top_playlist_highquality( + params: { + cat?: string + before?: string | number + limit?: string | number + } & RequestBaseConfig, +): Promise + +export const enum TopSongType { + all = 0, + zh = 7, + ea = 96, + kr = 16, + ja = 8, +} + +export function top_song( + params: { type: TopSongType } & RequestBaseConfig, +): Promise + +export function toplist(params: RequestBaseConfig): Promise + +export const enum ToplistArtistType { + zh = 1, + ea = 2, + kr = 3, + ja = 4, +} + +export function toplist_artist( + params: { type?: ToplistArtistType } & RequestBaseConfig, +): Promise + +export function toplist_detail(params: RequestBaseConfig): Promise + +export function user_audio( + params: { uid: string | number } & RequestBaseConfig, +): Promise + +export function user_cloud( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function user_cloud_del( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export function user_cloud_detail( + params: { id: string | number } & RequestBaseConfig, +): Promise + +export function user_detail( + params: { uid: string | number } & RequestBaseConfig, +): Promise + +export function user_dj( + params: { uid: string | number } & MultiPageConfig & RequestBaseConfig, +): Promise + +export function user_event( + params: { + lasttime?: string | number + limit?: string | number + uid: string | number + } & RequestBaseConfig, +): Promise + +export function user_followeds( + params: { + uid: string | number + lasttime?: string | number + limit?: string | number + } & RequestBaseConfig, +): Promise + +export function user_follows( + params: { uid: string | number } & MultiPageConfig & RequestBaseConfig, +): Promise + +export function user_level(params: RequestBaseConfig): Promise + +export function user_playlist( + params: { uid: string | number } & MultiPageConfig & RequestBaseConfig, +): Promise + +export const enum UserRecordType { + all = 0, + weekly = 1, +} + +export function user_record( + params: { uid: string | number; type?: UserRecordType } & RequestBaseConfig, +): Promise + +export function user_subcount(params: RequestBaseConfig): Promise + +export function user_update( + params: { + birthday: string + city: string + gender: string + nickname: string + province: string + signature: string + } & RequestBaseConfig, +): Promise + +export function video_category_list( + params: MultiPageConfig & RequestBaseConfig, +): Promise + +export function video_detail( + params: { id: string } & RequestBaseConfig, +): Promise + +export function video_detail_info( + params: { vid: string } & RequestBaseConfig, +): Promise + +export function video_group( + params: { id: string; offset?: string | number } & RequestBaseConfig, +): Promise + +export function video_group_list(params: RequestBaseConfig): Promise + +export function video_sub( + params: { t?: SubAction; id: string } & RequestBaseConfig, +): Promise + +export function video_timeline_all( + params: { offset?: string | number } & RequestBaseConfig, +): Promise + +export function video_timeline_recommend( + params: { offset?: string | number } & RequestBaseConfig, +): Promise + +export function video_url( + params: { id: string | number; res?: number } & RequestBaseConfig, +): Promise + +export function weblog( + params: { data?: { [index: string]: unknown } } & RequestBaseConfig, +): Promise + +export function playlist_mylike( + params: { time?: number | string, limit: number | string } & RequestBaseConfig, +): Promise + +export function playlist_track_add( + params: { pid?: number | string, ids: number | string } & RequestBaseConfig, +): Promise + +export function playlist_track_delete( + params: { pid?: number | string, ids: number | string } & RequestBaseConfig, +): Promise + +export function comment_new( + params: { type?: number | string, id: number | string, pageNo?: number | string, pageSize?: number | string, sortType?: number | string } & RequestBaseConfig, +): Promise + +export function calendar( + params: { startTime?: number | string, endTime: number | string } & RequestBaseConfig, +): Promise + +export function playlist_video_recent( + params: {} & RequestBaseConfig, +): Promise + +export function user_binding( + params: { uid?: number | string } & RequestBaseConfig, +): Promise + +export function user_replacephone( + params: { phone: number | string, captcha: number | string, oldcaptcha: number | string, countrycode?: number | string } & RequestBaseConfig, +): Promise + +export function user_safe( + params: {} & RequestBaseConfig, +): Promise diff --git a/main.d.ts b/main.d.ts deleted file mode 100644 index 14954a5..0000000 --- a/main.d.ts +++ /dev/null @@ -1,1213 +0,0 @@ -declare module 'NeteaseCloudMusicApi' { - export interface RequestBaseConfig { - cookie?: string - realIP?: string // IPv4/IPv6 filled in X-Real-IP - proxy?: string // HTTP proxy - } - - export interface MultiPageConfig { - limit?: string | number - offset?: string | number - } - - export interface ImageUploadConfig { - imgFile: { - name: string - data: string | Buffer - } - imgSize?: number - imgX?: number - imgY?: number - } - - export interface APIBaseResponse { - code: number - cookie: string - [index: string]: unknown - } - - export interface Response { - status: number // The Http Response Code - body: APIBaseResponse // API Response body - cookie: string[] - } - - export const enum SubAction { - sub = 1, - unsub = 0, - } - - export function activate_init_profile( - params: { nickname: string } & RequestBaseConfig, - ): Promise - - export function album( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export function album_detail( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export function album_detail_dynamic( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export const enum AlbumListArea { - all = 'ALL', - zh = 'ZH', - ea = 'EA', - kr = 'KR', - jp = 'JP', - } - - export const enum ListOrder { - hot = 'hot', - new = 'new', - } - - export function album_list( - params: { area?: AlbumListArea; type: string } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export const enum AlbumListStyleArea { - zh = 'Z_H', - ea = 'E_A', - kr = 'KR', - jp = 'JP', - } - - export function album_list_style( - params: { area?: AlbumListStyleArea } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export function album_new( - params: { area?: AlbumListArea } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export function album_newest(params: RequestBaseConfig): Promise - - export const enum AlbumSongsaleboardType { - daily = 'daily', - week = 'week', - year = 'year', - total = 'total', - } - - export const enum AlbumSongsaleboardAlbumType { - album = 0, - single = 1, - } - - export function album_songsaleboard( - params: { - albumType?: AlbumSongsaleboardAlbumType // 0 为数字专辑,1 为数字单曲 - type?: AlbumSongsaleboardType - year?: string | number // 年份,默认本年。 type 为 year 时有效 - } & RequestBaseConfig, - ): Promise - - export function album_sub( - params: { - id: string | number - t: SubAction - } & RequestBaseConfig, - ): Promise - - export function album_sublist( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function artist_album( - params: { id: string | number } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export function artist_desc( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export const enum ArtistListArea { - zh = 'Z_H', - ea = 'E_A', - kr = 'KR', - jp = 'JP', - } - - export const enum ArtistArea { - all = '-1', - zh = '7', - ea = '96', - ja = '8', - kr = '16', - other = '0', - } - - export const enum ArtistType { - male = '1', - female = '2', - band = '3', - } - - export function artist_list( - params: { - area: ArtistArea - initial?: - | 'a' - | 'b' - | 'c' - | 'd' - | 'e' - | 'f' - | 'g' - | 'h' - | 'i' - | 'j' - | 'k' - | 'l' - | 'm' - | 'n' - | 'o' - | 'p' - | 'q' - | 'r' - | 's' - | 't' - | 'u' - | 'v' - | 'w' - | 'x' - | 'y' - | 'z' - | 'A' - | 'B' - | 'C' - | 'D' - | 'E' - | 'F' - | 'G' - | 'H' - | 'I' - | 'J' - | 'K' - | 'L' - | 'M' - | 'N' - | 'O' - | 'P' - | 'Q' - | 'R' - | 'S' - | 'T' - | 'U' - | 'V' - | 'W' - | 'X' - | 'Y' - | 'Z' - type?: ArtistType - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function artist_mv( - params: { id: string | number } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export const enum ArtistSongsOrder { - hot = 'hot', - time = 'time', - } - - export function artist_songs( - params: { - id: string | number - order?: ArtistSongsOrder - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function artist_sub( - params: { id: string | number; t: SubAction } & RequestBaseConfig, - ): Promise - - export function artist_sublist( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function artist_top_song( - params: { - id: string | number - } & RequestBaseConfig, - ): Promise - - export function artists( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export function avatar_upload( - params: ImageUploadConfig & RequestBaseConfig, - ): Promise - - export const enum BannerType { - pc = 0, - android = 1, - iphone = 2, - ipad = 3, - } - - export function banner( - params: { type?: BannerType } & RequestBaseConfig, - ): Promise - - export function batch( - params: { [index: string]: unknown } & RequestBaseConfig, - ): Promise - - export function captcha_sent( - params: { cellphone: string; ctcode?: string } & RequestBaseConfig, - ): Promise - - export function captcha_verify( - params: { - ctcode?: string - cellphone: string - captcha: string - } & RequestBaseConfig, - ): Promise - - export function cellphone_existence_check( - params: { cellphone: string; countrycode: string } & RequestBaseConfig, - ): Promise - - export function check_music( - params: { id: string | number; br: string | number } & RequestBaseConfig, - ): Promise - - export const enum SearchType { - single = 1, - album = 10, - artist = 100, - playlist = 1000, - user = 1002, - mv = 1004, - lyric = 1006, - dj = 1009, - video = 1014, - complex = 1018, - } - - export function cloudsearch( - params: { - keywords: string - type?: SearchType - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export const enum CommentType { - song = 0, - mv = 1, - playlist = 2, - album = 3, - dj = 4, - video = 5, - event = 6, - } - - export const enum CommentAction { - add = 1, - delete = 0, - reply = 2, - } - - export function comment( - params: { - id: string | number - type: CommentType - t: CommentAction.delete - commentId: string | number - } & RequestBaseConfig, - ): Promise - - export function comment( - params: { - type: CommentType.event - t: CommentAction.delete - threadId: string - commentId: string | number - } & RequestBaseConfig, - ): Promise - - export function comment( - params: { - id: string | number - type: CommentType - t: CommentAction.add - content: string | number - } & RequestBaseConfig, - ): Promise - - export function comment( - params: { - type: CommentType.event - t: CommentAction.add - threadId: string - content: string | number - } & RequestBaseConfig, - ): Promise - - export function comment( - params: { - id: string | number - type: CommentType - t: CommentAction.reply - content: string | number - commentId: string | number - } & RequestBaseConfig, - ): Promise - - export function comment( - params: { - type: CommentType.event - t: CommentAction.reply - threadId: string - content: string | number - commentId: string | number - } & RequestBaseConfig, - ): Promise - - export function comment_album( - params: { - id: string | number - before?: string | number - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function comment_dj( - params: { - id: string | number - before?: string | number - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function comment_event( - params: { - threadId: string - before?: string | number - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function comment_floor( - params: { - id: string | number - parentCommentId: string | number - type: CommentType - limit?: string | number - time?: string | number - } & RequestBaseConfig, - ): Promise - - export function comment_hot( - params: { - id: string | number - type: CommentType - before?: string | number - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function comment_hotwall_list( - params: RequestBaseConfig, - ): Promise - - export function comment_like( - params: { - id: string | number - type: CommentType - t: SubAction - cid: string | number - threadId?: string - } & RequestBaseConfig, - ): Promise - - export function comment_music( - params: { - id: string | number - before?: string | number - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function comment_mv( - params: { - id: string | number - before?: string | number - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function comment_playlist( - params: { - id: string | number - - before?: string | number - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function comment_video( - params: { - id: string | number - before?: string | number - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function countries_code_list( - params: RequestBaseConfig, - ): Promise - - export const enum DailySigninType { - android = 0, - pc = 1, - } - - export function daily_signin( - params: { type?: DailySigninType } & RequestBaseConfig, - ): Promise - - export function digitalAlbum_ordering( - params: { - payment: string - id: string | number - quantity: string - } & RequestBaseConfig, - ): Promise - - export function digitalAlbum_purchased( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function dj_banner(params: RequestBaseConfig): Promise - - export function dj_category_excludehot( - params: RequestBaseConfig, - ): Promise - - export function dj_category_recommend( - params: RequestBaseConfig, - ): Promise - - export function dj_catelist(params: RequestBaseConfig): Promise - - export function dj_detail( - params: { rid: string | number } & RequestBaseConfig, - ): Promise - - export function dj_hot( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function dj_paygift( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function dj_personalize_recommend( - params: { limit?: string | number } & RequestBaseConfig, - ): Promise - - export function dj_program( - params: { - rid: string | number - asc: 'true' | 1 | 'false' | 0 - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function dj_program_detail( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export function dj_program_toplist( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function dj_program_toplist_hours( - params: { limit?: string | number } & RequestBaseConfig, - ): Promise - - export function dj_radio_hot( - params: { - cateId: string | number - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function dj_recommend(params: RequestBaseConfig): Promise - - /* - 有声书 10001 - 知识技能 453050 - 商业财经 453051 - 人文历史 11 - 外语世界 13 - 亲子宝贝 14 - 创作|翻唱 2001 - 音乐故事 2 - 3D|电子 10002 - 相声曲艺 8 - 情感调频 3 - 美文读物 6 - 脱口秀 5 - 广播剧 7 - 二次元 3001 - 明星做主播 1 - 娱乐|影视 4 - 科技科学 453052 - 校园|教育 4001 - 旅途|城市 12 -*/ - - export function dj_recommend_type( - params: { type: number } & RequestBaseConfig, - ): Promise - - export function dj_sub( - params: { t: SubAction; rid: string | number } & RequestBaseConfig, - ): Promise - - export function dj_sublist( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function dj_today_perfered( - params: { page?: string | number } & RequestBaseConfig, - ): Promise - - export function dj_toplist( - params: { type?: ListOrder } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export function dj_toplist_hours( - params: { limit?: string | number } & RequestBaseConfig, - ): Promise - - export function dj_toplist_newcomer( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function dj_toplist_pay( - params: { limit?: string | number } & RequestBaseConfig, - ): Promise - - export function dj_toplist_popular( - params: { limit?: string | number } & RequestBaseConfig, - ): Promise - - export function event( - params: { pagesize?: number; lasttime?: number } & RequestBaseConfig, - ): Promise - - export function event_del( - params: { evId: string | number } & RequestBaseConfig, - ): Promise - - export function event_forward( - params: { - forwords: string - evId: string | number - uid: string | number - } & RequestBaseConfig, - ): Promise - - export function fm_trash( - params: { id: string | number; time?: string | number } & RequestBaseConfig, - ): Promise - - export function follow( - params: { t: SubAction; id: string | number } & RequestBaseConfig, - ): Promise - - export function history_recommend_songs( - params: RequestBaseConfig, - ): Promise - - export function history_recommend_songs_detail( - params: { date?: string } & RequestBaseConfig, - ): Promise - - export function homepage_block_page( - params: { refresh?: 'true' | 'false' | boolean } & RequestBaseConfig, - ): Promise - - export function homepage_dragon_ball( - params: RequestBaseConfig, - ): Promise - - export function hot_topic( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function like( - params: { - like?: 'true' | 'false' | boolean - id: string | number - alg?: string - time?: string | number - } & RequestBaseConfig, - ): Promise - - export function likelist( - params: { uid: string | number } & RequestBaseConfig, - ): Promise - - export function login( - params: { email: string; password: string } & RequestBaseConfig, - ): Promise - - export function login( - params: { email: string; md5_password: string } & RequestBaseConfig, - ): Promise - - export function login_cellphone( - params: { - phone: string - countrycode?: string - password: string - } & RequestBaseConfig, - ): Promise - - export function login_cellphone( - params: { - phone: string - countrycode?: string - md5_password: string - } & RequestBaseConfig, - ): Promise - - export function login_refresh(params: RequestBaseConfig): Promise - - export function login_status(params: RequestBaseConfig): Promise - - export function logout(params: RequestBaseConfig): Promise - - export function lyric( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export function msg_comments( - params: { - uid: string | number - before?: string | number - limit?: string | number - } & RequestBaseConfig, - ): Promise - - export function msg_forwards( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function msg_notices( - params: { - limit?: string | number - lasttime?: string | number - } & RequestBaseConfig, - ): Promise - - export function msg_private( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function msg_private_history( - params: { - before?: string | number - limit?: string | number - uid: string | number - } & RequestBaseConfig, - ): Promise - - export const enum MvArea { - all = '全部', - zh = '内地', - hk = '港台', - ea = '欧美', - kr = '韩国', - jp = '日本', - } - - export const enum MvType { - all = '全部', - offical = '官方版', - raw = '原生', - live = '现场版', - netease = '网易出品', - } - - export const enum MvOrder { - trend = '上升最快', - hot = '最热', - new = '最新', - } - - export function mv_all( - params: { - area?: MvArea - type?: MvType - order?: MvOrder - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function mv_detail( - params: { mvid?: string | number } & RequestBaseConfig, - ): Promise - - export function mv_detail_info( - params: { mvid: string | number } & RequestBaseConfig, - ): Promise - - export function mv_exclusive_rcmd( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function mv_first( - params: { area?: MvArea; limit?: string | number } & RequestBaseConfig, - ): Promise - - export function mv_sub( - params: { t: SubAction; mvid: string | number } & RequestBaseConfig, - ): Promise - - export function mv_sublist( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function mv_url( - params: { id?: string | number; r?: string | number } & RequestBaseConfig, - ): Promise - - export function personal_fm(params: RequestBaseConfig): Promise - - export function personalized( - params: { limit?: string | number } & RequestBaseConfig, - ): Promise - - export function personalized_djprogram( - params: RequestBaseConfig, - ): Promise - - export function personalized_mv(params: RequestBaseConfig): Promise - - export function personalized_newsong( - params: RequestBaseConfig, - ): Promise - - export function personalized_privatecontent( - params: RequestBaseConfig, - ): Promise - - export function personalized_privatecontent_list( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function playlist_catlist(params: RequestBaseConfig): Promise - - export function playlist_cover_update( - params: { id: string } & ImageUploadConfig & RequestBaseConfig, - ): Promise - - export function playlist_create( - params: { name: string; privacy: 0 | 10 } & RequestBaseConfig, - ): Promise - - export function playlist_delete( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export function playlist_desc_update( - params: { id: string | number; desc: string } & RequestBaseConfig, - ): Promise - - export function playlist_detail( - params: { id: string | number; s?: string | number } & RequestBaseConfig, - ): Promise - - export function playlist_highquality_tags( - params: RequestBaseConfig, - ): Promise - - export function playlist_hot(params: RequestBaseConfig): Promise - - export function playlist_name_update( - params: { id: string | number; name: string } & RequestBaseConfig, - ): Promise - - export function playlist_order_update( - params: { ids: string } & RequestBaseConfig, - ): Promise - - export function playlist_subscribe( - params: { t: SubAction; id: string | number } & RequestBaseConfig, - ): Promise - - export function playlist_subscribers( - params: { id?: string | number } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export function playlist_tags_update( - params: { id: string | number; tags: string } & RequestBaseConfig, - ): Promise - - export function playlist_tracks( - params: { - op: 'add' | 'del' - pid: string | number - tracks: string - } & RequestBaseConfig, - ): Promise - - export function playlist_update( - params: { - id: string | number - name: string - desc?: string - tags?: string - } & RequestBaseConfig, - ): Promise - - export function playmode_intelligence_list( - params: { - id: string | number - pid: string | number - sid?: string | number - count?: string | number - } & RequestBaseConfig, - ): Promise - - export function program_recommend( - params: { type: string } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export function rebind( - params: { - captcha: string - phone: string - oldcaptcha: string - ctcode?: string - } & RequestBaseConfig, - ): Promise - - export function recommend_resource( - params: RequestBaseConfig, - ): Promise - - export function recommend_songs(params: RequestBaseConfig): Promise - - export function register_cellphone( - params: { - captcha: string - phone: string - password: string - nickname: string - } & RequestBaseConfig, - ): Promise - - export function related_allvideo( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export function related_playlist( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export const enum ResourceType { - mv = 1, - dj = 4, - video = 5, - event = 6, - } - - export function resource_like( - params: { - t: SubAction - type: ResourceType - id?: string | number - threadId?: string - } & RequestBaseConfig, - ): Promise - - export function scrobble( - params: { - id: string | number - sourceid: string | number - time: string | number - } & RequestBaseConfig, - ): Promise - - export function search( - params: { - keywords: string - type?: SearchType - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function search_default(params: RequestBaseConfig): Promise - - export function search_hot(params: RequestBaseConfig): Promise - - export function search_hot_detail( - params: RequestBaseConfig, - ): Promise - - export function search_multimatch( - params: { type?: number; keywords: string } & RequestBaseConfig, - ): Promise - - export const enum SearchSuggestType { - mobile = 'mobile', - web = 'web', - } - - export function search_suggest( - params: { keywords: string; type?: SearchSuggestType } & RequestBaseConfig, - ): Promise - - export function send_playlist( - params: { - playlist: string | number - msg: string - user_ids: string - } & RequestBaseConfig, - ): Promise - - export function send_text( - params: { msg: string; user_ids: string } & RequestBaseConfig, - ): Promise - - export function setting(params: RequestBaseConfig): Promise - - export const enum ShareResourceType { - song = 'song', - playlist = 'playlist', - mv = 'mv', - djprogram = 'djprogram', - djradio = 'djradio', - } - - export function share_resource( - params: { - type?: ShareResourceType - msg?: string - id?: string | number - } & RequestBaseConfig, - ): Promise - - export function simi_artist( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export function simi_mv( - params: { mvid: string | number } & RequestBaseConfig, - ): Promise - - export function simi_playlist( - params: { id: string | number } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export function simi_song( - params: { id: string | number } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export function simi_user( - params: { id: string | number } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export function song_detail( - params: { ids: string } & RequestBaseConfig, - ): Promise - - export function song_order_update( - params: { pid: string | number; ids: string } & RequestBaseConfig, - ): Promise - - export function song_url( - params: { id: string | number; br?: string | number } & RequestBaseConfig, - ): Promise - - export function top_album( - params: { - area?: AlbumListArea - type?: ListOrder - year?: string - mouth?: string - } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function top_artists( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function top_list( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export function top_mv( - params: { area?: MvArea } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export function top_playlist( - params: { cat?: string; order?: ListOrder } & MultiPageConfig & - RequestBaseConfig, - ): Promise - - export function top_playlist_highquality( - params: { - cat?: string - before?: string | number - limit?: string | number - } & RequestBaseConfig, - ): Promise - - export const enum TopSongType { - all = 0, - zh = 7, - ea = 96, - kr = 16, - ja = 8, - } - - export function top_song( - params: { type: TopSongType } & RequestBaseConfig, - ): Promise - - export function toplist(params: RequestBaseConfig): Promise - - export const enum ToplistArtistType { - zh = 1, - ea = 2, - kr = 3, - ja = 4, - } - - export function toplist_artist( - params: { type?: ToplistArtistType } & RequestBaseConfig, - ): Promise - - export function toplist_detail(params: RequestBaseConfig): Promise - - export function user_audio( - params: { uid: string | number } & RequestBaseConfig, - ): Promise - - export function user_cloud( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function user_cloud_del( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export function user_cloud_detail( - params: { id: string | number } & RequestBaseConfig, - ): Promise - - export function user_detail( - params: { uid: string | number } & RequestBaseConfig, - ): Promise - - export function user_dj( - params: { uid: string | number } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export function user_event( - params: { - lasttime?: string | number - limit?: string | number - uid: string | number - } & RequestBaseConfig, - ): Promise - - export function user_followeds( - params: { - uid: string | number - lasttime?: string | number - limit?: string | number - } & RequestBaseConfig, - ): Promise - - export function user_follows( - params: { uid: string | number } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export function user_level(params: RequestBaseConfig): Promise - - export function user_playlist( - params: { uid: string | number } & MultiPageConfig & RequestBaseConfig, - ): Promise - - export const enum UserRecordType { - all = 0, - weekly = 1, - } - - export function user_record( - params: { uid: string | number; type?: UserRecordType } & RequestBaseConfig, - ): Promise - - export function user_subcount(params: RequestBaseConfig): Promise - - export function user_update( - params: { - birthday: string - city: string - gender: string - nickname: string - province: string - signature: string - } & RequestBaseConfig, - ): Promise - - export function video_category_list( - params: MultiPageConfig & RequestBaseConfig, - ): Promise - - export function video_detail( - params: { id: string } & RequestBaseConfig, - ): Promise - - export function video_detail_info( - params: { vid: string } & RequestBaseConfig, - ): Promise - - export function video_group( - params: { id: string; offset?: string | number } & RequestBaseConfig, - ): Promise - - export function video_group_list(params: RequestBaseConfig): Promise - - export function video_sub( - params: { t?: SubAction; id: string } & RequestBaseConfig, - ): Promise - - export function video_timeline_all( - params: { offset?: string | number } & RequestBaseConfig, - ): Promise - - export function video_timeline_recommend( - params: { offset?: string | number } & RequestBaseConfig, - ): Promise - - export function video_url( - params: { id: string | number; res?: number } & RequestBaseConfig, - ): Promise - - export function weblog( - params: { data?: { [index: string]: unknown } } & RequestBaseConfig, - ): Promise -} diff --git a/module/audio_match.js b/module/audio_match.js new file mode 100644 index 0000000..a9a2cfa --- /dev/null +++ b/module/audio_match.js @@ -0,0 +1,19 @@ +const realData = + 'eJx10mtIU2EcBvDtnCwNMfO2klUSmSQ5ZugKW/v/0TIjJVdhDStbXpqXrhY5Kwhtrcwiut9VSqMUMxX6IFqsD92sD1YgWGHRBcowKrpnPa/v+drg4flt572ds2PQ6XQut7MwJ940w2TOyS0pzF+/BV/MJrNO+3TVLOHUzKx5iw3/H5uZ7yxegct3tTl7Cr6QEa0gZ/dZOFsvfe5YHe1D+yFZxpncqEj/cCdwoirdVxHNnZrX3xygU5g7Eh6I9uOx8Ch4y9FQjlKkDz1pYrFXIJLUOovFGcYivqJgXqaXDqu7Rzc0XzmZxG81B/fF8wRVusn2jN5rDnwca8tFhyAJP4L4qiI9vX8cWzEmVKzT/46qxNpIdZOZz2HNcHhSkZ3D4AjYFpfGFkX6+dB+FvcSBe/SWbkLPVnEOJ1DFelXxVVci/Wj4TsBLhrQ/LGoaU4HxsTA28L76Cc8Dfau/U6F6FgkyBDDJar0g8tesmOvOHioWeXXmme6l3MLbIIre6wciU5E2t/k8WVxHfHvuUWXsH4SPCv1NW1Cz0aivgYO34vw1AEvi3MlIw0xHl6JNVPEGW41UJsqPaXYYTuEnotMdHwYfv7CFR/i+aXmrY5wrlSkEwr+0EJ0GvLmdw4/RS9Amj93UAbGZMIF40ezE3PtcG/yBWrT3L6oh66hFyMXK4xsUKT7aufzapxnFTwiNc3Wis5Bdm+OYCvmOuHj/ZeoQPOI00PUrUjXpG+kMFU61tFFDvQaZOn5DH4mzoLw4Hsaj14rzu/K4jF66fSWTnJinW3wBvcveqjZN3iFjKp0qKuF1mi21keST3NtTcbwu1eG3Dussr9eemljLIco0tVH7HwA493wOr+FlIjfy+GvkR4uwfjt4v/6G8K3NX8K38lt6B1ISa+Bv2O8Fy69foZOovci2S4Lr1aku4P9OEWVTt9wgMQ7exgJ8JXyI0W694WFyuBjcH75XyrEXsfhg+ZSvqZIf/Lct8Wp0md2tJN4PifEfjcm8gu02Ptbj459eum8eg8bFWlLXTb/A+uo9bM=' +module.exports = (query, request) => { + query.cookie.os = 'pc' + const data = { + algorithmCode: 'shazam_v2', + times: 1, + sessionId: 'C999431ACDC84EDBB984763654E6F8D7', + duration: 3.3066249999999995, + from: 'recognize-song', + rawdata: realData, + } + return request('POST', `https://music.163.com/api/music/audio/match`, data, { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }) +} diff --git a/module/calendar.js b/module/calendar.js new file mode 100644 index 0000000..61bc387 --- /dev/null +++ b/module/calendar.js @@ -0,0 +1,12 @@ +module.exports = (query, request) => { + const data = { + startTime: query.startTime || Date.now(), + endTime: query.endTime || Date.now(), + } + return request('POST', `https://music.163.com/api/mcalendar/detail`, data, { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }) +} diff --git a/module/comment_new.js b/module/comment_new.js new file mode 100644 index 0000000..61449ab --- /dev/null +++ b/module/comment_new.js @@ -0,0 +1,34 @@ +// 评论 + +module.exports = (query, request) => { + query.cookie.os = 'pc' + query.type = { + 0: 'R_SO_4_', // 歌曲 + 1: 'R_MV_5_', // MV + 2: 'A_PL_0_', // 歌单 + 3: 'R_AL_3_', // 专辑 + 4: 'A_DJ_1_', // 电台, + 5: 'R_VI_62_', // 视频 + 6: 'A_EV_2_', // 动态 + }[query.type] + const threadId = query.type + query.id + const data = { + threadId: threadId, //'R_SO_4_863481066', + pageNo: query.pageNo || 1, + showInner: query.showInner || true, + pageSize: query.pageSize || 20, + sortType: query.sortType || 1, //1:按推荐排序,2:按热度排序,3:按时间排序 + } + return request( + 'POST', + `https://music.163.com/api/v2/resource/comments`, + data, + { + crypto: 'eapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + url: '/api/v2/resource/comments', + }, + ) +} diff --git a/module/playlist_create.js b/module/playlist_create.js index 7790ae1..8a1ae26 100644 --- a/module/playlist_create.js +++ b/module/playlist_create.js @@ -5,8 +5,9 @@ module.exports = (query, request) => { const data = { name: query.name, privacy: query.privacy, //0 为普通歌单,10 为隐私歌单 + type: query.type || 'NORMAL', // NORMAL|VIDEO } - return request('POST', `https://music.163.com/weapi/playlist/create`, data, { + return request('POST', `https://music.163.com/api/playlist/create`, data, { crypto: 'weapi', cookie: query.cookie, proxy: query.proxy, diff --git a/module/playlist_mylike.js b/module/playlist_mylike.js new file mode 100644 index 0000000..779b507 --- /dev/null +++ b/module/playlist_mylike.js @@ -0,0 +1,17 @@ +module.exports = (query, request) => { + const data = { + time: query.time || '-1', + limit: query.limit || '12', + } + return request( + 'POST', + `https://music.163.com/api/mlog/playlist/mylike/bytime/get`, + data, + { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }, + ) +} diff --git a/module/playlist_track_add.js b/module/playlist_track_add.js new file mode 100644 index 0000000..97a3c1d --- /dev/null +++ b/module/playlist_track_add.js @@ -0,0 +1,20 @@ +module.exports = async (query, request) => { + query.cookie.os = 'pc' + query.ids = query.ids || '' + const data = { + id: query.pid, + tracks: JSON.stringify( + query.ids.split(',').map((item) => { + return { type: 3, id: item } + }), + ), + } + console.log(data) + + return request('POST', `http://music.163.com/api/playlist/track/add`, data, { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }) +} diff --git a/module/playlist_track_delete.js b/module/playlist_track_delete.js new file mode 100644 index 0000000..45cb0ae --- /dev/null +++ b/module/playlist_track_delete.js @@ -0,0 +1,26 @@ +// 收藏单曲到歌单 从歌单删除歌曲 + +module.exports = async (query, request) => { + query.cookie.os = 'pc' + query.ids = query.ids || '' + const data = { + id: query.id, + tracks: JSON.stringify( + query.ids.split(',').map((item) => { + return { type: 3, id: item } + }), + ), + } + + return request( + 'POST', + `http://music.163.com/api/playlist/track/delete`, + data, + { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }, + ) +} diff --git a/module/user_safe.js b/module/playlist_video_recent.js similarity index 69% rename from module/user_safe.js rename to module/playlist_video_recent.js index 97a530a..1430211 100644 --- a/module/user_safe.js +++ b/module/playlist_video_recent.js @@ -1,10 +1,8 @@ module.exports = (query, request) => { - const data = { - - } + const data = {} return request( 'POST', - `https://music.163.com/api/usersafe/loginprotect/status/get`, + `https://music.163.com/api/playlist/video/recent`, data, { crypto: 'weapi', diff --git a/module/user_binding.js b/module/user_binding.js index d266737..559b4b5 100644 --- a/module/user_binding.js +++ b/module/user_binding.js @@ -1,7 +1,5 @@ module.exports = (query, request) => { - const data = { - - } + const data = {} return request( 'POST', `https://music.163.com/api/v1/user/bindings/${query.uid}`, diff --git a/package.json b/package.json index f800d0b..b9ae40d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "NeteaseCloudMusicApi", - "version": "3.41.2", + "version": "3.42.0", "description": "网易云音乐 NodeJS 版 API", "scripts": { "start": "node app.js", @@ -15,7 +15,7 @@ "网易云音乐nodejs" ], "main": "main.js", - "types": "main.d.ts", + "types": "./interface.d.ts", "husky": { "hooks": { "pre-commit": "lint-staged"