RSSHub/lib/v2/saraba1st/thread.js

64 lines
2.2 KiB
JavaScript

const got = require('@/utils/got');
const cheerio = require('cheerio');
const queryString = require('query-string');
const config = require('@/config').value;
const { parseDate } = require('@/utils/parse-date');
const timezone = require('@/utils/timezone');
module.exports = async (ctx) => {
const tid = ctx.params.tid;
const cookieString = config.saraba1st.cookie ? config.saraba1st.cookie : '';
const res = await got('https://bbs.saraba1st.com/2b/forum.php', {
searchParams: queryString.stringify({
mod: 'viewthread',
tid,
ordertype: 1,
}),
headers: {
Cookie: cookieString,
},
});
const $ = cheerio.load(res.data);
const title = $('#thread_subject').text();
const list = $('#postlist > div[id^=post_]:not(:first-of-type)');
const count = [];
for (let i = 0; i < Math.min(list.length, 20); i++) {
count.push(i);
}
const resultItems = count.map((i) => {
const each = $(list[i]);
const floor = each.find('td.plc .pi a > em').text();
const floorUrl = each.find('td.plc .pi a').attr('href');
const contentHtml = $(each.find('td.t_f'));
const imgsHtml = contentHtml.find('img');
for (let i = 0; i < imgsHtml.length; i++) {
if (imgsHtml[i].attribs.src === 'https://static.saraba1st.com/image/common/none.gif') {
imgsHtml[i].attribs.src = imgsHtml[i].attribs.file;
const imgHtml = $(imgsHtml[i]);
imgHtml.removeAttr('zoomfile');
imgHtml.removeAttr('file');
imgHtml.removeAttr('onmouseover');
imgHtml.removeAttr('onclick');
}
}
contentHtml.find('div.aimg_tip').remove();
return {
title: `${title} #${floor}`,
link: new URL(floorUrl, 'https://bbs.saraba1st.com/2b/').href,
description: contentHtml.html(),
author: each.find('.authi .xw1').text(),
pubDate: timezone(parseDate(each.find('.authi em').text()), +8),
};
});
ctx.state.data = {
title: `Stage1 论坛 - ${title}`,
link: `https://bbs.saraba1st.com/2b/thread-${tid}-1-1.html`,
item: resultItems,
};
};