Files
RSSHub/lib/v2/ithome/index.js
jiechus 1121f8c0a0 fix(route): 添加若干路由的图标 (#9301)
* cover

* add bilibili dynamic image

* fix bilibili dynamic

* fix bilibili dynamic x2

* style: auto format

* add afdian image

* style: auto format

* fix git

* style: auto format

* add zhihu activities image

* optimize zhihu activities title

* optimize TG channel title

* style: auto format

* optimized reg

* optimized reg

* optimized reg

* optimized reg

* optimized reg

* optimized reg

* optimized reg

* FIX betterTitle

* FIX betterTitle x2

* FIX betterTitle x3

* FIX betterTitle x4

* FIX betterTitle x5

* Optimize betterTitle preprocessed HTML tags

* FIX regular

* add IThome image

* Update channel.js

* Excluded Content

* Excluded Content

* 解决 DeepScan

* 解决 DeepScan

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-11 19:39:23 +08:00

86 lines
2.2 KiB
JavaScript

const got = require('@/utils/got');
const cheerio = require('cheerio');
const get_url = (caty) => `https://${caty}.ithome.com/`;
const config = {
it: {
title: 'IT 资讯',
},
soft: {
title: '软件之家',
},
win10: {
title: 'win10 之家',
},
win11: {
title: 'win11 之家',
},
iphone: {
title: 'iphone 之家',
},
ipad: {
title: 'ipad 之家',
},
android: {
title: 'android 之家',
},
digi: {
title: '数码之家',
},
next: {
title: '智能时代',
},
};
module.exports = async (ctx) => {
const cfg = config[ctx.params.caty];
if (!cfg) {
throw Error('Bad category. See <a href="https://docs.rsshub.app/new-media.html#it-zhi-jia">https://docs.rsshub.app/new-media.html#it-zhi-jia</a>');
}
const current_url = get_url(ctx.params.caty);
const response = await got({
method: 'get',
url: current_url,
});
const $ = cheerio.load(response.data);
const list = $('#list > div.fl > ul > li > div > h2 > a')
.slice(0, 10)
.map((_, item) => {
item = $(item);
return {
title: item.text(),
link: item.attr('href'),
};
})
.get();
const items = await Promise.all(
list.map((item) =>
ctx.cache.tryGet(item.link, async () => {
const res = await got({ method: 'get', url: item.link });
const content = cheerio.load(res.data);
const post = content('#paragraph');
post.find('img[data-original]').each((_, ele) => {
ele = $(ele);
ele.attr('src', ele.attr('data-original'));
ele.removeAttr('class');
ele.removeAttr('data-original');
});
item.description = post.html();
item.pubDate = new Date(content('#pubtime_baidu').text() + ' GMT+8').toUTCString();
return item;
})
)
);
ctx.state.data = {
title: 'IT 之家 - ' + cfg.title,
link: current_url,
image: 'https://img.ithome.com/m/images/logo.png',
item: items,
};
};