feat(route): add Hugo 更新日志 (#7260)

This commit is contained in:
MaoKwen 2021-05-12 12:47:18 +08:00 committed by GitHub
parent e9916175d8
commit f2c506d0de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 68 additions and 0 deletions

View File

@ -168,6 +168,12 @@ Language
<RouteEn author="imlonghao" path="/greasyfork/:language/:domain?" example="/greasyfork/en/google.com" :paramsDesc="['language, located on the top right corner of Greasy Fork\'s search page, set to `all` for including all languages', 'the script\'s target domain']" />
## Hugo
### Release News
<Route author="maokwen" example="/hugo/releases" path="/hugo/releases"/>
## IPSW.me
### Apple Firmware Update-IPSWs/OTAs version

View File

@ -212,6 +212,12 @@ pageClass: routes
<Route author="imlonghao" example="/greasyfork/zh-CN/bilibili.com" path="/greasyfork/:language/:domain?" :paramsDesc="['语言, 可在网站右上角找到, `all` 为所有语言', '按脚本生效域名过滤, 可选']"/>
## Hugo
### 更新日志
<Route author="maokwen" example="/hugo/releases" path="/hugo/releases"/>
## IPSW.me
### 苹果固件更新 - IPSWs/OTAs 版本

View File

@ -4067,4 +4067,7 @@ router.get('/jisilu/topic/:user', require('./routes/jisilu/topic'));
// Constitutional Court of Baden-Württemberg (Germany)
router.get('/verfghbw/press/:keyword?', require('./routes/verfghbw/press'));
// Hugo 更新日志
router.get('/hugo/releases', require('./routes/hugo/releases'));
module.exports = router;

View File

@ -0,0 +1,53 @@
const got = require('@/utils/got');
const cheerio = require('cheerio');
async function load(link) {
const response = await got.get(link);
const $ = cheerio.load(response.data);
const datestr = $('aside > time').attr('datetime');
const description = $('article > div.flex-l').html();
return { description, datestr };
}
const ProcessFeed = async (title, url, caches) => {
const single = {
title: title,
link: url,
guid: url,
};
const other = await caches.tryGet(url, async () => await load(url));
return Promise.resolve(Object.assign({}, single, other));
};
module.exports = async (ctx) => {
const host = 'https://gohugo.io/categories/releases';
const response = await got({
method: 'get',
url: host,
headers: {
Referer: host,
},
});
const $ = cheerio.load(response.data);
const items = await Promise.all(
$('section > div > div > h1')
.get()
.map(async (item) => {
const node = $('a', item);
const title = node.text();
const url = new URL(node.attr('href'), 'https://gohugo.io/').href;
const result = await ProcessFeed(title, url, ctx.cache);
return Promise.resolve(result);
})
);
ctx.state.data = {
title: 'Hugo Release',
link: host,
description: 'Hugo Release',
item: items,
};
};