fix(route): niaogebiji (#13354)

This commit is contained in:
Tony 2023-09-22 01:36:37 +08:00 committed by GitHub
parent 6b7949a96a
commit cfe8569741
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 219 additions and 210 deletions

View File

@ -1868,9 +1868,9 @@ router.get('/gov/chongqing/ljxq/zwgk/:caty', lazyloadRouteHandler('./routes/gov/
router.get('/12379', lazyloadRouteHandler('./routes/12379/index'));
// 鸟哥笔记
router.get('/ngbj', lazyloadRouteHandler('./routes/niaogebiji/index'));
router.get('/ngbj/today', lazyloadRouteHandler('./routes/niaogebiji/today'));
router.get('/ngbj/cat/:cat', lazyloadRouteHandler('./routes/niaogebiji/cat'));
// router.get('/ngbj', lazyloadRouteHandler('./routes/niaogebiji/index'));
// router.get('/ngbj/today', lazyloadRouteHandler('./routes/niaogebiji/today'));
// router.get('/ngbj/cat/:cat', lazyloadRouteHandler('./routes/niaogebiji/cat'));
// 梅花网
router.get('/meihua/shots/:caty', lazyloadRouteHandler('./routes/meihua/shots'));

View File

@ -1,86 +0,0 @@
const got = require('@/utils/got');
const cheerio = require('cheerio');
/**
* 在一个CheerioElement数组中查找有你想要的属性的元素
* @author KotoriK
* @param {Array<CheerioElement>} eles CheerioElement数组
* @param {string} attrName 要查找的属性名称
* @param {boolean} recursive 是否递归子节点
* @returns 有你想要元素的数组
*/
function findAttributeFromNodes(eles, attrName, recursive = false) {
let array = [];
for (const ele of eles) {
if (ele.attribs && ele.attribs[attrName]) {
array.push(ele);
}
if (recursive && ele.children) {
array = array.concat(findAttributeFromNodes(ele.children, attrName, true));
}
}
return array;
}
/**
* 在一个CheerioElement数组中查找有你给的属性及对应的值的元素
* @author KotoriK
* @param {Array<CheerioElement>} eles CheerioElement数组
* @param {string} attrName 要查找的属性名称
* @param {boolean} recursive 是否递归子节点
* @returns 有你想要元素的数组
*/
function findMatch(eles, attrName, value, recursive = false) {
let array = [];
for (const ele of eles) {
if (ele.attribs && ele.attribs[attrName] === value) {
array.push(ele);
}
if (recursive && ele.children) {
array = array.concat(findMatch(ele.children, attrName, value, true));
}
}
return array;
}
module.exports = async (ctx) => {
const cat_id = ctx.params.cat;
const response = await got({
method: 'get',
url: `http://www.niaogebiji.com/cat/${cat_id}`,
});
const $ = cheerio.load(response.data);
const cat_name = $('h1').text();
const articles = $('div.articleBox.clearfix');
ctx.state.data = {
title: `鸟哥笔记-分类-${cat_name}`,
link: `http://www.niaogebiji.com/cat/${cat_id}`,
item: response.data
? await Promise.all(
articles.toArray().map((element) => {
const article_div = findAttributeFromNodes(element.children, 'href')[0];
const article_link = `http://www.niaogebiji.com${article_div.attribs.href}`;
return (async () => ({
title: findMatch(article_div.children, 'class', 'articleTitle elp', true)[0].children[0].data,
category: cat_name,
description: await ctx.cache.tryGet(`ngbj-${article_div.attribs.href}`, async () => {
// get article
const article_response = await got({
method: 'get',
url: article_link,
});
const article_dom = cheerio.load(article_response.data);
return article_dom('div.mobileHide.pc_content').html();
}),
link: article_link,
pubDate: parseInt(element.attribs['data-timepoint'] + '000'),
}))();
})
)
: [
{
title: '获取失败!',
},
],
};
};

View File

@ -1,40 +0,0 @@
const got = require('@/utils/got');
const cheerio = require('cheerio');
module.exports = async (ctx) => {
const response = await got({
method: 'get',
url: `https://www.niaogebiji.com/`,
});
const $ = cheerio.load(response.data);
const postList = $('.articleListBox').find('.articleBox').get();
const result = await Promise.all(
postList.map(async (item) => {
const title = $(item).find('.article').find('a').find('.articleTitle').text();
const link = 'https://www.niaogebiji.com' + $(item).find('.article').find('a').attr('href');
const guid = link;
const pubDate = new Date(parseInt($(item).attr('data-timepoint')) * 1000).toUTCString();
const single = {
title,
link,
guid,
pubDate,
description: '',
};
const description_key = 'niaogebiji' + guid;
const description_value = await ctx.cache.get(description_key);
if (description_value) {
single.description = description_value;
} else {
const temp = await got(link);
single.description = $(temp.data).find('.article').find('.pc_content').html();
ctx.cache.set(description_key, single.description);
}
return Promise.resolve(single);
})
);
ctx.state.data = { title: '鸟哥笔记', link: 'https://www.niaogebiji.com/', item: result };
};

View File

@ -1,29 +0,0 @@
const got = require('@/utils/got');
module.exports = async (ctx) => {
const response = await got({
method: 'post',
url: 'https://www.niaogebiji.com/pc/bulletin/index',
form: {
page: 1,
pub_time: '',
isfromajax: 1,
},
});
const data = response.data.return_data;
ctx.state.data = {
title: '鸟哥笔记-今日事',
link: 'https://www.niaogebiji.com/pc/bulletin/index',
item: data
? data.map((item) => ({
title: item.title,
description: item.content + `</br><a href="${item.link}">原文链接</a>`,
link: `https://www.niaogebiji.com/pc/bulletin/detail?id=${item.id}`,
pubDate: new Date(parseInt(data[0].pub_time + '000')),
}))
: [
{
title: '获取失败!',
},
],
};
};

53
lib/v2/niaogebiji/cat.js Normal file
View File

@ -0,0 +1,53 @@
const got = require('@/utils/got');
const cheerio = require('cheerio');
const { parseDate } = require('@/utils/parse-date');
const timezone = require('@/utils/timezone');
module.exports = async (ctx) => {
const categoryId = ctx.params.cat;
const link = `https://www.niaogebiji.com/cat/${categoryId}`;
const response = await got(link);
const $ = cheerio.load(response.data);
const catName = $('h1').text();
const articles = $('div.articleBox.clearfix')
.toArray()
.map((item) => {
item = $(item);
return {
title: item.find('.articleTitle').text().trim(),
description: item.find('.articleContentInner').text().trim(),
author: item.find('.author').text().trim(),
link: new URL(item.find('a').first().attr('href'), link).href,
category: [
...item
.find('.art_tag')
.toArray()
.map((tag) => $(tag).text().trim()),
catName,
],
};
});
const items = await Promise.all(
articles.map((element) =>
ctx.cache.tryGet(element.link, async () => {
const response = await got(element.link);
const $ = cheerio.load(response.data);
element.pubDate = timezone(parseDate($('.writeTime3').text().trim()), 8);
element.description = $('.pc_content').html();
return element;
})
)
);
ctx.state.data = {
title: $('head title').text(),
description: $('head meta[name="description"]').attr('content'),
link,
item: items,
};
};

View File

@ -0,0 +1,41 @@
const got = require('@/utils/got');
const cheerio = require('cheerio');
const { parseDate } = require('@/utils/parse-date');
module.exports = async (ctx) => {
const baseUrl = 'https://www.niaogebiji.com';
const { data: response } = await got(`${baseUrl}/pc/index/getMoreArticle`);
if (response.return_code !== '200') {
throw Error(response.return_msg);
}
const postList = response.return_data.map((item) => ({
title: item.title,
description: item.summary,
author: item.author,
pubDate: parseDate(item.published_at, 'X'),
updated: parseDate(item.updated_at, 'X'),
category: [item.catname, ...item.tag_list],
link: new URL(item.link, baseUrl).href,
}));
const result = await Promise.all(
postList.map((item) =>
ctx.cache.tryGet(item.link, async () => {
const { data: response } = await got(item.link);
const $ = cheerio.load(response);
item.description = $('.pc_content').html();
return item;
})
)
);
ctx.state.data = {
title: '鸟哥笔记',
link: baseUrl,
item: result,
};
};

View File

@ -0,0 +1,6 @@
module.exports = {
'': ['WenryXu'],
'/': ['WenryXu'],
'/cat/:cat': ['cKotoriKat'],
'/today': ['KotoriK'],
};

View File

@ -0,0 +1,25 @@
module.exports = {
'niaogebiji.com': {
_name: '鸟哥笔记',
'.': [
{
title: '首页',
docs: 'https://docs.rsshub.app/new-media#niao-ge-bi-ji',
source: ['/'],
target: '/niaogebiji',
},
{
title: '今日事',
docs: 'https://docs.rsshub.app/new-media#niao-ge-bi-ji',
source: ['/', '/bulletin'],
target: '/niaogebiji',
},
{
title: '分类目录',
docs: 'https://docs.rsshub.app/new-media#niao-ge-bi-ji',
source: ['/cat/:cat'],
target: '/niaogebiji/cat/:cat',
},
],
},
};

View File

@ -0,0 +1,5 @@
module.exports = (router) => {
router.get('/', require('./index'));
router.get('/cat/:cat', require('./cat'));
router.get('/today', require('./today'));
};

View File

@ -0,0 +1,34 @@
const got = require('@/utils/got');
const { parseDate } = require('@/utils/parse-date');
module.exports = async (ctx) => {
const response = await got({
method: 'post',
url: 'https://www.niaogebiji.com/pc/bulletin/index',
form: {
page: 1,
pub_time: '',
isfromajax: 1,
},
});
if (response.data.return_code !== '200') {
throw Error(response.data.return_msg);
}
const data = response.data.return_data;
ctx.state.data = {
title: '鸟哥笔记-今日事',
link: 'https://www.niaogebiji.com/bulletin',
item: data.map((item) => ({
title: item.title,
description: item.content,
link: item.url,
pubDate: parseDate(item.pub_time, 'X'),
updated: parseDate(item.updated_at, 'X'),
category: item.seo_keywords.split(','),
author: item.user_info.nickname,
})),
};
};

View File

@ -3427,175 +3427,175 @@ column 为 third 时可选的 category:
| 电脑配件 | 手机之家 | 家用电器 | 网络设备 | 办公外设 | 游戏之家 |
| -------- | -------- | -------- | -------- | -------- | -------- |
| cid/2 | cid/3 | cid/4 | cid/5 | cid/6 | cid/7 |
| 电脑软件 | 业内动向 | 品牌整机 | 其它资讯 | 显卡 | CPU |
| -------- | -------- | -------- | -------- | ------ | ------ |
| cid/8 | cid/9 | cid/10 | cid/11 | cid/12 | cid/13 |
| 主板 | 内存 | 硬盘 | 机箱 | 电源 | 散热器 |
| ------ | ------ | ------ | ------ | ------ | ------ |
| cid/14 | cid/15 | cid/16 | cid/17 | cid/18 | cid/19 |
| 光驱 | 声卡 | 键鼠 | 音箱 | 手机厂商 | 手机配件 |
| ------ | ------ | ------ | ------ | -------- | -------- |
| cid/20 | cid/21 | cid/22 | cid/23 | cid/24 | cid/25 |
| PDA | MP3/MP4 | 摄像机 | 数码相机 | 摄像头 | 数码配件 |
| ------ | ------- | ------ | -------- | ------ | -------- |
| cid/26 | cid/27 | cid/29 | cid/30 | cid/31 | cid/32 |
| 电子书 | 导航产品 | 录音笔 | 交换机 | 路由器 | 防火墙 |
| ------ | -------- | ------ | ------ | ------ | ------ |
| cid/33 | cid/34 | cid/35 | cid/37 | cid/38 | cid/40 |
| 网卡 | 网络存储 | UPS | 打印机 | 复印机 | 复合机 |
| ------ | -------- | ------ | ------ | ------ | ------ |
| cid/41 | cid/43 | cid/44 | cid/45 | cid/46 | cid/47 |
| 投影仪 | 扫描仪 | 传真机 | 电脑游戏 | 主机游戏 | 游戏主机 |
| ------ | ------ | ------ | -------- | -------- | -------- |
| cid/48 | cid/49 | cid/51 | cid/52 | cid/53 | cid/54 |
| 掌机游戏 | 电脑驱动 | 桌面系统 | 视点人物 | 数据报告 | 科技前沿 |
| -------- | -------- | -------- | -------- | -------- | -------- |
| cid/55 | cid/57 | cid/58 | cid/62 | cid/63 | cid/65 |
| 笔记本 | 台式机 | 服务器 | 一体机 | 其他 | PC硬件 |
| ------ | ------ | ------ | ------ | ------ | ------ |
| cid/66 | cid/67 | cid/68 | cid/69 | cid/73 | cid/74 |
| 时尚数码 | 软件驱动 | 显示器 | 音箱耳机 | 投影机 | 便携机 |
| -------- | -------- | ------ | -------- | ------- | ------- |
| cid/78 | cid/79 | cid/80 | cid/92 | cid/100 | cid/108 |
| 手机 | MP3 | MP4 | 闪存盘 | DV摄像机 | U盘 |
| ------- | ------- | ------- | ------- | -------- | ------- |
| cid/109 | cid/112 | cid/113 | cid/114 | cid/115 | cid/116 |
| GPS | 移动硬盘 | 操作系统 | 驱动 | 软件 | 软件更新 |
| ------- | -------- | -------- | ------- | ------- | -------- |
| cid/117 | cid/119 | cid/120 | cid/121 | cid/122 | cid/123 |
| 新软推荐 | 业界动态 | 软件评测 | 软件技巧 | 游戏相关 | 驱动研究 |
| -------- | -------- | -------- | -------- | -------- | -------- |
| cid/124 | cid/125 | cid/126 | cid/127 | cid/128 | cid/130 |
| 游戏试玩 | 硬件学堂 | 实用技巧 | 新软体验 | 资讯教程 | 软件横评 |
| -------- | -------- | -------- | -------- | -------- | -------- |
| cid/131 | cid/132 | cid/133 | cid/134 | cid/135 | cid/136 |
| Windows | Mac | Linux | 其它 | 使用技巧 | 深入研究 |
| ------- | ------- | ------- | ------- | -------- | -------- |
| cid/137 | cid/138 | cid/139 | cid/140 | cid/141 | cid/142 |
| 游戏机 | 显示 | 存储 | 音频 | 外设 | 数码 |
| ------- | ------- | ------- | ------- | ------- | ------- |
| cid/144 | cid/145 | cid/146 | cid/147 | cid/148 | cid/151 |
| 网络 | 办公 | 维修 | 安全 | 聊天 | 影音 |
| ------- | ------- | ------- | ------- | ------- | ------- |
| cid/152 | cid/154 | cid/155 | cid/156 | cid/157 | cid/158 |
| 国内 | 国外 | 办公应用 | 设计创意 | 基础知识 | 程序 |
| ------- | ------- | -------- | -------- | -------- | ------- |
| cid/159 | cid/160 | cid/161 | cid/162 | cid/163 | cid/164 |
| 其他硬件 | 电视卡/盒 | 游戏体验 | 平板电视 | 企业动态 | 天文航天 |
| -------- | --------- | -------- | -------- | -------- | -------- |
| cid/166 | cid/170 | cid/172 | cid/173 | cid/174 | cid/175 |
| MID设备 | 数码相框 | 耳机 | 通讯运营商 | 电视盒 | 线材线缆 |
| ------- | -------- | ------- | ---------- | ------- | -------- |
| cid/176 | cid/177 | cid/179 | cid/180 | cid/182 | cid/183 |
| 小家电 | 网络游戏 | 行情信息 | 科学动态 | 生物世界 | 历史考古 |
| ------- | -------- | -------- | -------- | -------- | -------- |
| cid/184 | cid/186 | cid/188 | cid/192 | cid/193 | cid/194 |
| 生科医学 | 地理自然 | 工程建筑 | 苹果手机 | 谷歌Android | 塞班手机 |
| -------- | -------- | -------- | -------- | ----------- | -------- |
| cid/195 | cid/196 | cid/197 | cid/201 | cid/202 | cid/203 |
| 黑莓手机 | 微软手机 | 移动处理器 | 山寨机 | 手机游戏 | 安卓应用 |
| -------- | -------- | ---------- | ------- | -------- | -------- |
| cid/204 | cid/205 | cid/206 | cid/208 | cid/209 | cid/210 |
| 娱乐生活 | 明星全接触 | 电影影讯 | 电视节目 | 音乐戏曲 | 国际风云 |
| -------- | ---------- | -------- | -------- | -------- | -------- |
| cid/212 | cid/213 | cid/214 | cid/215 | cid/216 | cid/217 |
| 国内传真 | 社会民生 | 生活百态 | 医药健康 | 家居尚品 | 星座旅游 |
| -------- | -------- | -------- | -------- | -------- | -------- |
| cid/218 | cid/219 | cid/220 | cid/221 | cid/222 | cid/223 |
| 评论分析 | 体育竞技 | IT八卦 | 科技动态 | 游戏动态 | 手机系统 |
| -------- | -------- | ------- | -------- | -------- | -------- |
| cid/224 | cid/225 | cid/226 | cid/227 | cid/228 | cid/232 |
| 智能设备 | 生活电器 | 汽车相关 | 飞机航空 | 手机周边 | 网络运营商 |
| -------- | -------- | -------- | -------- | -------- | ---------- |
| cid/233 | cid/234 | cid/235 | cid/236 | cid/237 | cid/238 |
| 平板电脑 | 苹果iPad | 安卓平板 | Windows平板 | 创业路上 | 网友热议 |
| -------- | -------- | -------- | ----------- | -------- | -------- |
| cid/239 | cid/240 | cid/241 | cid/242 | cid/243 | cid/244 |
| IT圈 | 数码周边 | 智能手环 | 智能眼镜 | 智能手表 | iOS应用 |
| ------- | -------- | -------- | -------- | -------- | ------- |
| cid/246 | cid/247 | cid/248 | cid/249 | cid/250 | cid/251 |
| 壁纸主题 | 游戏厂商 | 数理化学 | 科普知识 | 奇趣探险 | 汽车世界 |
| -------- | -------- | -------- | -------- | -------- | -------- |
| cid/252 | cid/253 | cid/254 | cid/255 | cid/256 | cid/257 |
| 传统汽车 | 电动汽车 | 新能源汽车 | 无人驾驶汽车 | 车载系统 | 车载配件 |
| -------- | -------- | ---------- | ------------ | -------- | -------- |
| cid/258 | cid/259 | cid/260 | cid/261 | cid/262 | cid/263 |
| 汽车厂商 | 影音动漫 | 精彩影视 | 电影动画 | 艺术设计 | 摄影达人 |
| -------- | -------- | -------- | -------- | -------- | -------- |
| cid/264 | cid/265 | cid/266 | cid/267 | cid/269 | cid/270 |
| 固件 | 样张赏析 | 创意摄影 | WP应用 | 教育未来 | 安卓手机 |
| ------- | -------- | -------- | ------- | -------- | -------- |
| cid/272 | cid/273 | cid/274 | cid/284 | cid/285 | cid/288 |
| 智能穿戴 | 移动应用 | 电子竞技 | 游戏八卦 | 游戏评测 | 生活百科 |
| -------- | -------- | -------- | -------- | -------- | -------- |
| cid/290 | cid/292 | cid/297 | cid/298 | cid/299 | cid/301 |
| 智能家居 | 智能插座 | 智能摄像头 | 智能路由器 | 智能体重秤 | 智能血压计 |
| -------- | -------- | ---------- | ---------- | ---------- | ---------- |
| cid/302 | cid/303 | cid/304 | cid/305 | cid/306 | cid/307 |
| 空气净化器 | 智能净水器 | 电动两轮车 | 公司财报 | 智能行车记录仪 | 网络影视 |
| ---------- | ---------- | ---------- | -------- | -------------- | -------- |
| cid/308 | cid/309 | cid/310 | cid/311 | cid/312 | cid/313 |
| 多轴无人机 | 摩托车 | 自行车 | 共享经济 | 生活周边 | 网络安全 |
| ---------- | ------- | ------- | -------- | -------- | -------- |
| cid/314 | cid/316 | cid/317 | cid/320 | cid/321 | cid/322 |
| 考勤机 | 网络红人 | 火车高铁 | 机器人 | 其他网络 | 快递物流 |
| ------- | -------- | -------- | ------- | -------- | -------- |
| cid/323 | cid/324 | cid/325 | cid/326 | cid/327 | cid/328 |
| 科技资讯 | 好货推荐 | 日常用品 | 餐饮零食 | 化妆品 | 运动健康 |
| -------- | -------- | -------- | -------- | ------- | -------- |
| cid/329 | cid/334 | cid/335 | cid/336 | cid/339 | cid/340 |
| 酒水饮料 | 个人洗护 | 电子产品 | 服装鞋帽 | 会员卡 | 用户投稿 |
| -------- | -------- | -------- | -------- | ------- | -------- |
| cid/341 | cid/342 | cid/343 | cid/345 | cid/346 | cid/351 |
| APP投稿 | PC投稿 | 视频快讯 | 新品开箱 | 技巧教程 | 科技快讯 |
| ------- | ------- | -------- | -------- | -------- | -------- |
| cid/352 | cid/353 | cid/354 | cid/355 | cid/356 | cid/357 |
| 产品评测 | 人物专访 | 会议活动 | 数码影音 | 数码影像 | 游戏周边 |
| -------- | -------- | -------- | -------- | -------- | -------- |
| cid/358 | cid/359 | cid/360 | cid/361 | cid/362 | cid/368 |
| 汽车周边 | 个人交通 | 其他交通 |
| -------- | -------- | -------- |
| cid/369 | cid/370 | cid/371 |
@ -4182,15 +4182,15 @@ column 为 third 时可选的 category:
### 首页 {#niao-ge-bi-ji-shou-ye}
<Route author="WenryXu" example="/ngbj" path="/ngbj"/>
<Route author="WenryXu" example="/niaogebiji" path="/niaogebiji" radar="1"/>
### 今日事 {#niao-ge-bi-ji-jin-ri-shi}
<Route author="KotoriK" example="/ngbj/today" path="/ngbj/today"/>
<Route author="KotoriK" example="/niaogebiji/today" path="/niaogebiji/today" radar="1"/>
### 分类目录 {#niao-ge-bi-ji-fen-lei-mu-lu}
<Route author="KotoriK" example="/ngbj/cat/103" path="/ngbj/cat/:cat" paramsDesc={['如https://www.niaogebiji.com/cat/103,最后的数字就是要填写在这的id']}/>
<Route author="KotoriK" example="/niaogebiji/cat/103" path="/niaogebiji/cat/:cat" paramsDesc={['如 https://www.niaogebiji.com/cat/103最后的数字就是id']} radar="1"/>
## 派代 {#pai-dai}
@ -5669,7 +5669,7 @@ column 为 third 时可选的 category:
| 小说 | 诗歌 | 散文 | 纪实 | 其他 |
| ------------- | ------------- | ------------- | ------------- | ------------- |
| 404015/404017 | 404015/404020 | 404015/404018 | 404015/404019 | 404015/419926 |
| 平台推荐 | 本周之星 | 2018年5月18日前原创作品 |
| ------------- | ------------- | ----------------------- |
| 404015/419789 | 404015/431511 | 404009 |
@ -5677,23 +5677,23 @@ column 为 third 时可选的 category:
| 《人民文学》 | 《诗刊》 | 《民族文学》 | 《收获》 | 《十月》 |
| -------------------- | -------------------- | -------------------- | -------------------- | -------------------- |
| 404015/416204/418925 | 404015/416204/418926 | 404015/416204/418928 | 404015/416204/418958 | 404015/416204/418956 |
| 《小说选刊》 | 《北京文学》 | 《上海文学》 | 《天津文学》 | 《草原》 |
| -------------------- | -------------------- | -------------------- | -------------------- | -------------------- |
| 404015/416204/418929 | 404015/416204/418954 | 404015/416204/418962 | 404015/416204/419004 | 404015/416204/418989 |
| 《黄河》 | 《江南》 | 《钟山》 | 《广州文艺》 | 《湖南文学》 |
| -------------------- | -------------------- | -------------------- | -------------------- | -------------------- |
| 404015/416204/426204 | 404015/416204/418957 | 404015/416204/418984 | 404015/416204/419881 | 404015/416204/419156 |
| 《山西文学》 | 《花城》 | 《青年作家》 | 《雨花》 | 《红豆》 |
| -------------------- | -------------------- | -------------------- | -------------------- | -------------------- |
| 404015/416204/419827 | 404015/416204/418960 | 404015/416204/418967 | 404015/416204/419885 | 404015/416204/418993 |
| 《长江文艺》 | 《中国作家》 | 《青年文学》 | 《美文》 | 《芙蓉》 |
| -------------------- | -------------------- | -------------------- | -------------------- | -------------------- |
| 404015/416204/418961 | 404015/416204/418927 | 404015/416204/418979 | 404015/416204/418985 | 404015/416204/418986 |
| 《长城》 | 《福建文学》 | 《啄木鸟》 | 《芳草》 | 《小说月报》 |
| -------------------- | -------------------- | -------------------- | -------------------- | -------------------- |
| 404015/416204/418987 | 404015/416204/419003 | 404015/416204/435225 | 404015/416204/424311 | 404015/416204/418963 |