fix(route): 解决bilibili专栏多张图片时无法获取问题 (#9601)
* Add files via upload * Update lib/v2/bilibili/article.js Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update lib/v2/bilibili/article.js Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update lib/v2/bilibili/article.js Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update article.js Co-authored-by: Tony <TonyRL@users.noreply.github.com>
This commit is contained in:
parent
2eebabddd2
commit
ef8aeab553
|
|
@ -1,10 +1,10 @@
|
|||
const got = require('@/utils/got');
|
||||
const cache = require('./cache');
|
||||
|
||||
const cheerio = require('cheerio');
|
||||
const { parseDate } = require('@/utils/parse-date');
|
||||
module.exports = async (ctx) => {
|
||||
const uid = ctx.params.uid;
|
||||
const name = await cache.getUsernameFromUID(ctx, uid);
|
||||
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: `https://api.bilibili.com/x/space/article?mid=${uid}&pn=1&ps=10&sort=publish_time&jsonp=jsonp`,
|
||||
|
|
@ -13,19 +13,41 @@ module.exports = async (ctx) => {
|
|||
},
|
||||
});
|
||||
const data = response.data.data;
|
||||
|
||||
ctx.state.data = {
|
||||
title: `${name} 的 bilibili 专栏`,
|
||||
link: `https://space.bilibili.com/${uid}/#/article`,
|
||||
image: data.articles && data.articles[0].author.face,
|
||||
description: `${name} 的 bilibili 专栏`,
|
||||
item:
|
||||
data.articles &&
|
||||
data.articles.map((item) => ({
|
||||
const title = `${name} 的 bilibili 专栏`;
|
||||
const link = `https://space.bilibili.com/${uid}/article`;
|
||||
const description = `${name} 的 bilibili 专栏`;
|
||||
const item = await Promise.all(
|
||||
data.articles.map(async (item) => {
|
||||
const art_url = `https://www.bilibili.com/read/cv${item.id}`;
|
||||
const itemData = await ctx.cache.tryGet(
|
||||
art_url,
|
||||
async () =>
|
||||
(
|
||||
await got({
|
||||
method: 'get',
|
||||
url: art_url,
|
||||
headers: {
|
||||
Referer: `https://space.bilibili.com/${uid}/`,
|
||||
}
|
||||
})
|
||||
).data
|
||||
);
|
||||
const content = cheerio.load(itemData);
|
||||
const eDescription = content('#read-article-holder').html();
|
||||
const publishDate = parseDate(item.publish_time * 1000);
|
||||
const single = {
|
||||
title: item.title,
|
||||
description: `${item.summary}<br><img src="${item.image_urls[0]}">`,
|
||||
pubDate: new Date(item.publish_time * 1000).toUTCString(),
|
||||
link: `https://www.bilibili.com/read/cv${item.id}`,
|
||||
})),
|
||||
link: art_url,
|
||||
description: eDescription,
|
||||
pubDate: publishDate,
|
||||
};
|
||||
return single;
|
||||
})
|
||||
);
|
||||
ctx.state.data = {
|
||||
title,
|
||||
link,
|
||||
description,
|
||||
item
|
||||
};
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue