From ae69e262c3ef5be3b141a7c585f1f7c7b74b104c Mon Sep 17 00:00:00 2001 From: binaryify <821374382@qq.com> Date: Wed, 22 Jun 2016 19:58:57 +0800 Subject: [PATCH] init --- .babelrc | 3 +++ .gitignore | 1 + README.MD | 31 +++++++++++++++++++++++++ app.js | 46 +++++++++++++++++++++++++++++++++++++ build/app.js | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 21 +++++++++++++++++ test.js | 4 ++++ 7 files changed, 170 insertions(+) create mode 100644 .babelrc create mode 100644 .gitignore create mode 100644 README.MD create mode 100644 app.js create mode 100644 build/app.js create mode 100644 package.json create mode 100644 test.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..af0f0c3 --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["es2015"] +} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..d368296 --- /dev/null +++ b/README.MD @@ -0,0 +1,31 @@ +# start +``` +npm install +``` +# usage + +```js +var api=require('NeteaseCloudMusicApi').api +api.search('年度之歌') +``` +or +```js +import {api} from 'NeteaseCloudMusicApi' +api.search('年度之歌') +``` + +# api +## search + ```js + api.search(name:String, [limit:Nnumber default:3, offset:Number default:0]) + ``` + +## lrc + ```js + api.lrc(id:Number, [lv:Number default:-1]) + ``` + + + ```js + api.song(id:Number) + ``` \ No newline at end of file diff --git a/app.js b/app.js new file mode 100644 index 0000000..64e4535 --- /dev/null +++ b/app.js @@ -0,0 +1,46 @@ +import request from 'request' +function deepCopy(obj) { + return JSON.parse(JSON.stringify(obj)); +} +const origin = 'http://music.163.com' + +let globalOption = { + headers: { + 'Origin': origin, + 'Referer': origin, + 'Content-Type': 'application/x-www-form-urlencoded' + } +} + +let api = { + search: (name = null, limit = 3, offset = 0) => { + let option = deepCopy(globalOption); + let url = origin + '/api/search/suggest/web' + let body = 's=' + name + '&limit=' + limit + '&type=1&offset=' + offset + let method = 'POST' + Object.assign(option, { url, body, method }) + request(option, callback); + }, + song: (id) => { + let option = deepCopy(globalOption); + let url = origin + '/api/song/detail?ids=%5B' + id + '%5d' + let method = 'GET' + Object.assign(option, { url, method }) + request(option, callback); + }, + lrc: (id, lv = -1) => { + let option = deepCopy(globalOption); + let url = origin + '/api/song/lyric?lv=' + lv + '&id=' + id + let method = 'GET' + Object.assign(option, { url, method }) + request(option, callback); + } +} +function callback(error, response, body) { + // console.log('callback') + if (!error && response.statusCode == 200) { + var info = JSON.parse(body); + console.log(JSON.stringify(info, '', 2)) + } +} +export {api} \ No newline at end of file diff --git a/build/app.js b/build/app.js new file mode 100644 index 0000000..0d5d1ce --- /dev/null +++ b/build/app.js @@ -0,0 +1,64 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.api = undefined; + +var _request = require('request'); + +var _request2 = _interopRequireDefault(_request); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function deepCopy(obj) { + return JSON.parse(JSON.stringify(obj)); +} +var origin = 'http://music.163.com'; + +var globalOption = { + headers: { + 'Origin': origin, + 'Referer': origin, + 'Content-Type': 'application/x-www-form-urlencoded' + } +}; + +var api = { + search: function search() { + var name = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0]; + var limit = arguments.length <= 1 || arguments[1] === undefined ? 3 : arguments[1]; + var offset = arguments.length <= 2 || arguments[2] === undefined ? 0 : arguments[2]; + + var option = deepCopy(globalOption); + var url = origin + '/api/search/suggest/web'; + var body = 's=' + name + '&limit=' + limit + '&type=1&offset=' + offset; + var method = 'POST'; + Object.assign(option, { url: url, body: body, method: method }); + (0, _request2.default)(option, callback); + }, + song: function song(id) { + var option = deepCopy(globalOption); + var url = origin + '/api/song/detail?ids=%5B' + id + '%5d'; + var method = 'GET'; + Object.assign(option, { url: url, method: method }); + (0, _request2.default)(option, callback); + }, + lrc: function lrc(id) { + var lv = arguments.length <= 1 || arguments[1] === undefined ? -1 : arguments[1]; + + var option = deepCopy(globalOption); + var url = origin + '/api/song/lyric?lv=' + lv + '&id=' + id; + var method = 'GET'; + Object.assign(option, { url: url, method: method }); + (0, _request2.default)(option, callback); + } +}; +function callback(error, response, body) { + // console.log('callback') + if (!error && response.statusCode == 200) { + var info = JSON.parse(body); + console.log(JSON.stringify(info, '', 2)); + } +} +exports.api = api; diff --git a/package.json b/package.json new file mode 100644 index 0000000..af02d67 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "NeteaseCloudMusicApi", + "version": "1.0.1", + "description": "", + "main": "build/app.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "babel app.js -o build/app.js", + "check": "node build/test.js" + }, + "keywords": [], + "author": "traveller", + "license": "ISC", + "dependencies": { + "babel-core": "^6.9.1", + "request": "^2.72.0" + }, + "devDependencies": { + "babel-preset-es2015": "^6.9.0" + } +} \ No newline at end of file diff --git a/test.js b/test.js new file mode 100644 index 0000000..9cb21b0 --- /dev/null +++ b/test.js @@ -0,0 +1,4 @@ +import api from './app.js' +api.search("远方") +api.song('5243023') +api.lrc('5243023') \ No newline at end of file