bilibili video link api
This commit is contained in:
parent
08085b15c6
commit
dda08cb959
|
|
@ -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);
|
||||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
);
|
||||
}
|
||||
});
|
||||
};
|
||||
Loading…
Reference in New Issue