RSSHub/lib/v2/shcstheatre/programs.js

40 lines
1.5 KiB
JavaScript

const got = require('@/utils/got');
const { art } = require('@/utils/render');
const { parseDate } = require('@/utils/parse-date');
const timezone = require('@/utils/timezone');
const cheerio = require('cheerio');
const path = require('path');
module.exports = async (ctx) => {
const url = 'https://www.shcstheatre.com/Program/programList.aspx';
const res = await got.get(url);
const $ = cheerio.load(res.data);
const items = await Promise.all(
$('#datarow .program-name a').map((_, elem) => {
const link = new URL($(elem).attr('href'), url);
return ctx.cache.tryGet(link.toString(), async () => {
const id = link.searchParams.get('id');
const res2 = await got.post('https://www.shcstheatre.com/webapi.ashx?op=GettblprogramCache', {
headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
form: { id },
});
const data = res2.data.data.tblprogram[0];
return {
title: data.SCS_WEB_BRIEFNAME,
link: link.toString(),
description: art(path.join(__dirname, 'templates/description.art'), data),
pubDate: timezone(parseDate(data.SJ_DATE_PC), +8),
};
});
})
);
const image = $('.menu-logo img').attr('src');
ctx.state.data = {
title: '上海文化广场 - 节目列表',
link: url,
image,
item: items,
};
};