24 | ├── output.js
├── NeteaseCloudMusicApi
├── docs
│ ├── .nojekyll
│ ├── icon.png
│ ├── favicon.ico
│ ├── _coverpage.md
│ ├── index.html
│ └── sw.js
├── .npmignore
├── .travis.yml
├── .gitignore
├── static
│ ├── mv.png
│ ├── 专辑.png
│ ├── 搜索.png
│ ├── 歌词.png
│ ├── 登录.png
│ ├── docs.png
│ ├── like.png
│ ├── 推荐歌单.png
│ ├── 推荐歌曲.png
│ ├── 歌单详情.png
│ ├── 用户歌单.png
│ ├── artists.png
│ ├── banner.png
│ ├── comment.png
│ ├── fm_trash.png
│ ├── play_mv.png
│ ├── top_list.png
│ ├── 音乐 url.png
│ ├── new_albums.png
│ ├── songDetail.png
│ ├── artist_album.png
│ ├── likeSuccess.png
│ ├── personal_fm.png
│ ├── screenshot1.png
│ ├── screenshot2.png
│ ├── signinError.png
│ ├── signinSuccess.png
│ ├── top_artists.png
│ └── top_playlist.png
├── util
│ ├── index.js
│ ├── crypto.js
│ └── request.js
├── issue_template.md
├── module
│ ├── banner.js
│ ├── event.js
│ ├── toplist.js
│ ├── logout.js
│ ├── personal_fm.js
│ ├── user_subcount.js
│ ├── weblog.js
│ ├── album.js
│ ├── artists.js
│ ├── album_newest.js
│ ├── dj_catelist.js
│ ├── personalized_mv.js
│ ├── playlist_hot.js
│ ├── toplist_detail.js
│ ├── dj_recommend.js
│ ├── playlist_catlist.js
│ ├── user_detail.js
│ ├── login_refresh.js
│ ├── personalized_djprogram.js
│ ├── lyric.js
│ ├── personalized_privatecontent.js
│ ├── recommend_resource.js
│ ├── dj_detail.js
│ ├── mv_detail.js
│ ├── likelist.js
│ ├── simi_mv.js
│ ├── artist_desc.js
│ ├── search_hot.js
│ ├── dj_program_detail.js
│ ├── simi_artist.js
│ ├── user_audio.js
│ ├── video_detail.js
│ ├── personalized_newsong.js
│ ├── user_event.js
│ ├── follow.js
│ ├── mv_url.js
│ ├── playlist_create.js
│ ├── fm_trash.js
│ ├── user_cloud.js
│ ├── user_cloud_search.js
│ ├── dj_sub.js
│ ├── user_record.js
│ ├── user_dj.js
│ ├── video_url.js
│ ├── playlist_detail.js
│ ├── recommend_songs.js
│ ├── search_multimatch.js
│ ├── video_sub.js
│ ├── dj_paygift.js
│ ├── related_allvideo.js
│ ├── top_mv.js
│ ├── toplist_artist.js
│ ├── mv_first.js
│ ├── top_artists.js
│ ├── album_sublist.js
│ ├── artist_sublist.js
│ ├── dj_sublist.js
│ ├── playlist_subscribe.js
│ ├── user_playlist.js
│ ├── search_suggest.js
│ ├── simi_song.js
│ ├── simi_user.js
│ ├── artist_album.js
│ ├── simi_playlist.js
│ ├── artist_mv.js
│ ├── mv_sublist.js
│ ├── program_recommend.js
│ ├── user_followeds.js
│ ├── mv_sub.js
│ ├── user_follows.js
│ ├── personalized.js
│ ├── artist_sub.js
│ ├── playlist_tracks.js
│ ├── top_album.js
│ ├── comment_dj.js
│ ├── comment_mv.js
│ ├── comment_album.js
│ ├── comment_music.js
│ ├── comment_playlist.js
│ ├── comment_video.js
│ ├── send_text.js
│ ├── video_group.js
│ ├── send_playlist.js
│ ├── top_song.js
│ ├── song_detail.js
│ ├── login.js
│ ├── search.js
│ ├── dj_hot.js
│ ├── dj_program.js
│ ├── song_url.js
│ ├── top_playlist_highquality.js
│ ├── login_cellphone.js
│ ├── resource_like.js
│ ├── user_update.js
│ ├── like.js
│ ├── daily_signin.js
│ ├── playlist_update.js
│ ├── scrobble.js
│ ├── comment_hot.js
│ ├── dj_recommend_type.js
│ ├── comment_like.js
│ ├── top_playlist.js
│ ├── login_status.js
│ ├── comment.js
│ ├── artist_list.js
│ ├── check_music.js
│ ├── top_list.js
│ └── related_playlist.js
├── Dockerfile
├── app.test.js
├── test
│ ├── album.test.js
│ ├── comment.test.js
│ ├── lyric.test.js
│ ├── music_url.test.js
│ ├── search.test.js
│ └── login.test.js
├── package.json
├── public
│ ├── test.html
│ └── index.html
├── LICENSE
├── app.js
├── README.MD
└── CHANGELOG.MD
├── server
├── server.conf
├── config.js
├── package.json
└── index.js
├── src
├── api
│ ├── config.js
│ ├── recommend.js
│ ├── recNewMusic.js
│ ├── recSongList.js
│ ├── singer.js
│ ├── songs.js
│ ├── rank.js
│ ├── music.js
│ ├── songList.js
│ └── search.js
├── assets
│ ├── back.png
│ ├── clear.png
│ ├── down.png
│ ├── lazy3.png
│ ├── list.png
│ ├── list2.png
│ ├── logo.png
│ ├── loop.png
│ ├── next.png
│ ├── pause.png
│ ├── play.png
│ ├── play2.png
│ ├── creator.png
│ ├── delete.png
│ ├── loading.png
│ ├── pause2.png
│ ├── playall.png
│ ├── random.png
│ ├── search.png
│ ├── BgImage1.png
│ ├── BgImage2.png
│ ├── BgImage3.png
│ ├── downWhite.png
│ ├── playcount.png
│ ├── previous.png
│ ├── sequence.png
│ └── listPlayIcon.png
├── common
│ ├── styles
│ │ └── variable.styl
│ └── js
│ │ ├── axios.js
│ │ ├── dom.js
│ │ ├── cache.js
│ │ ├── creatListData.js
│ │ └── singerTypeData.js
├── store
│ ├── actions.js
│ ├── state.js
│ ├── mutations.js
│ ├── getters.js
│ └── index.js
├── main.js
├── base
│ ├── gridLists.vue
│ ├── popup.vue
│ ├── loading.vue
│ ├── myScroll.vue
│ ├── playList.vue
│ ├── songList.vue
│ ├── MusicList.vue
│ ├── progressBar.vue
│ ├── category.vue
│ └── slider.vue
├── components
│ ├── tab
│ │ └── tab.vue
│ ├── singer
│ │ └── singer.vue
│ ├── songs
│ │ └── songs.vue
│ ├── recommend
│ │ └── recommend.vue
│ ├── rank
│ │ └── rank.vue
│ └── songListPage
│ │ └── songListPage.vue
├── App.vue
└── router.js
├── .browserslistrc
├── babel.config.js
├── postcss.config.js
├── public
├── favicon.ico
└── index.html
├── .editorconfig
├── README.md
├── .gitignore
├── .eslintrc.js
├── vue.config.js
└── package.json
/output.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/docs/.nojekyll:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/server/server.conf:
--------------------------------------------------------------------------------
1 | port=80
2 | page_path=../dist
--------------------------------------------------------------------------------
/src/api/config.js:
--------------------------------------------------------------------------------
1 | export const STATUS_TEXT = 'OK'
--------------------------------------------------------------------------------
/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 1%
2 | last 2 versions
3 | not ie <= 8
4 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/.npmignore:
--------------------------------------------------------------------------------
1 | static
2 | docs
3 | node_modules
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/app'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 |
3 | node_js:
4 | - 6.2
5 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | autoprefixer: {}
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/src/assets/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/back.png
--------------------------------------------------------------------------------
/src/assets/clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/clear.png
--------------------------------------------------------------------------------
/src/assets/down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/down.png
--------------------------------------------------------------------------------
/src/assets/lazy3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/lazy3.png
--------------------------------------------------------------------------------
/src/assets/list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/list.png
--------------------------------------------------------------------------------
/src/assets/list2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/list2.png
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/logo.png
--------------------------------------------------------------------------------
/src/assets/loop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/loop.png
--------------------------------------------------------------------------------
/src/assets/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/next.png
--------------------------------------------------------------------------------
/src/assets/pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/pause.png
--------------------------------------------------------------------------------
/src/assets/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/play.png
--------------------------------------------------------------------------------
/src/assets/play2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/play2.png
--------------------------------------------------------------------------------
/src/assets/creator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/creator.png
--------------------------------------------------------------------------------
/src/assets/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/delete.png
--------------------------------------------------------------------------------
/src/assets/loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/loading.png
--------------------------------------------------------------------------------
/src/assets/pause2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/pause2.png
--------------------------------------------------------------------------------
/src/assets/playall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/playall.png
--------------------------------------------------------------------------------
/src/assets/random.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/random.png
--------------------------------------------------------------------------------
/src/assets/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/search.png
--------------------------------------------------------------------------------
/src/assets/BgImage1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/BgImage1.png
--------------------------------------------------------------------------------
/src/assets/BgImage2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/BgImage2.png
--------------------------------------------------------------------------------
/src/assets/BgImage3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/BgImage3.png
--------------------------------------------------------------------------------
/src/assets/downWhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/downWhite.png
--------------------------------------------------------------------------------
/src/assets/playcount.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/playcount.png
--------------------------------------------------------------------------------
/src/assets/previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/previous.png
--------------------------------------------------------------------------------
/src/assets/sequence.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/sequence.png
--------------------------------------------------------------------------------
/src/assets/listPlayIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/src/assets/listPlayIcon.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | *.log
4 |
5 | .idea/
6 | package-lock.json
7 |
8 | .vscode
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/docs/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/docs/icon.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/mv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/mv.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/专辑.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/专辑.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/搜索.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/搜索.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/歌词.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/歌词.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/登录.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/登录.png
--------------------------------------------------------------------------------
/src/common/styles/variable.styl:
--------------------------------------------------------------------------------
1 | $themeColor = #EC3A3E
2 | $BgGray = #FAFAFA
3 | $fontGray = #666
4 | $miniPlayerHeight = 45px
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/docs/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/docs/favicon.ico
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/docs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/docs.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/like.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/like.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/推荐歌单.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/推荐歌单.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/推荐歌曲.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/推荐歌曲.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/歌单详情.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/歌单详情.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/用户歌单.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/用户歌单.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/artists.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/artists.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/banner.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/comment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/comment.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/fm_trash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/fm_trash.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/play_mv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/play_mv.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/top_list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/top_list.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/音乐 url.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/音乐 url.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/new_albums.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/new_albums.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/songDetail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/songDetail.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/artist_album.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/artist_album.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/likeSuccess.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/likeSuccess.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/personal_fm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/personal_fm.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/screenshot1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/screenshot1.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/screenshot2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/screenshot2.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/signinError.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/signinError.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/signinSuccess.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/signinSuccess.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/top_artists.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/top_artists.png
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/static/top_playlist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TianXiaoShang/iDoMusic/HEAD/NeteaseCloudMusicApi/static/top_playlist.png
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | [*.{js,jsx,ts,tsx,vue}]
2 | indent_style = space
3 | indent_size = 2
4 | trim_trailing_whitespace = true
5 | insert_final_newline = true
6 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/util/index.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | toBoolean(val) {
3 | if (val === '') return val
4 | return val === 'true' || val == '1'
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/src/api/recommend.js:
--------------------------------------------------------------------------------
1 | import myAxios from "common/js/axios"
2 |
3 | export default function getBannerData(){
4 | var url = '/api/banner';
5 | return myAxios(url)
6 | }
--------------------------------------------------------------------------------
/src/api/recNewMusic.js:
--------------------------------------------------------------------------------
1 | import myAxios from "common/js/axios";
2 |
3 | export default function getRecNewMusicData(){
4 | let url = 'api/personalized/newsong'
5 | return myAxios(url)
6 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/issue_template.md:
--------------------------------------------------------------------------------
1 | ### 环境
2 | 系统:
3 |
4 | nodejs 版本:
5 |
6 | ### 出现问题
7 |
8 | ### 重现步骤
9 |
10 | ### 期待效果
11 |
12 | >重现步骤尽量详细,不能含糊不清
13 |
14 | >如果不是提建议,提 issues 如果不照着模版来将不会优先处理或直接关闭
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/banner.js:
--------------------------------------------------------------------------------
1 | // 首页轮播图
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/api/v2/banner/get`, {clientType: "pc"},
6 | {crypto: 'linuxapi', proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/event.js:
--------------------------------------------------------------------------------
1 | // 动态
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/v1/event/get`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/toplist.js:
--------------------------------------------------------------------------------
1 | // 所有榜单介绍
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/toplist`, {},
6 | {crypto: 'linuxapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/logout.js:
--------------------------------------------------------------------------------
1 | // 退出登录
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/logout`, {},
6 | {crypto: 'weapi', ua: 'pc', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/personal_fm.js:
--------------------------------------------------------------------------------
1 | // 私人FM
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/v1/radio/get`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/user_subcount.js:
--------------------------------------------------------------------------------
1 | // 收藏计数
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/subcount`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/weblog.js:
--------------------------------------------------------------------------------
1 | // 操作记录
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/feedback/weblog`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/docs/_coverpage.md:
--------------------------------------------------------------------------------
1 | # 网易云音乐 API
2 |
3 | > 网易云音乐 NodeJS 版 API
4 |
5 | - 全部接口已升级到最新
6 | - 具备登录接口
7 | - 更完善的文档
8 |
9 |
10 | [GitHub](https://github.com/Binaryify/NeteaseCloudMusicApi)
11 | [Get Started](#neteasecloudmusicapi)
12 |
13 | 
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/album.js:
--------------------------------------------------------------------------------
1 | // 专辑内容
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/v1/album/${query.id}`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/artists.js:
--------------------------------------------------------------------------------
1 | // 歌手单曲
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/v1/artist/${query.id}`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/src/store/actions.js:
--------------------------------------------------------------------------------
1 | export const selectPlay = function ({commit, state},{list,index,id}){
2 | commit('set_playList',list)
3 | commit('set_currentIndex',index)
4 | commit('set_showPlayer',true)
5 | commit('set_playStatus',true)
6 | commit('set_musicId', id)
7 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/album_newest.js:
--------------------------------------------------------------------------------
1 | // 最新专辑
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/api/discovery/newAlbum`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
9 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/dj_catelist.js:
--------------------------------------------------------------------------------
1 | // 电台分类列表
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/djradio/category/get`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/personalized_mv.js:
--------------------------------------------------------------------------------
1 | // 推荐MV
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/personalized/mv`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/playlist_hot.js:
--------------------------------------------------------------------------------
1 | // 热门歌单分类
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/playlist/hottags`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/toplist_detail.js:
--------------------------------------------------------------------------------
1 | // 所有榜单内容摘要
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/toplist/detail`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/dj_recommend.js:
--------------------------------------------------------------------------------
1 | // 精选电台
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/djradio/recommend/v1`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
9 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/playlist_catlist.js:
--------------------------------------------------------------------------------
1 | // 全部歌单分类
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/playlist/catalogue`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/user_detail.js:
--------------------------------------------------------------------------------
1 | // 用户详情
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/v1/user/detail/${query.uid}`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/login_refresh.js:
--------------------------------------------------------------------------------
1 | // 登录刷新
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/login/token/refresh`, {},
6 | {crypto: 'weapi', ua: 'pc', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/personalized_djprogram.js:
--------------------------------------------------------------------------------
1 | // 推荐电台
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/personalized/djprogram`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # idomusic
2 |
3 | ## Project setup
4 | ```
5 | npm install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```
10 | npm run serve
11 | ```
12 |
13 | ### open Netease Cloud api
14 | ```
15 | cd NeteaseCloudMusicApi
16 | node app.js
17 | ```
18 |
19 |
20 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/lyric.js:
--------------------------------------------------------------------------------
1 | // 歌词
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/song/lyric?os=osx&id=${query.id}&lv=-1&kv=-1&tv=-1`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/personalized_privatecontent.js:
--------------------------------------------------------------------------------
1 | // 独家放送
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/personalized/privatecontent`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/recommend_resource.js:
--------------------------------------------------------------------------------
1 | // 每日推荐歌单
2 |
3 | module.exports = (query, request) => {
4 | return request(
5 | 'POST', `https://music.163.com/weapi/v1/discovery/recommend/resource`, {},
6 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
7 | )
8 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 |
14 | # Editor directories and files
15 | .idea
16 | .vscode
17 | *.suo
18 | *.ntvs*
19 | *.njsproj
20 | *.sln
21 | *.sw*
22 |
--------------------------------------------------------------------------------
/src/api/recSongList.js:
--------------------------------------------------------------------------------
1 | import myAxios from "common/js/axios"
2 |
3 | export default function getRecSongListData(limit,before){
4 | var url = 'api/personalized' //获取推荐歌单地址
5 | // var url = 'api/top/playlist/highquality'
6 | var params = {
7 | limit:6
8 | }
9 | return myAxios(url,params)
10 | }
--------------------------------------------------------------------------------
/src/api/singer.js:
--------------------------------------------------------------------------------
1 | import myAxios from "common/js/axios"
2 |
3 | export default function getSingerData (cat){
4 | var url = "api/artist/list"
5 | url = cat == undefined ? "api/top/artists" : url //默认获取热门歌手
6 | var params = {
7 | limit:100,
8 | cat
9 | }
10 | return myAxios(url,params)
11 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/dj_detail.js:
--------------------------------------------------------------------------------
1 | // 电台详情
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | id: query.rid
6 | }
7 | return request(
8 | 'POST', `https://music.163.com/weapi/djradio/get`, data,
9 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
10 | )
11 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/mv_detail.js:
--------------------------------------------------------------------------------
1 | // MV详情
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | id: query.mvid
6 | }
7 | return request(
8 | 'POST', `https://music.163.com/weapi/mv/detail`, data,
9 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
10 | )
11 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM mhart/alpine-node:9
2 |
3 | WORKDIR /app
4 | COPY . /app
5 |
6 | RUN rm -f package-lock.json \
7 | ; rm -rf .idea \
8 | ; rm -rf node_modules \
9 | ; npm config set registry "https://registry.npm.taobao.org/" \
10 | && npm install
11 |
12 | EXPOSE 3000
13 | CMD ["node", "app.js"]
14 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/likelist.js:
--------------------------------------------------------------------------------
1 | // 喜欢的歌曲(无序)
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | uid: query.uid
6 | }
7 | return request(
8 | 'POST', `https://music.163.com/weapi/song/like/get`, data,
9 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
10 | )
11 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/simi_mv.js:
--------------------------------------------------------------------------------
1 | // 相似MV
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | mvid: query.mvid
6 | }
7 | return request(
8 | 'POST', `https://music.163.com/weapi/discovery/simiMV`, data,
9 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
10 | )
11 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/artist_desc.js:
--------------------------------------------------------------------------------
1 | // 歌手介绍
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | id: query.id
6 | }
7 | return request(
8 | 'POST', `https://music.163.com/weapi/artist/introduction`, data,
9 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
10 | )
11 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/search_hot.js:
--------------------------------------------------------------------------------
1 | // 热门搜索
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | type: 1111
6 | }
7 | return request(
8 | 'POST', `https://music.163.com/weapi/search/hot`, data,
9 | {crypto: 'weapi', ua: 'mobile', cookie: query.cookie, proxy: query.proxy}
10 | )
11 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/dj_program_detail.js:
--------------------------------------------------------------------------------
1 | // 电台节目详情
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | id: query.id
6 | }
7 | return request(
8 | 'POST', `https://music.163.com/weapi/dj/program/detail`, data,
9 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
10 | )
11 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/simi_artist.js:
--------------------------------------------------------------------------------
1 | // 相似歌手
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | artistid: query.id
6 | }
7 | return request(
8 | 'POST', `https://music.163.com/weapi/discovery/simiArtist`, data,
9 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
10 | )
11 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/user_audio.js:
--------------------------------------------------------------------------------
1 | // 用户创建的电台
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | userId: query.uid
6 | }
7 | return request(
8 | 'POST', `https://music.163.com/weapi/djradio/get/byuser`, data,
9 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
10 | )
11 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/video_detail.js:
--------------------------------------------------------------------------------
1 | // 视频详情
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | id: query.id
6 | }
7 | return request(
8 | 'POST', `https://music.163.com/weapi/cloudvideo/v1/video/detail`, data,
9 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
10 | )
11 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/personalized_newsong.js:
--------------------------------------------------------------------------------
1 | // 推荐新歌
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | type: "recommend"
6 | }
7 | return request(
8 | 'POST', `https://music.163.com/weapi/personalized/newsong`, data,
9 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
10 | )
11 | }
--------------------------------------------------------------------------------
/server/config.js:
--------------------------------------------------------------------------------
1 | var fs = require('fs')
2 |
3 | var conf = fs.readFileSync('./server.conf')
4 |
5 | var configArr = conf.toString().split('\n')
6 |
7 | var globalConfig = {}
8 |
9 | for(var i = 0; i < configArr.length; i ++) {
10 | globalConfig[configArr[i].split('=')[0]] = configArr[i].split('=')[1].trim()
11 | }
12 |
13 | module.exports = globalConfig
--------------------------------------------------------------------------------
/src/store/state.js:
--------------------------------------------------------------------------------
1 | const state = {
2 | showPlayer:false, //窗口状态
3 | playList:[], //当前列表的原始所有歌曲数据
4 | currentIndex:-1, //当前播放的歌曲在列表中的index
5 | playStatus:false, //播放暂停与否
6 | mode:'sequence', //播放模式
7 | sequenceList:[], //播放列表,主要用于储存随机播放列表
8 | musicId:'' //当前播放的歌曲id
9 | }
10 | export default state
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/user_event.js:
--------------------------------------------------------------------------------
1 | // 用户动态
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | time: -1,
6 | getcounts: true
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/event/get/${query.uid}`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/follow.js:
--------------------------------------------------------------------------------
1 | // 关注与取消关注用户
2 |
3 | module.exports = (query, request) => {
4 | query.cookie.os = 'pc'
5 | query.t = (query.t == 1 ? 'follow' : 'delfollow')
6 | return request(
7 | 'POST', `https://music.163.com/weapi/user/${query.t}/${query.id}`, {},
8 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
9 | )
10 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/mv_url.js:
--------------------------------------------------------------------------------
1 | // MV链接
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | id: query.id,
6 | r: query.res || 1080
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/song/enhance/play/mv/url`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/playlist_create.js:
--------------------------------------------------------------------------------
1 | // 创建歌单
2 |
3 | module.exports = (query, request) => {
4 | query.cookie.os = 'pc'
5 | const data = {
6 | name: query.name
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/playlist/create`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/fm_trash.js:
--------------------------------------------------------------------------------
1 | // 垃圾桶
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | songId: query.id
6 | }
7 | return request(
8 | 'POST', `https://music.163.com/weapi/radio/trash/add?alg=RT&songId=${query.id}&time=${query.time || 25}`, data,
9 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
10 | )
11 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/user_cloud.js:
--------------------------------------------------------------------------------
1 | // 云盘数据
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | limit: query.limit || 200,
6 | offset: query.offset || 0
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/v1/cloud/get`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/user_cloud_search.js:
--------------------------------------------------------------------------------
1 | // 云盘数据详情(暂时不要使用)
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | byids: query.id,
6 | id: query.id
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/v1/cloud/get/byids`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/dj_sub.js:
--------------------------------------------------------------------------------
1 | // 订阅与取消电台
2 |
3 | module.exports = (query, request) => {
4 | query.t = (query.t == 1 ? 'sub' : 'unsub')
5 | const data = {
6 | id: query.rid
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/djradio/${query.t}`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/user_record.js:
--------------------------------------------------------------------------------
1 | // 听歌排行
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | uid: query.uid,
6 | type: query.type || 1 // 1: 最近一周, 0: 所有时间
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/v1/play/record`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/user_dj.js:
--------------------------------------------------------------------------------
1 | // 用户电台节目
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | limit: query.limit || 30,
6 | offset: query.offset || 0
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/dj/program/${query.uid}`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/video_url.js:
--------------------------------------------------------------------------------
1 | // 视频链接
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | ids: '["' + query.id + '"]',
6 | resolution: query.res || 1080
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/cloudvideo/playurl`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/playlist_detail.js:
--------------------------------------------------------------------------------
1 | // 歌单详情
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | id: query.id,
6 | n: 100000,
7 | s: query.s || 8
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/v3/playlist/detail`, data,
11 | {crypto: 'linuxapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/recommend_songs.js:
--------------------------------------------------------------------------------
1 | // 每日推荐歌曲
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | limit: 20,
6 | offset: 0,
7 | total: true
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/v1/discovery/recommend/songs`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/search_multimatch.js:
--------------------------------------------------------------------------------
1 | // 多类型搜索
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | type: query.type || 1,
6 | s: query.keywords || ''
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/search/suggest/multimatch`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/video_sub.js:
--------------------------------------------------------------------------------
1 | // 收藏与取消收藏视频
2 |
3 | module.exports = (query, request) => {
4 | query.t = (query.t == 1 ? 'sub' : 'unsub')
5 | const data = {
6 | id: query.id
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/cloudvideo/video/${query.t}`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/dj_paygift.js:
--------------------------------------------------------------------------------
1 | // 付费电台
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | limit: query.limit || 10,
6 | offset: query.offset || 0
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/djradio/home/paygift/list?_nmclfl=1`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/related_allvideo.js:
--------------------------------------------------------------------------------
1 | // 相关视频
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | id: query.id,
6 | type: (/^\d+$/.test(query.id)) ? 0 : 1
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/cloudvideo/v1/allvideo/rcmd`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/top_mv.js:
--------------------------------------------------------------------------------
1 | // MV排行榜
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | limit: query.limit || 30,
6 | offset: query.offset || 0,
7 | total: true
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/mv/toplist`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/toplist_artist.js:
--------------------------------------------------------------------------------
1 | // 歌手榜
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | type: 1,
6 | limit: 100,
7 | offset: 0,
8 | total: true
9 | }
10 | return request(
11 | 'POST', `https://music.163.com/weapi/toplist/artist`, data,
12 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
13 | )
14 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/mv_first.js:
--------------------------------------------------------------------------------
1 | // 最新MV
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | // 'offset': query.offset || 0,
6 | limit: query.limit || 30,
7 | total: true
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/mv/first`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/top_artists.js:
--------------------------------------------------------------------------------
1 | // 热门歌手
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | limit: query.limit || 50,
6 | offset: query.offset || 0,
7 | total: true
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/artist/top`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "server",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "express": "^4.16.4"
13 | },
14 | "devDependencies": {
15 | "http-proxy-middleware": "^0.19.1"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/album_sublist.js:
--------------------------------------------------------------------------------
1 | // 已收藏专辑列表
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | limit: query.limit || 25,
6 | offset: query.offset || 0,
7 | total: true
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/album/sublist`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/artist_sublist.js:
--------------------------------------------------------------------------------
1 | // 关注歌手列表
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | limit: query.limit || 25,
6 | offset: query.offset || 0,
7 | total: true
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/artist/sublist`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/dj_sublist.js:
--------------------------------------------------------------------------------
1 | // 订阅电台列表
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | limit: query.limit || 30,
6 | offset: query.offset || 0,
7 | total: true
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/djradio/get/subed`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/playlist_subscribe.js:
--------------------------------------------------------------------------------
1 | // 收藏与取消收藏歌单
2 |
3 | module.exports = (query, request) => {
4 | query.t = (query.t == 1 ? 'subscribe' : 'unsubscribe')
5 | const data = {
6 | id: query.id
7 | }
8 | return request(
9 | 'POST', `https://music.163.com/weapi/playlist/${query.t}`, data,
10 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/user_playlist.js:
--------------------------------------------------------------------------------
1 | // 用户歌单
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | uid: query.uid,
6 | limit: query.limit || 30,
7 | offset: query.offset || 0
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/user/playlist`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/search_suggest.js:
--------------------------------------------------------------------------------
1 | // 搜索建议
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | s: query.keywords || ''
6 | }
7 | let type = query.type == 'mobile' ? 'keyword' : 'web'
8 | return request(
9 | 'POST', `https://music.163.com/weapi/search/suggest/` + type, data,
10 | { crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
11 | )
12 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/simi_song.js:
--------------------------------------------------------------------------------
1 | // 相似歌曲
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | songid: query.id,
6 | limit: query.limit || 50,
7 | offset: query.offset || 0
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/v1/discovery/simiSong`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/simi_user.js:
--------------------------------------------------------------------------------
1 | // 相似用户
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | songid: query.id,
6 | limit: query.limit || 50,
7 | offset: query.offset || 0
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/discovery/simiUser`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/artist_album.js:
--------------------------------------------------------------------------------
1 | // 歌手专辑列表
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | limit: query.limit || 30,
6 | offset: query.offset || 0,
7 | total: true
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/artist/albums/${query.id}`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/simi_playlist.js:
--------------------------------------------------------------------------------
1 | // 相似歌单
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | songid: query.id,
6 | limit: query.limit || 50,
7 | offset: query.offset || 0
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/discovery/simiPlaylist`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true
5 | },
6 | 'extends': [
7 | 'plugin:vue/essential',
8 | '@vue/standard'
9 | ],
10 | rules: {
11 | 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
12 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
13 | },
14 | parserOptions: {
15 | parser: 'babel-eslint'
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/artist_mv.js:
--------------------------------------------------------------------------------
1 | // 歌手相关MV
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | artistId: query.id,
6 | limit: query.limit,
7 | offset: query.offset,
8 | total: true
9 | }
10 | return request(
11 | 'POST', `https://music.163.com/weapi/artist/mvs`, data,
12 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
13 | )
14 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/mv_sublist.js:
--------------------------------------------------------------------------------
1 | // // 已收藏MV列表
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | limit: query.limit || 25,
6 | offset: query.offset || 0,
7 | total: true
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/cloudvideo/allvideo/sublist`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/program_recommend.js:
--------------------------------------------------------------------------------
1 | // 推荐节目
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | cateId: query.type,
6 | limit: query.limit || 10,
7 | offset: query.offset || 0
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/program/recommend/v1`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/user_followeds.js:
--------------------------------------------------------------------------------
1 | // 关注TA的人(粉丝)
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | userId: query.uid,
6 | limit: query.limit || 30,
7 | offset: query.offset || 0
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/user/getfolloweds`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/mv_sub.js:
--------------------------------------------------------------------------------
1 | // 收藏与取消收藏MV
2 |
3 | module.exports = (query, request) => {
4 | query.t = (query.t == 1 ? 'sub' : 'unsub')
5 | const data = {
6 | mvId: query.mvid,
7 | mvIds: '["' + query.mvid + '"]'
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/mv/${query.t}`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/user_follows.js:
--------------------------------------------------------------------------------
1 | // TA关注的人(关注)
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | offset: query.offset || 0,
6 | limit: query.limit || 30,
7 | order: true
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/user/getfollows/${query.uid}`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/personalized.js:
--------------------------------------------------------------------------------
1 | // 推荐歌单
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | limit: query.limit || 30,
6 | offset: query.limit || 0,
7 | total: true,
8 | n: 1000
9 | }
10 | return request(
11 | 'POST', `https://music.163.com/weapi/personalized/playlist`, data,
12 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
13 | )
14 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/artist_sub.js:
--------------------------------------------------------------------------------
1 | // 收藏与取消收藏歌手
2 |
3 | module.exports = (query, request) => {
4 | query.t = (query.t == 1 ? 'sub' : 'unsub')
5 | const data = {
6 | artistId: query.id,
7 | artistIds: '[' + query.id + ']'
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/artist/${query.t}`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/playlist_tracks.js:
--------------------------------------------------------------------------------
1 | // 收藏单曲到歌单 从歌单删除歌曲
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | op: query.op, // del,add
6 | pid: query.pid, // 歌单id
7 | trackIds: '[' + query.tracks + ']' // 歌曲id
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/playlist/manipulate/tracks`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/top_album.js:
--------------------------------------------------------------------------------
1 | // 新碟上架
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | area: query.type || 'ALL', // ALL,ZH,EA,KR,JP
6 | limit: query.limit || 50,
7 | offset: query.offset || 0,
8 | total: true
9 | }
10 | return request(
11 | 'POST', `https://music.163.com/weapi/album/new`, data,
12 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
13 | )
14 | }
--------------------------------------------------------------------------------
/src/common/js/axios.js:
--------------------------------------------------------------------------------
1 | import Axios from "axios"
2 |
3 | export default function myAxios(url,params){
4 | url = handle(params) ? url+= (url.indexOf('?') == -1 ? '?' : '&') + handle(params) : url
5 | return Axios.get(url)
6 | }
7 |
8 | function handle(params){
9 | var arr = [];
10 | for(var key in params){
11 | arr.push(params[key] == undefined ? '' :key + '=' + encodeURIComponent(params[key]))
12 | }
13 | return arr.join('&')
14 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/comment_dj.js:
--------------------------------------------------------------------------------
1 | // 电台评论
2 |
3 | module.exports = (query, request) => {
4 | query.cookie.os = 'pc'
5 | const data = {
6 | rid: query.id,
7 | limit: query.limit || 20,
8 | offset: query.offset || 0
9 | }
10 | return request(
11 | 'POST', `https://music.163.com/weapi/v1/resource/comments/A_DJ_1_${query.id}`, data,
12 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
13 | )
14 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/comment_mv.js:
--------------------------------------------------------------------------------
1 | // MV评论
2 |
3 | module.exports = (query, request) => {
4 | query.cookie.os = 'pc'
5 | const data = {
6 | rid: query.id,
7 | limit: query.limit || 20,
8 | offset: query.offset || 0
9 | }
10 | return request(
11 | 'POST', `https://music.163.com/weapi/v1/resource/comments/R_MV_5_${query.id}`, data,
12 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
13 | )
14 | }
--------------------------------------------------------------------------------
/server/index.js:
--------------------------------------------------------------------------------
1 | var express = require('express')
2 | var proxy = require('http-proxy-middleware')
3 | var globalConfig = require('./config')
4 |
5 | var app = new express()
6 |
7 | app.use('/', express.static(globalConfig.page_path,{maxAge:'1m'}))
8 | app.use('/api', proxy({
9 | target: 'http://localhost:3000',
10 | pathRewrite: {'/api': ''}
11 | }))
12 |
13 | app.listen(globalConfig.port, function () {
14 | console.log('服务器,启动!' + globalConfig.port)
15 | })
16 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/comment_album.js:
--------------------------------------------------------------------------------
1 | // 专辑评论
2 |
3 | module.exports = (query, request) => {
4 | query.cookie.os = 'pc'
5 | const data = {
6 | rid: query.id,
7 | limit: query.limit || 20,
8 | offset: query.offset || 0
9 | }
10 | return request(
11 | 'POST', `https://music.163.com/weapi/v1/resource/comments/R_AL_3_${query.id}`, data,
12 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
13 | )
14 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/comment_music.js:
--------------------------------------------------------------------------------
1 | // 歌曲评论
2 |
3 | module.exports = (query, request) => {
4 | query.cookie.os = 'pc'
5 | const data = {
6 | rid: query.id,
7 | limit: query.limit || 20,
8 | offset: query.offset || 0
9 | }
10 | return request(
11 | 'POST', `https://music.163.com/weapi/v1/resource/comments/R_SO_4_${query.id}`, data,
12 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
13 | )
14 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/comment_playlist.js:
--------------------------------------------------------------------------------
1 | // 歌单评论
2 |
3 | module.exports = (query, request) => {
4 | query.cookie.os = 'pc'
5 | const data = {
6 | rid: query.id,
7 | limit: query.limit || 20,
8 | offset: query.offset || 0
9 | }
10 | return request(
11 | 'POST', `https://music.163.com/weapi/v1/resource/comments/A_PL_0_${query.id}`, data,
12 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
13 | )
14 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/comment_video.js:
--------------------------------------------------------------------------------
1 | // 视频评论
2 |
3 | module.exports = (query, request) => {
4 | query.cookie.os = 'pc'
5 | const data = {
6 | rid: query.id,
7 | limit: query.limit || 20,
8 | offset: query.offset || 0
9 | }
10 | return request(
11 | 'POST', `https://music.163.com/weapi/v1/resource/comments/R_VI_62_${query.id}`, data,
12 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
13 | )
14 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/send_text.js:
--------------------------------------------------------------------------------
1 | // 私信
2 |
3 | module.exports = (query, request) => {
4 | query.cookie.os = 'pc'
5 | const data = {
6 | id: query.playlist,
7 | type: 'text',
8 | msg: query.msg,
9 | userIds: '[' + query.user_ids + ']'
10 | }
11 | return request(
12 | 'POST', `https://music.163.com/weapi/msg/private/send`, data,
13 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
14 | )
15 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/video_group.js:
--------------------------------------------------------------------------------
1 | // 视频链接
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | groupId: query.id,
6 | offset: query.offset || 0,
7 | needUrl: true,
8 | resolution: query.res || 1080
9 | }
10 | return request(
11 | 'POST', `https://music.163.com/weapi/videotimeline/videogroup/get`, data, {
12 | crypto: 'weapi',
13 | cookie: query.cookie,
14 | proxy: query.proxy
15 | }
16 | )
17 | }
18 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/send_playlist.js:
--------------------------------------------------------------------------------
1 | // 私信歌单
2 |
3 | module.exports = (query, request) => {
4 | query.cookie.os = 'pc'
5 | const data = {
6 | id: query.playlist,
7 | type: 'playlist',
8 | msg: query.msg,
9 | userIds: '[' + query.user_ids + ']'
10 | }
11 | return request(
12 | 'POST', `https://music.163.com/weapi/msg/private/send`, data,
13 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
14 | )
15 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/top_song.js:
--------------------------------------------------------------------------------
1 | // 新歌速递
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | areaId: query.type || 0, // 全部:0 华语:7 欧美:96 日本:8 韩国:16
6 | // limit: query.limit || 100,
7 | // offset: query.offset || 0,
8 | total: true
9 | }
10 | return request(
11 | 'POST',
12 | `https://music.163.com/weapi/v1/discovery/new/songs`,
13 | data,
14 | { crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
15 | )
16 | }
17 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/song_detail.js:
--------------------------------------------------------------------------------
1 | // 歌曲详情
2 |
3 | module.exports = (query, request) => {
4 | query.ids = query.ids.split(/\s*,\s*/)
5 | const data = {
6 | c: '[' + query.ids.map(id => ('{"id":' + id + '}')).join(',') + ']',
7 | ids: '[' + query.ids.join(',') + ']'
8 | }
9 | return request(
10 | 'POST', `https://music.163.com/weapi/v3/song/detail`, data,
11 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
12 | )
13 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/app.test.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs')
2 | const path = require('path')
3 | const request = require('request')
4 |
5 | let app
6 | before(() => {
7 | app = require('./app.js')
8 | global.host = 'http://localhost:' + app.server.address().port
9 | request.debug = false
10 | })
11 | after((done) => {
12 | app.server.close(done)
13 | })
14 |
15 | fs.readdirSync(path.join(__dirname, 'test'))
16 | .forEach(file => {
17 | require(path.join(__dirname, 'test', file))
18 | })
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/login.js:
--------------------------------------------------------------------------------
1 | // 邮箱登录
2 |
3 | const crypto = require('crypto')
4 |
5 | module.exports = (query, request) => {
6 | const data = {
7 | username: query.email,
8 | password: crypto.createHash('md5').update(query.password).digest('hex'),
9 | rememberLogin: 'true'
10 | }
11 | return request(
12 | 'POST', `https://music.163.com/weapi/login`, data,
13 | {crypto: 'weapi', ua: 'pc', cookie: query.cookie, proxy: query.proxy}
14 | )
15 | }
--------------------------------------------------------------------------------
/src/api/songs.js:
--------------------------------------------------------------------------------
1 | import myAxios from "common/js/axios"
2 |
3 | export function getCategoryData(){
4 | var url = '/api/playlist/catlist'; //歌单分类tag
5 | // var url = '/api/playlist/detail?id=2664283969'; //歌单湘情
6 | // var url = '/api/top/playlist/highquality'; ?/精品歌单
7 |
8 | return myAxios(url)
9 | }
10 |
11 | export function getSongsData(type){
12 | var url = '/api/top/playlist'
13 | var params = {
14 | cat:type
15 | }
16 | return myAxios(url,params)
17 | }
--------------------------------------------------------------------------------
/src/api/rank.js:
--------------------------------------------------------------------------------
1 | import myAxios from "common/js/axios"
2 |
3 | export default function getRankData(){
4 | // var url = '/api/toplist/artist';
5 | // var url = '/api/discover/toplist?id=3778678';
6 | // var url = '/api/top/artists?offset=0&limit=300';
7 | // var url = '/api//artists?id=5781';
8 |
9 |
10 |
11 | // var url = '/api/top/list?id=991319590'; //传榜单id获取歌曲列表等信息
12 | var url = '/api/toplist/detail'; //移动端带三个详情
13 |
14 |
15 |
16 | return myAxios(url)
17 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/search.js:
--------------------------------------------------------------------------------
1 | // 搜索
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | s: query.keywords,
6 | type: query.type || 1, // 1: 单曲, 10: 专辑, 100: 歌手, 1000: 歌单, 1002: 用户, 1004: MV, 1006: 歌词, 1009: 电台, 1014: 视频
7 | limit: query.limit || 30,
8 | offset: query.offset || 0
9 | }
10 | return request(
11 | 'POST', `https://music.163.com/weapi/search/get`, data,
12 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
13 | )
14 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/dj_hot.js:
--------------------------------------------------------------------------------
1 | // 热门电台
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | cat: query.type,
6 | cateId: query.type,
7 | type: query.type,
8 | categoryId: query.type,
9 | category: query.type,
10 | limit: query.limit,
11 | offset: query.offset
12 | }
13 | return request(
14 | 'POST', `https://music.163.com/weapi/djradio/hot/v1`, data,
15 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
16 | )
17 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/dj_program.js:
--------------------------------------------------------------------------------
1 | // 电台节目列表
2 | const { toBoolean } = require('../util')
3 | module.exports = (query, request) => {
4 | const data = {
5 | radioId: query.rid,
6 | limit: query.limit || 30,
7 | offset: query.offset || 0,
8 | asc: toBoolean(query.asc)
9 | }
10 | console.log(toBoolean(query.asc))
11 | return request(
12 | 'POST',
13 | `https://music.163.com/weapi/dj/program/byradio`,
14 | data,
15 | { crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
16 | )
17 | }
18 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/song_url.js:
--------------------------------------------------------------------------------
1 | // 歌曲链接
2 |
3 | const crypto = require('crypto')
4 |
5 | module.exports = (query, request) => {
6 | if(!('MUSIC_U' in query.cookie)) query.cookie._ntes_nuid = crypto.randomBytes(16).toString("hex")
7 | const data = {
8 | ids: '[' + query.id + ']',
9 | br: parseInt(query.br || 999000)
10 | }
11 | return request(
12 | 'POST', `https://music.163.com/weapi/song/enhance/player/url`, data,
13 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
14 | )
15 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/top_playlist_highquality.js:
--------------------------------------------------------------------------------
1 | // 精品歌单
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | cat: query.cat || '全部', // 全部,华语,欧美,韩语,日语,粤语,小语种,运动,ACG,影视原声,流行,摇滚,后摇,古风,民谣,轻音乐,电子,器乐,说唱,古典,爵士
6 | limit: query.limit || 50,
7 | lasttime: query.before || 0, // 歌单updateTime
8 | total: true
9 | }
10 | return request(
11 | 'POST', `https://music.163.com/weapi/playlist/highquality/list`, data,
12 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
13 | )
14 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/login_cellphone.js:
--------------------------------------------------------------------------------
1 | // 手机登录
2 |
3 | const crypto = require('crypto')
4 |
5 | module.exports = (query, request) => {
6 | const data = {
7 | phone: query.phone,
8 | countrycode: query.countrycode,
9 | password: crypto.createHash('md5').update(query.password).digest('hex'),
10 | rememberLogin: 'true'
11 | }
12 | return request(
13 | 'POST', `https://music.163.com/weapi/login/cellphone`, data,
14 | {crypto: 'weapi', ua: 'pc', cookie: query.cookie, proxy: query.proxy}
15 | )
16 | }
17 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/resource_like.js:
--------------------------------------------------------------------------------
1 | // 点赞与取消点赞资源
2 |
3 | module.exports = (query, request) => {
4 | query.t = (query.t == 1 ? 'like' : 'unlike')
5 | query.type = {
6 | 1: 'R_MV_5_', // MV
7 | 4: 'A_DJ_1_', // 电台
8 | 5: 'R_VI_62_' // 视频
9 | }[query.type]
10 | const data = {
11 | threadId: query.type + query.id
12 | }
13 | return request(
14 | 'POST', `https://music.163.com/weapi/resource/${query.t}`, data,
15 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
16 | )
17 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/user_update.js:
--------------------------------------------------------------------------------
1 | // 编辑用户信息
2 |
3 | module.exports = (query, request) => {
4 | const data = {
5 | avatarImgId: "0",
6 | birthday: query.birthday,
7 | city: query.city,
8 | gender: query.gender,
9 | nickname: query.nickname,
10 | province: query.province,
11 | signature: query.signature
12 | }
13 | return request(
14 | 'POST', `https://music.163.com/weapi/user/profile/update`, data,
15 | {crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
16 | )
17 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/module/like.js:
--------------------------------------------------------------------------------
1 | // 红心与取消红心歌曲
2 | const { toBoolean } = require('../util')
3 |
4 | module.exports = (query, request) => {
5 | query.like = query.like ? true : false
6 | const data = {
7 | trackId: query.id,
8 | like: query.like
9 | }
10 | return request(
11 | 'POST',
12 | `https://music.163.com/weapi/radio/like?alg=${query.alg ||
13 | 'itembased'}&trackId=${query.id}&like=${query.like}&time=${query.time ||
14 | 25}`,
15 | data,
16 | { crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
17 | )
18 | }
19 |
--------------------------------------------------------------------------------
/src/api/music.js:
--------------------------------------------------------------------------------
1 | import myAxios from "common/js/axios"
2 |
3 | export function getMusicDetailData(id){
4 | var url= "api/song/detail"
5 | var params = {
6 | ids:id
7 | }
8 | return myAxios(url, params)
9 | }
10 | export function getMusicUrlData(id){
11 | var url= "api/song/url" //歌曲的url
12 | var params = {
13 | id
14 | }
15 | return myAxios(url, params)
16 |
17 | }
18 |
19 | export function getMusicLyricData(id){
20 | var url= "api/lyric"
21 | var params = {
22 | id
23 | }
24 | return myAxios(url, params)
25 |
26 | }
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/test/album.test.js:
--------------------------------------------------------------------------------
1 | const assert = require('assert')
2 | const request = require('request')
3 | const host = global.host || 'http://localhost:3000'
4 |
5 | describe('测试获取歌手专辑列表是否正常', () => {
6 | it('数据的 code 应该为200', done => {
7 | const qs = {
8 | id: 32311
9 | }
10 |
11 | request.get({url: `${host}/album`,qs: qs}, (err, res, body) => {
12 | if (!err && res.statusCode == 200) {
13 | body = JSON.parse(body)
14 | assert(body.code === 200)
15 | done()
16 | }
17 | else{
18 | done(err)
19 | }
20 | })
21 | })
22 | })
23 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/test/comment.test.js:
--------------------------------------------------------------------------------
1 | const assert = require('assert')
2 | const request = require('request')
3 | const host = global.host || 'http://localhost:3000'
4 |
5 | describe('测试获取评论是否正常', () => {
6 | it('数据的 code 应该为200', done => {
7 | const qs = {
8 | id: 32311
9 | }
10 |
11 | request.get({url: `${host}/comment/album`,qs: qs}, (err, res, body) => {
12 | if (!err && res.statusCode == 200) {
13 | body = JSON.parse(body)
14 | assert(body.code === 200)
15 | done()
16 | }
17 | else{
18 | done(err)
19 | }
20 | })
21 | })
22 | })
23 |
--------------------------------------------------------------------------------
/NeteaseCloudMusicApi/test/lyric.test.js:
--------------------------------------------------------------------------------
1 | const assert = require('assert')
2 | const request = require('request')
3 | const host = global.host || 'http://localhost:3000'
4 |
5 | describe("测试获取歌词是否正常", () => {
6 | it("数据应该有 lrc 字段", done => {
7 | const qs = {
8 | id: 347230
9 | }
10 |
11 | request.get({url: `${host}/lyric`,qs: qs}, (err, res, body) => {
12 | if (!err && res.statusCode == 200) {
13 | body = JSON.parse(body)
14 | assert(typeof body.lrc !== "undefined")
15 | done()
16 | }
17 | else{
18 | done(err)
19 | }
20 | })
21 | })
22 | })
23 |
--------------------------------------------------------------------------------
/src/api/songList.js:
--------------------------------------------------------------------------------
1 | import myAxios from "common/js/axios"
2 |
3 | export function getMixListData(id){
4 | var url = 'api/playlist/detail'
5 | var params = {
6 | id
7 | }
8 | return myAxios(url,params)
9 | }
10 |
11 | export function getRankListData(id){
12 | var url = 'api/top/list'
13 | var params = {
14 | id
15 | }
16 | return myAxios(url,params)
17 | }
18 |
19 | export function getSingerListData(id){
20 | var url = 'api/artists'
21 | // var url = 'api/artist/desc' //获取歌手描述API
22 | var params = {
23 | id
24 | }
25 | return myAxios(url,params)
26 | }
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 | import router from './router'
4 | import store from './store/index'
5 | import fastClick from 'fastclick'
6 | import lazyLoad from "vue-lazyload"
7 |
8 | fastClick.attach(document.body)
9 | Vue.config.productionTip = false
10 | Vue.use(lazyLoad,{
11 | loading: require('./assets/lazy3.png'),
12 | })
13 |
14 | new Vue({
15 | router,
16 | store,
17 | render: h => h(App),
18 | }).$mount('#app')
19 |
20 |
21 | // new Vue({
22 | // el:"#app",
23 | // router,
24 | // store,
25 | // template: '
7 |
5 |
9 |
24 |
17 | {{filterCount(item.playCount)}}
18 |
21 | {{item.title}}
22 |
7 |
25 |