feat(route): add zyw今日热榜 (#12527)

* feat(route): add zyw今日热榜

* fix typo

* fix: remove cache.tryGet

* fix radar params

* update lib/v2/zyw/radar.js

---------
This commit is contained in:
Ethan Shen 2023-05-20 01:59:10 +08:00 committed by GitHub
parent 0e6941e653
commit ad33615e48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 102 additions and 0 deletions

View File

@ -1545,6 +1545,23 @@ Supported sub-sites:
<Route author="AlexdanerZe TonyRL" example="/zaker/focusread" path="/zaker/focusread" />
## zyw
### 今日热榜
<Route author="nczitzk" example="/zyw/hot" path="/zyw/hot/:site?" :paramsDesc="['站点,见下表,默认为空,即全部']">
::: tip 提示
全部站点请见 [此处](https://hot.zyw.asia/#/list)
:::
| 哔哩哔哩 | 微博 | 知乎 | 36氪 | 百度 | 少数派 | IT之家 | 澎湃新闻 | 今日头条 | 百度贴吧 | 稀土掘金 | 腾讯新闻 |
| -------- | ---- | ---- | ---- | ---- | ------ | ------ | -------- | -------- | -------- | -------- | -------- |
</Route>
## 阿里研究院
### 资讯

63
lib/v2/zyw/hot.js Normal file
View File

@ -0,0 +1,63 @@
const got = require('@/utils/got');
module.exports = async (ctx) => {
const site = ctx.params.site ?? '';
const rootUrl = 'https://hot.zyw.asia';
const apiRootUrl = 'https://api-hot.zyw.asia';
let response = await got({
method: 'get',
url: rootUrl,
});
const jsUrl = `${rootUrl}${response.data.match(/crossorigin src="(\/assets\/index-\w+\.js)">/)[1]}`;
response = await got({
method: 'get',
url: jsUrl,
});
const sites = response.data
.match(/label:"(.*?)",value:"(.*?)",order/g)
.map((a) => {
const matches = a.match(/label:"(.*?)",value:"(.*?)"/);
return {
label: matches[1],
value: matches[2],
};
})
.filter((a) => (site ? a.label === site || a.value === site : true));
const currentUrl = `${rootUrl}${site ? `/#/list?type=${sites[0].value}` : ''}`;
const items = [];
await Promise.all(
sites.map(async (a) => {
const detailResponse = await got({
method: 'get',
url: `${apiRootUrl}/${a.value}`,
headers: {
referer: rootUrl,
},
});
for (const d of detailResponse.data.data) {
items.push({
link: d.url,
title: d.title,
description: d.desc,
});
}
return;
})
);
ctx.state.data = {
title: `今日热榜${site ? ` - ${sites[0].label}` : ''}`,
link: currentUrl,
item: items,
};
};

3
lib/v2/zyw/maintainer.js Normal file
View File

@ -0,0 +1,3 @@
module.exports = {
'/hot/:site?': ['nczitzk'],
};

16
lib/v2/zyw/radar.js Normal file
View File

@ -0,0 +1,16 @@
module.exports = {
'zyw.asia': {
_name: 'zyw',
hot: [
{
title: '今日热榜',
docs: 'https://docs.rsshub.app/new-media.html#zyw-jin-ri-re-bang',
source: ['/'],
target: (params, url) => {
const matches = new URL(url).href.match(/type=(\w+)/);
return `/zyw/hot${matches ? `/${matches[1]}` : ''}`;
},
},
],
},
};

3
lib/v2/zyw/router.js Normal file
View File

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