diff --git a/docs/bbs.md b/docs/bbs.md index a9a0e3cad..3615e1e44 100644 --- a/docs/bbs.md +++ b/docs/bbs.md @@ -475,6 +475,116 @@ pageClass: routes +## 小木虫论坛 + +### 分类 + + + +::: 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 | + + + ## 一亩三分地 ### 主题帖 diff --git a/lib/router.js b/lib/router.js index 4a71ff401..300a527d2 100644 --- a/lib/router.js +++ b/lib/router.js @@ -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')); diff --git a/lib/routes/muchong/index.js b/lib/routes/muchong/index.js new file mode 100644 index 000000000..3646d01a5 --- /dev/null +++ b/lib/routes/muchong/index.js @@ -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, + }; +};