Files
Tony b0cb871b83 fix(route): fix i-cable (#12503)
* fix(route): fix i-cable

* docs: update docs
2023-05-13 00:15:40 +08:00

75 lines
2.7 KiB
JavaScript

const got = require('@/utils/got');
const cheerio = require('cheerio');
const { parseDate } = require('@/utils/parse-date');
const { art } = require('@/utils/render');
const { join } = require('path');
module.exports = async (ctx) => {
const { category } = ctx.params;
const { limit = '100' } = ctx.query;
const baseUrl = 'https://www.i-cable.com';
let link;
let id;
if (category) {
const categoryDetail = await ctx.cache.tryGet(`i-cable:category:${category}`, async () => {
const { data: res } = await got(`${baseUrl}/wp-json/wp/v2/categories`, {
searchParams: {
search: category,
},
});
const data = res[0];
if (!data) {
throw Error('Invalid category');
}
return {
id: data.id,
link: data.link,
};
});
id = categoryDetail.id;
link = categoryDetail.link;
}
const { data: response } = await got(`${baseUrl}/wp-json/wp/v2/posts`, {
searchParams: {
per_page: limit,
categories: id,
_embed: 1,
},
});
const items = response.map((item) => {
const $ = cheerio.load(item.content.rendered, null, false);
$('img').each((_, img) => {
img = $(img);
const src = img.attr('src');
if (src.match(/-\d+x\d+.(jpg|png)$/)) {
img.attr('src', src.replace(/-\d+x\d+.(jpg|png)$/, '.$1'));
}
img.removeAttr('srcset');
});
return {
title: item.title.rendered,
description: art(join(__dirname, 'templates/desc.art'), {
content: $.html(),
imgs: item.yoast_head_json.og_image.map((img) => img.url).filter((i) => !i.endsWith('Open-Graph-2.png')),
}),
pubDate: parseDate(item.date_gmt), // 2023-05-11T15:07:51
updated: parseDate(item.modified_gmt),
guid: item.guid.rendered,
link: item.link,
author: item._embedded.author.map((author) => author.name).join(', '),
category: item._embedded['wp:term'][0].map((category) => category.name),
};
});
ctx.state.data = {
title: `${category || '主頁'} | 有線寬頻 i-CABLE`,
description: '24小時無間斷緊貼香港本地及國際新聞,即時報道新聞事件的最新發展。內容包括時事、財經、體育、天氣消息等多元化資訊。',
image: 'https://icable-prod.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2022/05/19010704/Open-Graph-1.png',
link: link || baseUrl,
item: items,
};
};