Skip to content

Commit bb2b586

Browse files
committed
v1.2.3
1 parent b989fdf commit bb2b586

File tree

7 files changed

+422
-60
lines changed

7 files changed

+422
-60
lines changed

package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "hitokoto",
3-
"version": "1.2.2",
3+
"version": "1.2.3",
44
"description": "Fast & Powerful Hitokoto API Framework.",
55
"main": "core.js",
66
"engines": {
@@ -40,7 +40,7 @@
4040
"colors": "^1.1.2",
4141
"cron": "^1.3.0",
4242
"humanize-number": "^0.0.2",
43-
"iconv": "^2.3.0",
43+
"iconv-lite": "^0.4.19",
4444
"kcors": "^2.2.1",
4545
"koa": "^2.4.1",
4646
"koa-bodyparser": "^4.2.0",
@@ -56,7 +56,7 @@
5656
"lodash.curry": "^4.1.1",
5757
"mysql2": "^1.5.1",
5858
"nconf": "^0.10.0",
59-
"netease-music-sdk": "^0.3.0",
59+
"netease-music-sdk": "^0.3.1",
6060
"nodemailer": "^4.4.2",
6161
"passthrough-counter": "^1.0.0",
6262
"pify": "^3.0.0",

readme.md

+5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
同时更新了以下功能:
55
* API 请求统计
66
* callback 函数的支持
7+
* 返回 JS 的支持
8+
* 支持 GBK编码
9+
* 扩展
10+
* 网易云音乐
11+
* Bilibili API (待定)
712

813
## 依赖
914
* Redis

routes.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@ module.exports = (router, controller) => {
2525
router.get('/nm/redirect/music/:id', controller.netease.redirect)
2626
router.get('/nm/record/:uid', controller.netease.record)
2727
router.get('/nm/comment/music/:id', controller.netease.musicComment)
28-
router.get('/nm/url/mv/:mvid', controller.netease.mv)
28+
router.get('/nm/url/mv/:mvid', async (ctx) => {
29+
ctx.redirect(301, `/nm/mv/${ctx.params.mvid}`)
30+
})
31+
router.get('/nm/mv/:mvid', controller.netease.mv)
2932
// router.get('/nm/dj/program/detail/:pid', controller.netease.djProgramInfo)
3033
router.get('/nm/user/dj/:uid', controller.netease.userDj)
3134
router.get('/nm/dj/:rid', controller.netease.djProgram)

shrinkwrap.yaml

+7-21
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ dependencies:
88
colors: 1.1.2
99
cron: 1.3.0
1010
humanize-number: 0.0.2
11-
iconv: 2.3.0
11+
iconv-lite: 0.4.19
1212
kcors: 2.2.1
1313
koa: 2.5.0
1414
koa-bodyparser: 4.2.0
@@ -24,7 +24,7 @@ dependencies:
2424
lodash.curry: 4.1.1
2525
mysql2: 1.5.2
2626
nconf: 0.10.0
27-
netease-music-sdk: 0.3.0
27+
netease-music-sdk: 0.3.1
2828
nodemailer: 4.4.2
2929
passthrough-counter: 1.0.0
3030
pify: 3.0.0
@@ -1461,15 +1461,6 @@ packages:
14611461
resolution:
14621462
integrity: sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=
14631463
tarball: 'http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.19.tgz'
1464-
/iconv/2.3.0:
1465-
dependencies:
1466-
nan: 2.9.2
1467-
dev: false
1468-
engines:
1469-
node: '>=0.8.0'
1470-
resolution:
1471-
integrity: sha1-lzmIfCvUktml4jbdNmfFNYYBIBs=
1472-
tarball: 'http://registry.npm.taobao.org/iconv/download/iconv-2.3.0.tgz'
14731464
/ienoopen/1.0.0:
14741465
dev: false
14751466
resolution:
@@ -2055,11 +2046,6 @@ packages:
20552046
resolution:
20562047
integrity: sha1-O3oNJiA910s6nfTJz7gnsvuQfmQ=
20572048
tarball: 'http://registry.npm.taobao.org/named-placeholders/download/named-placeholders-1.1.1.tgz'
2058-
/nan/2.9.2:
2059-
dev: false
2060-
resolution:
2061-
integrity: sha1-9WTXX1+PNqbZRWzKemxP5IireGY=
2062-
tarball: 'http://registry.npm.taobao.org/nan/download/nan-2.9.2.tgz'
20632049
/natural-compare/1.4.0:
20642050
dev: true
20652051
resolution:
@@ -2083,14 +2069,14 @@ packages:
20832069
resolution:
20842070
integrity: sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=
20852071
tarball: 'http://registry.npm.taobao.org/negotiator/download/negotiator-0.6.1.tgz'
2086-
/netease-music-sdk/0.3.0:
2072+
/netease-music-sdk/0.3.1:
20872073
dependencies:
20882074
axios: 0.17.1
20892075
big-integer: 1.6.26
20902076
dev: false
20912077
resolution:
2092-
integrity: sha1-QXO6/EKOVUvwx04Y17K+otqpZ4k=
2093-
tarball: 'http://registry.npm.taobao.org/netease-music-sdk/download/netease-music-sdk-0.3.0.tgz'
2078+
integrity: sha1-naYWg3Tf1TzejnGuIret3U/+Scc=
2079+
tarball: 'http://registry.npm.taobao.org/netease-music-sdk/download/netease-music-sdk-0.3.1.tgz'
20942080
/nocache/2.0.0:
20952081
dev: false
20962082
resolution:
@@ -3219,7 +3205,7 @@ specifiers:
32193205
eslint-plugin-promise: ^3.6.0
32203206
eslint-plugin-standard: ^3.0.1
32213207
humanize-number: ^0.0.2
3222-
iconv: ^2.3.0
3208+
iconv-lite: ^0.4.19
32233209
kcors: ^2.2.1
32243210
koa: ^2.4.1
32253211
koa-bodyparser: ^4.2.0
@@ -3237,7 +3223,7 @@ specifiers:
32373223
mocha: ^5.0.0
32383224
mysql2: ^1.5.1
32393225
nconf: ^0.10.0
3240-
netease-music-sdk: ^0.3.0
3226+
netease-music-sdk: ^0.3.1
32413227
nodemailer: ^4.4.2
32423228
nyc: ^11.4.1
32433229
passthrough-counter: ^1.0.0

src/controllers/hitokoto.js

+7-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Import necessary packages
2-
const Iconv = require('iconv').Iconv
2+
const iconv = require('iconv-lite')
33
const path = require('path')
44
const SrcDir = path.join('../../', './src/')
55
const db = require(SrcDir + 'db')
@@ -30,7 +30,7 @@ async function hitokoto (ctx, next) {
3030
let js = false
3131
switch (encode) {
3232
case 'json':
33-
response = Buffer.from(ret)
33+
response = Buffer.from(JSON.stringify(ret))
3434
break
3535
case 'text':
3636
response = Buffer.from(ret.text)
@@ -42,7 +42,7 @@ async function hitokoto (ctx, next) {
4242
response = Buffer.from(`(function hitokoto(){var hitokoto="${ret.hitokoto}";var dom=document.querySelector('${select}');Array.isArray(dom)?dom[0].innerText=hitokoto:dom.innerText=hitokoto;})()`)
4343
break
4444
default:
45-
response = Buffer.from(ret)
45+
response = Buffer.from(JSON.stringify(ret))
4646
break
4747
}
4848
if (ctx.query && ctx.query.charset && ctx.query.charset.toLocaleLowerCase() === 'gbk') {
@@ -51,8 +51,7 @@ async function hitokoto (ctx, next) {
5151
} else {
5252
ctx.set('Content-Type', 'application/json; charset=gbk')
5353
}
54-
const iconv = new Iconv('UTF-8', 'GBK')
55-
ctx.body = iconv.convert(response)
54+
ctx.body = iconv.encode(response, 'GBK')
5655
} else {
5756
if (js) {
5857
ctx.set('Content-Type', 'text/javascript; charset=utf-8')
@@ -74,7 +73,7 @@ async function hitokoto (ctx, next) {
7473
let js = false
7574
switch (encode) {
7675
case 'json':
77-
response = Buffer.from(ret)
76+
response = Buffer.from(JSON.stringify(ret))
7877
break
7978
case 'text':
8079
response = Buffer.from(ret.text)
@@ -86,7 +85,7 @@ async function hitokoto (ctx, next) {
8685
response = Buffer.from(`(function hitokoto(){var hitokoto="${ret.hitokoto}";var dom=document.querySelector('${select}');Array.isArray(dom)?dom[0].innerText=hitokoto:dom.innerText=hitokoto;})()`)
8786
break
8887
default:
89-
response = Buffer.from(ret)
88+
response = Buffer.from(JSON.stringify(ret))
9089
break
9190
}
9291
if (ctx.query && ctx.query.charset && ctx.query.charset.toLocaleLowerCase() === 'gbk') {
@@ -95,8 +94,7 @@ async function hitokoto (ctx, next) {
9594
} else {
9695
ctx.set('Content-Type', 'application/json; charset=gbk')
9796
}
98-
const iconv = new Iconv('UTF-8', 'GBK')
99-
ctx.body = iconv.convert(response)
97+
ctx.body = iconv.encode(response, 'GBK')
10098
} else {
10199
if (js) {
102100
ctx.set('Content-Type', 'text/javascript; charset=utf-8')

src/controllers/netease.js

+16-7
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,22 @@ controllers.mv = async (ctx, next) => {
2323
}
2424
return
2525
}
26-
// let result = await cache.get(`nm:mv:${mvid}`, false)
27-
// if (result) {
28-
// ctx.set('Content-Type', 'application/json')
29-
// ctx.body = result
30-
// return
31-
// }
32-
ctx.redirect(`https://163music.a632079.me/mv?mvid=${mvid}`)
26+
let result = await cache.get(`nm:mv:${mvid}`, false)
27+
if (result) {
28+
ctx.set('Content-Type', 'application/json')
29+
ctx.body = result
30+
return
31+
}
32+
try {
33+
result = await sdk.getMvInfo(mvid)
34+
cache.set(`nm:mv:${mvid}`, result, 60 * 60 * 2)
35+
ctx.body = result
36+
} catch (e) {
37+
ctx.status = 404
38+
ctx.body = {
39+
status: 404
40+
}
41+
}
3342
}
3443

3544
// Get DJ Program Info

0 commit comments

Comments
 (0)