bilibili video link api

This commit is contained in:
DIYgod 2016-10-20 01:09:11 +08:00
parent 08085b15c6
commit dda08cb959
No known key found for this signature in database
GPG Key ID: F8797DD1088C6506
3 changed files with 56 additions and 0 deletions

View File

@ -10,4 +10,5 @@ app.get('/', require('./routes/get'));
app.post('/', require('./routes/post'));
app.get('/list', require('./routes/list'));
app.get('/bilibili', require('./routes/bilibili'));
app.get('/video/bilibili', require('./routes/video-bilibili'));
app.listen(1207);

View File

@ -7,6 +7,7 @@
"license": "MIT",
"devDependencies": {},
"dependencies": {
"blueimp-md5": "^2.4.0",
"express": "^4.13.4",
"log4js": "^0.6.36",
"mongoose": "^4.1.9",

View File

@ -0,0 +1,54 @@
var url = require('url');
var logger = require('../tools/logger');
var redis = require('../tools/redis');
var fetch = require('node-fetch');
var md5 = require('blueimp-md5');
module.exports = function (req, res) {
var ip = req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress;
var query = url.parse(req.url,true).query;
var aid = query.aid;
var appkey = '4ebafd7c4951b366';
var secret = '8cb98205e9b2ad3669aad0fce12a4c13';
redis.client.get(`bilibilicid${aid}`, function(err, reply) {
if (reply) {
logger.info(`Video Bilibili AV${aid} form redis, IP: ${ip}`);
var sign = md5(`appkey=${appkey}&cid=${reply}&otype=json&quality=2&type=mp4${secret}`);
fetch(`https://interface.bilibili.com/playurl?appkey=${appkey}&cid=${reply}&otype=json&quality=2&type=mp4&sign=${sign}`).then(
response => response.text()
).then((data) => {
res.send(data);
}
).catch(
e => logger.error("Video Bilibilib Error: getting data", e)
);
}
else {
logger.info(`Video Bilibili AV${aid} form origin, IP: ${ip}`);
fetch(`http://www.bilibili.com/widget/getPageList?aid=${aid}`).then(
response => response.json()
).then((data) => {
redis.set(`bilibilicid${aid}`, data[0].cid);
var sign = md5(`appkey=${appkey}&cid=${data[0].cid}&otype=json&quality=2&type=mp4${secret}`);
fetch(`https://interface.bilibili.com/playurl?appkey=${appkey}&cid=${data[0].cid}&otype=json&quality=2&type=mp4&sign=${sign}`).then(
response => response.text()
).then((data) => {
res.send(data);
}
).catch(
e => logger.error("Video Bilibilib Error: getting data", e)
);
}
).catch(
e => logger.error("Video Bilibilib Error: getting cid", e)
);
}
});
};