Merge branch 'Binaryify:master' into master

This commit is contained in:
chen310 2021-05-27 18:44:43 +08:00
commit 055775bf75
9 changed files with 5557 additions and 24 deletions

1
.husky/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
_

4
.husky/pre-commit Executable file
View File

@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged

View File

@ -1,4 +1,6 @@
# 更新日志 # 更新日志
### 4.0.13 | 2021.5.24
- 修复解析问题,改善 Docker 支持 [#1241](https://github.com/Binaryify/NeteaseCloudMusicApi/pull/1241)
### 4.0.12 | 2021.5.1 ### 4.0.12 | 2021.5.1
- 首页-发现接口增加 cursor 参数,refresh默认设为false [#1217](https://github.com/Binaryify/NeteaseCloudMusicApi/issues/1217) - 首页-发现接口增加 cursor 参数,refresh默认设为false [#1217](https://github.com/Binaryify/NeteaseCloudMusicApi/issues/1217)

View File

@ -3,11 +3,8 @@ FROM node:lts-alpine
WORKDIR /app WORKDIR /app
COPY . /app COPY . /app
RUN rm -f package-lock.json \ RUN npm config set registry "https://registry.npm.taobao.org/" \
; rm -rf .idea \ && npm install --production
; rm -rf node_modules \
; npm config set registry "https://registry.npm.taobao.org/" \
&& npm install
EXPOSE 3000 EXPOSE 3000
CMD ["node", "app.js"] CMD ["node", "app.js"]

5
app.js
View File

@ -42,9 +42,8 @@ app.use((req, res, next) => {
;(req.headers.cookie || '').split(/\s*;\s*/).forEach((pair) => { ;(req.headers.cookie || '').split(/\s*;\s*/).forEach((pair) => {
let crack = pair.indexOf('=') let crack = pair.indexOf('=')
if (crack < 1 || crack == pair.length - 1) return if (crack < 1 || crack == pair.length - 1) return
req.cookies[ req.cookies[decodeURIComponent(pair.slice(0, crack)).trim()] =
decodeURIComponent(pair.slice(0, crack)).trim() decodeURIComponent(pair.slice(crack + 1)).trim()
] = decodeURIComponent(pair.slice(crack + 1)).trim()
}) })
next() next()
}) })

View File

@ -13,7 +13,8 @@ module.exports = (query, request) => {
}, },
).then((response) => { ).then((response) => {
try { try {
const pattern = /<div class="cver u-cover u-cover-3">[\s\S]*?<img src="([^"]+)">[\s\S]*?<a class="sname f-fs1 s-fc0" href="([^"]+)"[^>]*>([^<]+?)<\/a>[\s\S]*?<a class="nm nm f-thide s-fc3" href="([^"]+)"[^>]*>([^<]+?)<\/a>/g const pattern =
/<div class="cver u-cover u-cover-3">[\s\S]*?<img src="([^"]+)">[\s\S]*?<a class="sname f-fs1 s-fc0" href="([^"]+)"[^>]*>([^<]+?)<\/a>[\s\S]*?<a class="nm nm f-thide s-fc3" href="([^"]+)"[^>]*>([^<]+?)<\/a>/g
let result, let result,
playlists = [] playlists = []
while ((result = pattern.exec(response.body)) != null) { while ((result = pattern.exec(response.body)) != null) {

5539
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,13 @@
{ {
"name": "NeteaseCloudMusicApi", "name": "NeteaseCloudMusicApi",
"version": "4.0.12", "version": "4.0.13",
"description": "网易云音乐 NodeJS 版 API", "description": "网易云音乐 NodeJS 版 API",
"scripts": { "scripts": {
"start": "node app.js", "start": "node app.js",
"test": "mocha -r intelli-espower-loader -t 20000 app.test.js --exit", "test": "mocha -r intelli-espower-loader -t 20000 app.test.js --exit",
"lint": "eslint **/*.{js,ts}", "lint": "eslint **/*.{js,ts}",
"lint-fix": "eslint --fix **/*.{js,ts}" "lint-fix": "eslint --fix **/*.{js,ts}",
"prepare": "husky install"
}, },
"keywords": [ "keywords": [
"网易云音乐", "网易云音乐",
@ -52,7 +53,8 @@
"eslint": "7.23.0", "eslint": "7.23.0",
"eslint-config-prettier": "7.1.0", "eslint-config-prettier": "7.1.0",
"eslint-plugin-html": "6.1.2", "eslint-plugin-html": "6.1.2",
"eslint-plugin-prettier": "3.3.1", "eslint-plugin-prettier": "3.4.0",
"husky": "6.0.0",
"intelli-espower-loader": "1.0.1", "intelli-espower-loader": "1.0.1",
"lint-staged": "11.0.0", "lint-staged": "11.0.0",
"mocha": "8.3.2", "mocha": "8.3.2",

View File

@ -127,7 +127,7 @@ const createRequest = (method, url, data, options) => {
settings.httpAgent = new PacProxyAgent(options.proxy) settings.httpAgent = new PacProxyAgent(options.proxy)
settings.httpsAgent = new PacProxyAgent(options.proxy) settings.httpsAgent = new PacProxyAgent(options.proxy)
} else { } else {
var purl = qs.parse(options.proxy) const purl = qs.parse(options.proxy)
if (purl.hostname) { if (purl.hostname) {
const agent = tunnel.httpsOverHttp({ const agent = tunnel.httpsOverHttp({
proxy: { proxy: {
@ -172,13 +172,19 @@ const createRequest = (method, url, data, options) => {
} }
} catch (e) { } catch (e) {
// console.log(e) // console.log(e)
answer.body = body try {
answer.body = JSON.parse(body.toString())
} catch (err) {
// console.log(err)
// can't decrypt and can't parse directly
answer.body = body
}
answer.status = res.status answer.status = res.status
} }
answer.status = answer.status =
100 < answer.status && answer.status < 600 ? answer.status : 400 100 < answer.status && answer.status < 600 ? answer.status : 400
if (answer.status == 200) resolve(answer) if (answer.status === 200) resolve(answer)
else reject(answer) else reject(answer)
}) })
.catch((err) => { .catch((err) => {