feat(route): add howtoforge (#14538)

* add howtoforge

* Update study.mdx

* 更新 rss.js

* 更新 radar.js

* 更新 radar.js
This commit is contained in:
cnkmmk 2024-02-24 10:37:22 +08:00 committed by GitHub
parent 68ec2091aa
commit c840cbbcbf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 57 additions and 0 deletions

View File

@ -0,0 +1,3 @@
module.exports = {
'/': ['cnkmmk'],
};

View File

@ -0,0 +1,13 @@
module.exports = {
'howtoforge.com': {
_name: "Howtoforge Linux Tutorials",
'.': [
{
title: '学习',
docs: 'https://docs.rsshub.app/routes/study#howtoforge-linux-tutorials',
source: ['/'],
target: '/howtoforge',
},
],
},
};

View File

@ -0,0 +1,3 @@
module.exports = function (router) {
router.get('/', require('./rss'));
};

32
lib/v2/howtoforge/rss.js Normal file
View File

@ -0,0 +1,32 @@
const got = require('@/utils/got');
const cheerio = require('cheerio');
module.exports = async (ctx) => {
const currentUrl = 'https://www.howtoforge.com';
const response = await got(`${currentUrl}/feed.rss`);
const $ = cheerio.load(response.data, { xmlMode: true });
const titleMain = $('channel > title').text();
const descriptionMain = $('channel > description').text();
const items = $('channel > item')
.map((_, item) => {
const $item = $(item);
const link = $item.find('link').text();
const title = $item.find('title').text();
const description = $item.find('description').text();
const pubDate = $item.find('pubDate').text();
return {
link,
pubDate, // no need to normalize because it's from a valid RSS feed
title,
description,
};
})
.get();
ctx.state.data = {
title: titleMain,
description: descriptionMain,
link: currentUrl,
item: items,
};
};

View File

@ -689,3 +689,9 @@
| 新疆维吾尔自治区 | 65 |
| 台湾 | 71 |
</Route>
## Howtoforge Linux Tutorials {#Howtoforge-Linux-Tutorials}
### tutorials {#Howtoforge-Linux-Tutorials-all}
<Route author="cnkmmk" example="/howtoforge" path="/howtoforge" />