fix: 修复印记中文周刊rss feat: 为印记中文rss增加分类 (#14720)

* 修复印记中文js周刊rss

* 更新docschina路由和周刊模块

* Update lib/routes/docschina/router.ts

* Update lib/routes/docschina/maintainer.ts

* 移除无用的代码和变量声明

* fix: radar

---------
This commit is contained in:
怎么学都学不会的何同学 2024-03-08 22:24:35 +08:00 committed by GitHub
parent feba548c0e
commit 4ebfcf7d4a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 38 additions and 121 deletions

View File

@ -1,116 +0,0 @@
import cache from '@/utils/cache';
import got from '@/utils/got';
import { load } from 'cheerio';
import MarkdownIt from 'markdown-it';
const md = MarkdownIt();
export default async (ctx) => {
const baseURL = 'https://docschina.org';
const { data: res } = await got(`${baseURL}/weekly/js/docs/`);
const $ = load(res);
const title = $('head title').text();
const vendorLink = $('body script')
.toArray()
.find((i) =>
$(i)
.attr('src')
.match(/vendor/)
).attribs.src;
const { data: vendor } = await got(`https:${vendorLink}`);
const env = vendor.match(/default.init\({env:"(.*?)"}\)/)[1]; // docschina-live-10765e
const dataVersion = vendor.match(/,dataVersion:"(\d{4}-\d{2}-\d{2})",/)[1]; // 2020-01-10
// const seqId = Math.random().toString(16).slice(2);
const { data: document } = await got.post('https://tcb-api.tencentcloudapi.com/web', {
headers: {
origin: 'https://docschina.org',
// referer: 'https://docschina.org/',
// 'x-sdk-version': '@cloudbase/js-sdk/1.3.3',
// 'x-seqid': seqId,
},
searchParams: {
env,
},
json: {
action: 'database.queryDocument',
collectionName: 'js_weekly_document',
dataVersion,
env,
limit: 100,
query: JSON.stringify({
path: '/',
}),
queryType: 'WHERE',
// seqId,
},
});
const { data: sidebar } = await got.post('https://tcb-api.tencentcloudapi.com/web', {
headers: {
origin: 'https://docschina.org',
},
searchParams: {
env,
},
json: {
action: 'database.queryDocument',
collectionName: 'js_weekly_sidebar',
dataVersion,
env,
limit: 100,
query: JSON.stringify({
pages: {
$in: [document.data.list[0]._id],
},
}),
},
});
const list = sidebar.data.list[0].value
.filter((i) => i.key !== 'home')
.map((i) => ({
title: i.title,
link: `${baseURL}/weekly/js${i.path}`,
key: i.key,
}));
const items = await Promise.all(
list.map((item) =>
cache.tryGet(item.link, async () => {
const { data: document } = await got.post('https://tcb-api.tencentcloudapi.com/web', {
headers: {
origin: 'https://docschina.org',
},
searchParams: {
env,
},
json: {
action: 'database.queryDocument',
collectionName: 'js_weekly_document',
dataVersion,
env,
limit: 100,
query: JSON.stringify({
path: item.key,
}),
},
});
item.description = md.render(document.data.list[0].content);
delete item.key;
return item;
})
)
);
ctx.set('data', {
title,
link: `${baseURL}/weekly/js/docs/`,
icon: 'https://docschina.org/favicon.ico',
item: items,
});
};

View File

@ -1,3 +1,3 @@
export default {
'/jsweekly': ['daijinru'],
'/weekly/:category?': ['daijinru', 'hestudy'],
};

View File

@ -1,11 +1,11 @@
export default {
docschina: {
'docschina.org': {
_name: '印记中文',
'.': [
{
title: '周刊 - JavaScript',
docs: 'https://docs.rsshub.app/routes/programming#yin-ji-zhong-wen-zhou-kan',
source: ['/weekly/js/*', '/weekly/js', '/'],
source: ['/news/weekly/js/*', '/news/weekly/js', '/'],
target: '/docschina/jsweekly',
},
],

View File

@ -1,3 +1,3 @@
export default (router) => {
router.get('/jsweekly', './jsweekly');
router.get('/weekly/:category?', './weekly');
};

View File

@ -0,0 +1,29 @@
import got from '@/utils/got';
import { load } from 'cheerio';
export default async (ctx) => {
const { category = 'js' } = ctx.req.param();
const baseURL = 'https://docschina.org';
const path = `/news/weekly/${category}`;
const { data: res } = await got(`${baseURL}${path}`);
// @ts-ignore
const $ = load(res);
const title = $('head title').text();
const dataEl = $('#__NEXT_DATA__');
const dataText = dataEl.text();
const data = JSON.parse(dataText);
ctx.set('data', {
title,
link: baseURL + path,
item: data?.props?.pageProps?.data?.map((item) => ({
title: item.title,
description: item.description,
link: `${baseURL}${path}/${item.issue}`,
author: item.editors?.join(','),
itunes_item_image: item.imageUrl,
})),
});
};

View File

@ -1141,4 +1141,8 @@ Stay up to date on the latest React news, tutorials, resources, and more. Delive
### 周刊 - JavaScript {#yin-ji-zhong-wen-zhou-kan-javascript}
<Route author="daijinru" example="/docschina/jsweekly" path="/docschina/jsweekly" radar="1" />
<Route author="hestudy" example="/docschina/weekly" path="/docschina/weekly/:category?" paramsDesc={['周刊分类见下表默认为js']}>
| javascript | node | react |
| ---------- | ---- | ----- |
| js | node | react |
</Route>