Skip to content

Commit

Permalink
Merge pull request #656 from DIYgod/master
Browse files Browse the repository at this point in the history
[pull] master from diygod:master
  • Loading branch information
pull[bot] committed Sep 28, 2022
2 parents 0d4835d + 5f157b0 commit 9096fec
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 18 deletions.
37 changes: 30 additions & 7 deletions lib/v2/bilibili/cache.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,53 @@
const got = require('@/utils/got');

module.exports = {
getCookie: (ctx) => {
const key = 'bili-cookie';
return ctx.cache.tryGet(key, async () => {
const response = await got(`https://www.bilibili.com/`);
return response.headers['set-cookie'];
});
},
getUsernameFromUID: (ctx, uid) => {
const key = 'bili-username-from-uid-' + uid;
return ctx.cache.tryGet(key, async () => {
const { data: nameResponse } = await got(`https://api.bilibili.com/x/space/acc/info?mid=${uid}&jsonp=jsonp`, {
const cookie = await module.exports.getCookie(ctx);
await got(`https://space.bilibili.com/${uid}/`, {
headers: {
Referer: `https://space.bilibili.com/${uid}`,
Referer: 'https://www.bilibili.com/',
Cookie: cookie,
},
});
const { data: nameResponse } = await got(`https://api.bilibili.com/x/space/acc/info?mid=${uid}&token=&platform=web&jsonp=jsonp`, {
headers: {
Referer: `https://space.bilibili.com/${uid}/`,
Cookie: cookie,
},
});
return nameResponse.data.name;
});
},
getUsernameAndFaceFromUID: async (ctx, uid) => {
const cookie = await module.exports.getCookie(ctx);
const nameKey = 'bili-username-from-uid-' + uid;
const faceKey = 'bili-userface-from-uid-' + uid;
let name = await ctx.cache.get(nameKey);
let face = await ctx.cache.get(faceKey);
if (!name) {
const nameResponse = await got(`https://api.bilibili.com/x/space/acc/info?mid=${uid}&jsonp=jsonp`, {
if (!name || !face) {
await got(`https://space.bilibili.com/${uid}/`, {
headers: {
Referer: `https://www.bilibili.com/`,
Cookie: cookie,
},
});
const { data: nameResponse } = await got(`https://api.bilibili.com/x/space/acc/info?mid=${uid}&token=&platform=web&jsonp=jsonp`, {
headers: {
Referer: `https://space.bilibili.com/${uid}`,
Referer: `https://space.bilibili.com/${uid}/`,
Cookie: cookie,
},
});
name = nameResponse.data.data.name;
face = nameResponse.data.data.face;
name = nameResponse.data.name;
face = nameResponse.data.face;
ctx.cache.set(nameKey, name);
ctx.cache.set(faceKey, face);
}
Expand Down
34 changes: 26 additions & 8 deletions lib/v2/bilibili/video-all.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,45 @@ const { parseDate } = require('@/utils/parse-date');
module.exports = async (ctx) => {
const uid = ctx.params.uid;
const disableEmbed = ctx.params.disableEmbed;
const cookie = await cache.getCookie(ctx);
const [name, face] = await cache.getUsernameAndFaceFromUID(ctx, uid);

const response = await got(`https://api.bilibili.com/x/space/arc/search?mid=${uid}&ps=30&tid=0&pn=1&keyword=&order=pubdate&jsonp=jsonp`, {
await got(`https://space.bilibili.com/${uid}/video?tid=0&page=1&keyword=&order=pubdate`, {
headers: {
Referer: `https://space.bilibili.com/${uid}/`,
Cookie: cookie,
},
});
const response = await got(`https://api.bilibili.com/x/space/arc/search?mid=${uid}&ps=30&tid=0&pn=1&keyword=&order=pubdate&jsonp=jsonp`, {
headers: {
Referer: `https://space.bilibili.com/${uid}/video?tid=0&page=1&keyword=&order=pubdate`,
Cookie: cookie,
},
});

const vlist = [...response.data.data.list.vlist];
const pageTotal = Math.ceil(response.data.data.page.count / response.data.data.page.ps);

const getPage = async (pageId) => {
await got(`https://space.bilibili.com/${uid}/video?tid=0&page=${pageId}&keyword=&order=pubdate`, {
headers: {
Referer: `https://space.bilibili.com/${uid}/`,
Cookie: cookie,
},
});
return await got(`https://api.bilibili.com/x/space/arc/search?mid=${uid}&ps=30&tid=0&pn=${pageId}&keyword=&order=pubdate&jsonp=jsonp`, {
headers: {
Referer: `https://space.bilibili.com/${uid}/video?tid=0&page=${pageId}&keyword=&order=pubdate`,
Cookie: cookie,
},
});
};

const promises = [];

if (pageTotal > 1) {
for (let i = 2; i <= pageTotal; i++) {
promises.push(
got(`https://api.bilibili.com/x/space/arc/search?mid=${uid}&ps=30&tid=0&pn=${i}&keyword=&order=pubdate&jsonp=jsonp`, {
headers: {
Referer: `https://space.bilibili.com/${uid}/`,
},
})
);
promises.push(getPage(i));
}
const rets = await Promise.all(promises);
rets.forEach((ret) => {
Expand Down
12 changes: 9 additions & 3 deletions lib/v2/bilibili/video.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,19 @@ const utils = require('./utils');
module.exports = async (ctx) => {
const uid = ctx.params.uid;
const disableEmbed = ctx.params.disableEmbed;
const cookie = await cache.getCookie(ctx);
const [name, face] = await cache.getUsernameAndFaceFromUID(ctx, uid);

const response = await got({
method: 'get',
url: `https://api.bilibili.com/x/space/arc/search?mid=${uid}&ps=10&tid=0&pn=1&order=pubdate&jsonp=jsonp`,
await got(`https://space.bilibili.com/${uid}/video?tid=0&page=1&keyword=&order=pubdate`, {
headers: {
Referer: `https://space.bilibili.com/${uid}/`,
Cookie: cookie,
},
});
const response = await got(`https://api.bilibili.com/x/space/arc/search?mid=${uid}&ps=30&tid=0&pn=1&keyword=&order=pubdate&jsonp=jsonp`, {
headers: {
Referer: `https://space.bilibili.com/${uid}/video?tid=0&page=1&keyword=&order=pubdate`,
Cookie: cookie,
},
});
const data = response.data;
Expand Down

1 comment on commit 9096fec

@vercel
Copy link

@vercel vercel bot commented on 9096fec Sep 28, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

rsshub – ./

rsshub.tari.xyz
rsshub-git-master-narcissu.vercel.app
rsshub-narcissu.vercel.app

Please sign in to comment.