feat: 小木虫论坛分类 (#6279)
This commit is contained in:
parent
3060ca63de
commit
da9cd91c0d
110
docs/bbs.md
110
docs/bbs.md
|
|
@ -475,6 +475,116 @@ pageClass: routes
|
|||
|
||||
<Route author="DIYgod" example="/mi/bbs/board/18066617" path="/mi/bbs/board/:boardId" :paramsDesc="['圈子 id,可在圈子 URL 找到']" radar="1" rssbud="1"/>
|
||||
|
||||
## 小木虫论坛
|
||||
|
||||
### 分类
|
||||
|
||||
<Route author="nczitzk" example="/muchong/290" path="/muchong/:id/:type?/:sort?" :paramsDesc="['板块 id,可在板块页 URL 中找到', '子类别 id,可在板块页导航栏中找到,默认为 `all` 即 全部', '排序,可选 `order-tid` 即 发表排序,默认为 回帖排序']">
|
||||
|
||||
::: tip 提示
|
||||
|
||||
尚不支持需要登录访问的版块
|
||||
|
||||
:::
|
||||
|
||||
网络生活区
|
||||
|
||||
| 休闲灌水 | 虫友互识 | 文学芳草园 | 育儿交流 | 竞技体育 | 有奖起名 | 有奖问答 | 健康生活 |
|
||||
| -------- | -------- | ---------- | -------- | -------- | -------- | -------- | -------- |
|
||||
| 6 | 133 | 166 | 359 | 377 | 408 | 69 | 179 |
|
||||
|
||||
科研生活区
|
||||
|
||||
| 硕博家园 | 教师之家 | 博后之家 | English Cafe | 职场人生 | 专业外语 | 外语学习 | 导师招生 | 找工作 | 招聘信息布告栏 | 考研 | 考博 | 公务员考试 |
|
||||
| -------- | -------- | -------- | ------------ | -------- | -------- | -------- | -------- | ------ | -------------- | ---- | ---- | ---------- |
|
||||
| 198 | 199 | 342 | 328 | 405 | 432 | 126 | 430 | 185 | 346 | 127 | 197 | 280 |
|
||||
|
||||
学术交流区
|
||||
|
||||
| 论文投稿 | SCI 期刊点评 | 中文期刊点评 | 论文道贺祈福 | 论文翻译 | 基金申请 | 学术会议 | 会议与征稿布告栏 |
|
||||
| -------- | ------------ | ------------ | ------------ | -------- | -------- | -------- | ---------------- |
|
||||
| 125 | 见期刊路由 | 见期刊路由 | 307 | 278 | 234 | 299 | 345 |
|
||||
|
||||
出国留学区
|
||||
|
||||
| 留学生活 | 公派出国 | 访问学者 | 海外博后 | 留学 DIY | 签证指南 | 出国考试 | 海外院所点评 | 海外校友录 | 海归之家 |
|
||||
| -------- | -------- | -------- | -------- | -------- | -------- | -------- | ------------ | ---------- | -------- |
|
||||
| 336 | 131 | 386 | 385 | 334 | 335 | 337 | 399 | 见院校路由 | 428 |
|
||||
|
||||
化学化工区
|
||||
|
||||
| 有机交流 | 有机资源 | 高分子 | 无机 / 物化 | 分析 | 催化 | 工艺技术 | 化工设备 | 石油化工 | 精细化工 | 电化学 | 环境 | SciFinder/Reaxys |
|
||||
| -------- | -------- | ------ | ----------- | ---- | ---- | -------- | -------- | -------- | -------- | ------ | ---- | ---------------- |
|
||||
| 189 | 325 | 236 | 170 | 238 | 190 | 373 | 374 | 212 | 227 | 263 | 230 | 343 |
|
||||
|
||||
材料区
|
||||
|
||||
| 材料综合 | 材料工程 | 微米和纳米 | 晶体 | 金属 | 无机非金属 | 生物材料 | 功能材料 | 复合材料 |
|
||||
| -------- | -------- | ---------- | ---- | ---- | ---------- | -------- | -------- | -------- |
|
||||
| 378 | 379 | 233 | 262 | 301 | 213 | 286 | 364 | 365 |
|
||||
|
||||
计算模拟区
|
||||
|
||||
| 第一性原理 | 量子化学 | 计算模拟 | 分子模拟 | 仿真模拟 | 程序语言 |
|
||||
| ---------- | -------- | -------- | -------- | -------- | -------- |
|
||||
| 291 | 290 | 279 | 322 | 292 | 312 |
|
||||
|
||||
生物医药区
|
||||
|
||||
| 新药研发 | 药学 | 药品生产 | 分子生物 | 微生物 | 动植物 | 生物科学 | 医学 |
|
||||
| -------- | ---- | -------- | -------- | ------ | ------ | -------- | ---- |
|
||||
| 192 | 148 | 429 | 366 | 367 | 368 | 144 | 142 |
|
||||
|
||||
人文经济区
|
||||
|
||||
| 金融投资 | 人文社科 | 管理学 | 经济学 |
|
||||
| -------- | -------- | ------ | ------ |
|
||||
| 272 | 453 | 447 | 446 |
|
||||
|
||||
专业学科区
|
||||
|
||||
| 数理科学综合 | 机械 | 物理 | 数学 | 农林 | 食品 | 地学 | 能源 | 信息科学 | 土木建筑 | 航空航天 | 转基因 |
|
||||
| ------------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | -------- | -------- | -------- | ------ |
|
||||
| 452 | 370 | 228 | 323 | 371 | 207 | 261 | 372 | 145 | 147 | 434 | 438 |
|
||||
|
||||
注册执考区
|
||||
|
||||
| 化环类执考 | 医药类考试 | 土建类考试 | 经管类考试 | 其他类执考 |
|
||||
| ---------- | ---------- | ---------- | ---------- | ---------- |
|
||||
| 414 | 417 | 418 | 415 | 419 |
|
||||
|
||||
文献求助区
|
||||
|
||||
| 文献求助 | 外文书籍求助 | 标准与专利 | 检索知识 | 代理 Proxy 资源 |
|
||||
| -------- | ------------ | ---------- | -------- | --------------- |
|
||||
| 158 | 219 | 226 | 130 | 203 |
|
||||
|
||||
资源共享区
|
||||
|
||||
| 电脑软件 | 手机资源 | 科研工具 | 科研资料 | 课件资源 | 试题资源 | 资源求助 | 电脑使用 |
|
||||
| -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
|
||||
| 55 | 410 | 188 | 300 | 112 | 380 | 401 | 347 |
|
||||
|
||||
科研市场区
|
||||
|
||||
| 课堂列表 | 综合广告 | 试剂耗材抗体 | 仪器设备 | 测试定制合成 | 技术服务 | 留学服务 | 教育培训 | 个人求购专版 | 个人转让专版 | QQ 群 / 公众号专版 | 手机红包 | 金币购物 |
|
||||
| -------- | -------- | ------------ | -------- | ------------ | -------- | -------- | -------- | ------------ | ------------ | ------------------ | -------- | -------- |
|
||||
| 454 | 284 | 390 | 389 | 392 | 396 | 350 | 394 | 316 | 436 | 362 | 302 | 460 |
|
||||
|
||||
论坛事务区
|
||||
|
||||
| 木虫讲堂 | 论坛更新日志 | 论坛公告发布 | 我来提意见 | 版主交流 | 规章制度 | 论坛使用帮助 (只读) | 我与小木虫的故事 |
|
||||
| -------- | ------------ | ------------ | ---------- | -------- | -------- | ------------------- | ---------------- |
|
||||
| 468 | 437 | 5 | 321 | 134 | 317 | 215 | 376 |
|
||||
|
||||
版块孵化区
|
||||
|
||||
| 版块工场 |
|
||||
| -------- |
|
||||
| myf |
|
||||
|
||||
</Route>
|
||||
|
||||
## 一亩三分地
|
||||
|
||||
### 主题帖
|
||||
|
|
|
|||
|
|
@ -3516,6 +3516,9 @@ router.get('/uisdc/news', require('./routes/uisdc/news'));
|
|||
router.get('/uisdc/zt/:title?', require('./routes/uisdc/zt'));
|
||||
router.get('/uisdc/topic/:title?/:sort?', require('./routes/uisdc/topic'));
|
||||
|
||||
// 小木虫
|
||||
router.get('/muchong/:id/:type?/:sort?', require('./routes/muchong/index'));
|
||||
|
||||
// 求是网
|
||||
router.get('/qstheory/:category?', require('./routes/qstheory/index'));
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,56 @@
|
|||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
const iconv = require('iconv-lite');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const id = ctx.params.id || '';
|
||||
const sort = ctx.params.sort || '';
|
||||
const type = ctx.params.type || 'all';
|
||||
|
||||
const rootUrl = 'http://muchong.com';
|
||||
const currentUrl = `${rootUrl}/f-${id}-1${sort === '' ? '' : '-' + sort}${type === 'all' ? '' : '-typeid-' + type}`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
responseType: 'buffer',
|
||||
});
|
||||
|
||||
const $ = cheerio.load(iconv.decode(response.data, 'gbk'));
|
||||
|
||||
const list = $('.xmc_bpt tbody .forum_list')
|
||||
.slice(1, 10)
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
return {
|
||||
author: item.find('.by cite a').text(),
|
||||
link: `${rootUrl}${item.find('.a_subject').attr('href')}`,
|
||||
title: item.find('.thread-name span').eq(0).text() + item.find('.a_subject').text(),
|
||||
pubDate: new Date(sort === '' ? item.find('.by cite nobr').text() : item.find('.by .xmc_b9').eq(0).text()).toUTCString(),
|
||||
};
|
||||
})
|
||||
.get();
|
||||
|
||||
const items = await Promise.all(
|
||||
list.map(
|
||||
async (item) =>
|
||||
await ctx.cache.tryGet(item.link, async () => {
|
||||
const detailResponse = await got({
|
||||
method: 'get',
|
||||
url: item.link,
|
||||
responseType: 'buffer',
|
||||
});
|
||||
const content = cheerio.load(iconv.decode(detailResponse.data, 'gbk'));
|
||||
|
||||
item.description = content('#pid1').find('.t_fsz').html();
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: $('title').text().replace('-学术科研互动平台', ''),
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
Loading…
Reference in New Issue