diff --git a/lib/v2/bangumi/tv/group/topic.js b/lib/v2/bangumi/tv/group/topic.js
index 9142d967e..f99093989 100644
--- a/lib/v2/bangumi/tv/group/topic.js
+++ b/lib/v2/bangumi/tv/group/topic.js
@@ -10,17 +10,28 @@ module.exports = async (ctx) => {
const $ = cheerio.load(html);
const title = 'Bangumi - ' + $('.SecondaryNavTitle').text();
+ const items = await Promise.all($('.topic_list .topic')
+ .toArray()
+ .map(async (elem) => {
+ const link = new URL($('.subject a', elem).attr('href'), base_url).href;
+ const fullText = await ctx.cache.tryGet(link, async () => {
+ const { data: html } = await got(link);
+ const $ = cheerio.load(html);
+ return $('.postTopic .topic_content').html();
+ });
+ const summary = 'Reply: ' + $('.posts', elem).text();
+ return {
+ link,
+ title: $('.subject a', elem).attr('title'),
+ pubDate: parseDate($('.lastpost .time', elem).text()),
+ description: fullText ? summary + '
' + fullText : summary,
+ author: $('.author a', elem).text(),
+ };
+ }));
+
ctx.state.data = {
title,
link,
- item: $('.topic_list .topic')
- .toArray()
- .map((elem) => ({
- link: new URL($('.subject a', elem).attr('href'), base_url).href,
- title: $('.subject a', elem).attr('title'),
- pubDate: parseDate($('.lastpost .time', elem).text()),
- description: 'Reply: ' + $('.posts', elem).text(),
- author: $('.author a', elem).text(),
- })),
+ item: items,
};
};