Skip to content

Commit

Permalink
v1.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
a632079 committed Feb 22, 2018
1 parent b85d7c1 commit 789257e
Show file tree
Hide file tree
Showing 7 changed files with 241 additions and 31 deletions.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "hitokoto",
"version": "1.1.2",
"version": "1.2.0",
"description": "Fast & Powerful Hitokoto API Framework.",
"main": "core.js",
"engines": {
Expand Down Expand Up @@ -54,6 +54,7 @@
"lodash.curry": "^4.1.1",
"mysql2": "^1.5.1",
"nconf": "^0.10.0",
"netease-music-sdk": "^0.3.0",
"nodemailer": "^4.4.2",
"passthrough-counter": "^1.0.0",
"pify": "^3.0.0",
Expand Down
4 changes: 2 additions & 2 deletions plugins.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ module.exports = [
}),
require('kcors')({
origin: '*',
allowMethods: ['GET', 'HEAD', 'PUT', 'POST', 'DELETE', 'PATCH'],
exposeHeaders: ['X-Request-Id']
allowMethods: ['GET', 'HEAD', 'PUT', 'POST', 'DELETE', 'PATCH']
// exposeHeaders: ['X-Request-Id']
}),
require('koa-favicon')(path.join(__dirname, './public/favicon.ico')),
require('koa-compress')({
Expand Down
2 changes: 2 additions & 0 deletions routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ module.exports = (router, controller) => {
router.get('/nm/detail/:id', controller.netease.detail)
router.get('/nm/summary/:id', controller.netease.summary)
router.get('/nm/redirect/music/:id', controller.netease.redirect)
router.get('/nm/record/:uid', controller.netease.record)
router.get('/nm/comment/music/:id', controller.netease.musicComment)

return router
}
17 changes: 17 additions & 0 deletions shrinkwrap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ dependencies:
lodash.curry: 4.1.1
mysql2: 1.5.2
nconf: 0.10.0
netease-music-sdk: 0.3.0
nodemailer: 4.4.2
passthrough-counter: 1.0.0
pify: 3.0.0
Expand Down Expand Up @@ -221,6 +222,13 @@ packages:
resolution:
integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
tarball: 'http://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz'
/big-integer/1.6.26:
dev: false
engines:
node: '>=0.6'
resolution:
integrity: sha1-OvFnL6Ytry1eyvrPblqg0l4Cwcg=
tarball: 'http://registry.npm.taobao.org/big-integer/download/big-integer-1.6.26.tgz'
/bluebird/3.5.1:
dev: false
resolution:
Expand Down Expand Up @@ -1759,6 +1767,14 @@ packages:
resolution:
integrity: sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=
tarball: 'http://registry.npm.taobao.org/negotiator/download/negotiator-0.6.1.tgz'
/netease-music-sdk/0.3.0:
dependencies:
axios: 0.17.1
big-integer: 1.6.26
dev: false
resolution:
integrity: sha1-QXO6/EKOVUvwx04Y17K+otqpZ4k=
tarball: 'http://registry.npm.taobao.org/netease-music-sdk/download/netease-music-sdk-0.3.0.tgz'
/nocache/2.0.0:
dev: false
resolution:
Expand Down Expand Up @@ -2734,6 +2750,7 @@ specifiers:
mocha: ^5.0.0
mysql2: ^1.5.1
nconf: ^0.10.0
netease-music-sdk: ^0.3.0
nodemailer: ^4.4.2
nyc: ^11.4.1
passthrough-counter: ^1.0.0
Expand Down
67 changes: 40 additions & 27 deletions src/controllers/hitokoto.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,26 +15,31 @@ async function hitokoto (ctx, next) {
attributes: { exclude: ['from_who', 'creator_uid', 'assessor', 'owner'] },
order: db.sequelize.random()
})
// CheckEncoding
// console.log(ctx.query)
const encode = !!(ctx.query.encode && ctx.query.encode === 'text')
if (encode) {
if (ret) {
ctx.status = 200
ctx.body = ret.hitokoto
} else {
ctx.body = '很抱歉,该分类下尚无条目'
if (!ret) {
ctx.status = 404
ctx.body = {
status: 404,
message: '很抱歉,该分类下尚无条目'
}
} else {
if (ret) {
ctx.status = 200
return
}
// CheckEncoding
const encode = ctx.query.encode
switch (encode) {
case 'json':
ctx.body = ret
} else {
ctx.body = {
message: '很抱歉,该分类下尚无条目',
status: '404'
}
}
break
case 'text':
ctx.body = ret.text
break
case 'js':
const select = ctx.query.select ? ctx.query.select : '.hitokoto'
ctx.headers['content-type'] = 'text/javascript'
ctx.body = `(function hitokoto(){var hitokoto="${ret.hitokoto}";var dom=document.querySelector('${select}');Array.isArray(dom)?dom[0].innerText=hitokoto:dom.innerText=hitokoto;})()`
break
default:
ctx.body = ret
break
}
} else {
// Not Params or just has callback
Expand All @@ -43,16 +48,24 @@ async function hitokoto (ctx, next) {
order: db.sequelize.random()
})

// Check Encoding
const encode = !!(ctx.query && ctx.query.encode && ctx.query.encode === 'text')
if (encode) {
ctx.status = 200
ctx.body = ret.hitokoto
} else {
ctx.status = 200
ctx.body = ret
// CheckEncoding
const encode = ctx.query.encode
switch (encode) {
case 'json':
ctx.body = ret
break
case 'text':
ctx.body = ret.text
break
case 'js':
const select = ctx.query.select ? ctx.query.select : '.hitokoto'
ctx.headers['content-type'] = 'text/javascript'
ctx.body = `(function hitokoto(){var hitokoto="${ret.hitokoto}";var dom=document.querySelector('${select}');if(!dom){console.error("请输入正确的选择器值");}Array.isArray(dom)?dom[0].innerText=hitokoto:dom.innerText=hitokoto;})()`
break
default:
ctx.body = ret
break
}
}
}

module.exports = hitokoto
59 changes: 58 additions & 1 deletion src/controllers/netease.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,68 @@
// Import Packages
const NeteaseMusic = require('simple-netease-cloud-music')
const async = require('async')
const { MusicClient } = require('netease-music-sdk')
const pify = require('pify')
const cache = require('../cache')
const nm = new NeteaseMusic()

const user = require('../../user')
const sdk = new MusicClient()
sdk.load(user)
const controllers = {}
// Get Music Comment
controllers.musicComment = async (ctx, next) => {
let id
let offset
let limit
try {
id = Number.parseInt(ctx.params.id)
limit = ctx.query && ctx.query.limit ? Number.parseInt(ctx.query.limit) : 30
offset = ctx.query && ctx.query.offset ? Number.parseInt(ctx.query.limit) : 0
} catch (e) {
ctx.body = {
status: 400,
message: 'id 必须为数字',
ts: Date.now()
}
return
}
let result = await cache.get(`nm:music:comment:${id}:${limit}:${offset}`, false)
if (result) {
ctx.set('Content-Type', 'application/json')
ctx.body = result
return
}
result = await sdk.getSongComment(id, limit, offset)
cache.set(`nm:music:comment:${id}:${limit}:${offset}`, result, 60 * 60 * 2) // 2 Hour
ctx.body = result
}

// Get Music record
controllers.record = async (ctx, next) => {
let uid
try {
uid = Number.parseInt(ctx.params.uid)
} catch (e) {
ctx.status = 400
ctx.body = {
status: 400,
message: 'uid 必须为数字',
ts: Date.now()
}
return
}
const type = ctx.query && ctx.query.weekly ? 1 : 0
let result = await cache.get(`nm:user:record:${uid}:${type}`, false)
if (result) {
ctx.set('Content-Type', 'application/json')
ctx.body = result
return
}
result = await sdk.getUserRecord(uid, type)
cache.set(`nm:user:record:${uid}:${type}`, result, 60 * 60 * 2)
ctx.body = result
}

// Get Music Summary
controllers.summary = async (ctx, next) => {
// Remove End ','
Expand Down
120 changes: 120 additions & 0 deletions user.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
{
"cookie": [
"MUSIC_U=55c961cd063c81f50dd18e6e409f8392ffcce3bc60f1eeb91f011eb27081e3ae739dab38b77fcd41b6c59e1fdae5fddf6ee010f035411ce1de39c620ce8469a8; Expires=Tue, 12 Mar 2086 18:20:49 GMT; Path=/; HttpOnly; Domain=.music.163.com",
"__csrf=736cbe26bcf02216c61bfb0e058346e9; Domain=.music.163.com; Expires=Fri, 09-Mar-2086 15:06:52 GMT; Path=/"
],
"data": {
"loginType": 1,
"clientId": "7433591cc2e1ab890d0652e92ca8f09e16665a448aa87924bc07c0d5ef79ab80585e1cf3f9bf17719b263fd4ac4e88b42dafac58a8b46ae7",
"effectTime": 2147483647,
"code": 200,
"account": {
"id": 70282814,
"userName": "0_a632079@gmail.com",
"type": 0,
"status": 0,
"whitelistAuthority": 0,
"createTime": 0,
"salt": "",
"tokenVersion": 0,
"ban": 0,
"baoyueVersion": -2,
"donateVersion": 0,
"vipType": 0,
"viptypeVersion": 1518377635765,
"anonimousUser": false
},
"profile": {
"backgroundImgIdStr": "18575149441425244",
"avatarImgIdStr": "18575149441425230",
"userId": 70282814,
"vipType": 0,
"accountStatus": 0,
"nickname": "a632079",
"province": 320000,
"defaultAvatar": false,
"avatarUrl": "http://p1.music.126.net/We0ENS14QCJHPYCA1l1s-A==/18575149441425230.jpg",
"gender": 1,
"birthday": 829999569453,
"city": 320500,
"mutual": false,
"remarkName": null,
"expertTags": null,
"experts": {},
"avatarImgId": 18575149441425230,
"backgroundImgId": 18575149441425244,
"userType": 0,
"authStatus": 0,
"detailDescription": "",
"djStatus": 10,
"followed": false,
"backgroundUrl": "http://p1.music.126.net/vCCjNnEjY038uhfK4fT8Rg==/18575149441425244.jpg",
"description": "",
"signature": "清风拂面,蜂蝶纷飞,静静得躺在草丛中…看着蔚蓝色的天空…尽情享受音乐的美妙。",
"authority": 0,
"avatarImgId_str": "18575149441425230"
},
"bindings": [
{
"expired": false,
"url": "",
"userId": 70282814,
"tokenJsonStr": "{\"countrycode\":\"\",\"cellphone\":\"13222206170\",\"hasPassword\":true}",
"expiresIn": 2147483647,
"refreshTime": 1466430597,
"id": 2869905116,
"type": 1
},
{
"expired": true,
"url": "http://weibo.com/u/1687375085",
"userId": 70282814,
"tokenJsonStr": "{\"allow_all_act_msg\":false,\"favourites_count\":0,\"urank\":9,\"verified_trade\":\"\",\"weihao\":\"577336948\",\"verified_source_url\":\"\",\"province\":\"32\",\"screen_name\":\"a632079\",\"id\":1687375085,\"cover_image\":\"http://ww1.sinaimg.cn/crop.0.0.920.300/64934cedgw1f2jym5m051j20pk08c794.jpg\",\"geo_enabled\":true,\"verified_type\":-1,\"access_token\":\"2.00L2DMqB0Gg46158191fc055wFckIC\",\"pagefriends_count\":1,\"domain\":\"qq1943241505\",\"following\":false,\"name\":\"a632079\",\"cover_image_phone\":\"http://ww4.sinaimg.cn/crop.0.0.640.640.640/64934cedgw1f2ar3yqcaqj20u00u0ahf.jpg\",\"idstr\":\"1687375085\",\"follow_me\":false,\"friends_count\":183,\"credit_score\":80,\"gender\":\"f\",\"city\":\"5\",\"profile_url\":\"577336948\",\"description\":\"A Code Writer\",\"created_at\":\"Sat Jul 21 13:19:03 +0800 2012\",\"remark\":\"\",\"ptype\":0,\"verified_reason_url\":\"\",\"block_word\":0,\"uid\":\"1687375085\",\"avatar_hd\":\"http://tva1.sinaimg.cn/crop.0.0.996.996.1024/64934cedjw8f2arbvrescj20ro0rptb1.jpg\",\"mbtype\":12,\"bi_followers_count\":12,\"user_ability\":0,\"cardid\":\"star_713\",\"verified_reason\":\"\",\"mbrank\":3,\"lang\":\"zh-cn\",\"expires_in\":2649778,\"class\":1,\"remind_in\":\"2649778\",\"star\":0,\"allow_all_comment\":true,\"online_status\":0,\"verified\":false,\"profile_image_url\":\"http://tva1.sinaimg.cn/crop.0.0.996.996.50/64934cedjw8f2arbvrescj20ro0rptb1.jpg\",\"block_app\":1,\"url\":\"http://i.a632079.me\",\"avatar_large\":\"http://tva1.sinaimg.cn/crop.0.0.996.996.180/64934cedjw8f2arbvrescj20ro0rptb1.jpg\",\"statuses_count\":74,\"followers_count\":51,\"location\":\"江苏 苏州\",\"verified_source\":\"\",\"status\":{\"created_at\":\"Thu Jul 14 19:21:53 +0800 2016\",\"id\":3997221421120304,\"mid\":\"3997221421120304\",\"idstr\":\"3997221421120304\",\"text\":\"分享单曲http://t.cn/R5sQVEK (@网易云音乐 )\",\"textLength\":44,\"source_allowclick\":0,\"source_type\":1,\"source\":\"<a href=\\\"http://app.weibo.com/t/feed/u6BYq\\\" rel=\\\"nofollow\\\">网易云音乐</a>\",\"favorited\":false,\"truncated\":false,\"in_reply_to_status_id\":\"\",\"in_reply_to_user_id\":\"\",\"in_reply_to_screen_name\":\"\",\"pic_urls\":[],\"geo\":null,\"reposts_count\":0,\"comments_count\":0,\"attitudes_count\":0,\"isLongText\":false,\"mlevel\":0,\"visible\":{\"type\":0,\"list_id\":0},\"biz_feature\":0,\"hasActionTypeCard\":0,\"darwin_tags\":[],\"hot_weibo_tags\":[],\"text_tag_tips\":[],\"userType\":0,\"cardid\":\"star_713\",\"positive_recom_flag\":0,\"gif_ids\":\"\",\"is_show_bulletin\":0},\"data\":0,\"code\":-1510410484137,\"message\":\"服务器返回异常状态[0]!\",\"rawdata\":\"\",\"AnonymousUserId\":null}",
"expiresIn": 2649778,
"refreshTime": 1510410519,
"id": 2883766487,
"type": 2
},
{
"expired": true,
"url": "http://t.qq.com/a632079",
"userId": 70282814,
"tokenJsonStr": "{\"openkey\":\"E5CF1D93EA01DA701D7DDBDD99A8B3EA\",\"nick\":\"藤之青\",\"name\":\"a632079\",\"openid\":\"f475d7b57652bbc2e4e9bdc86cb0a521\",\"expires_in\":8035200,\"refresh_token\":\"90113f7d3a8faf4fabbdf909b14a8673\",\"access_token\":\"1f37709c8da19d46daa7a582eeae47f1\",\"openId\":\"F475D7B57652BBC2E4E9BDC86CB0A521\"}",
"expiresIn": 8035200,
"refreshTime": 1436344116,
"id": 37122486,
"type": 6
},
{
"expired": false,
"url": "",
"userId": 70282814,
"tokenJsonStr": "{\"access_token\":\"73E14B1A593FF25F429BB44B0E57DB18\",\"refresh_token\":\"6E1C724A940C99B0E95B80CAF9C60E89\",\"openid\":\"8A1F2F3797965B677FC19BAFC447B3D3\",\"nickname\":\"Jonson Petard\",\"expires_in\":7776000}",
"expiresIn": 7776000,
"refreshTime": 1513405801,
"id": 61384168,
"type": 5
},
{
"expired": true,
"url": "",
"userId": 70282814,
"tokenJsonStr": "{\"access_token\":\"D_3CqXoFfx9rSJoukT6oMIG844B0ng4vSEGkKr2vHIe1-TBSbdOgwTlajAJjXQKANQi4EXNJd42jZhzITggy8A\",\"refresh_token\":\"pM3gXn3owUtzIYTw5lLPqRKeKn8u7yjYA-QL5gW6fXnIC1CkKkHo7xqb_uVKJdqVMlJeWWtE7yp0GsbnG0qobg\",\"unionid\":\"oZoefuC2rlxlDsUw10QYhcwcr73Y\",\"openid\":\"okvmMjv_8_FKaxTs_VxPY8TFpWow\",\"scope\":\"snsapi_userinfo\",\"nickname\":\"a632079\",\"expires_in\":7200}",
"expiresIn": 7200,
"refreshTime": 1504049940,
"id": 2869883181,
"type": 10
},
{
"expired": false,
"url": "",
"userId": 70282814,
"tokenJsonStr": "{\"email\":\"a632079@gmail.com\"}",
"expiresIn": 2147483647,
"refreshTime": 0,
"id": 33168351,
"type": 0
}
]
}
}

0 comments on commit 789257e

Please sign in to comment.