Skip to content

Commit c54827d

Browse files
committed
增加指定artical配置
1 parent fdef1cd commit c54827d

File tree

4 files changed

+75
-44
lines changed

4 files changed

+75
-44
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module.exports = {
1818
columnBaseUrl: 'https://time.geekbang.org/column/article/', // 该配置项不需要改动
1919
columnName: '玩转VScode', // 专栏名称
2020
firstArticalId: 18053, //专栏第一篇文章的ID
21+
articalIds: [201700,202772,204472,205784], //指定下载的articalId, 优先级更高, 配置后firstArticalId配置将失效
2122
isdownloadVideo: false, // 是否下载音频
2223
isComment: false, // 是否导出评论
2324
cookie: 'cookie'
@@ -30,6 +31,8 @@ module.exports = {
3031

3132
* `firstArticalId` 这个参数最好配置专栏第一篇文章的 `ID` ,这个可以获取专栏的所有的文章,若不是第一篇文章的`ID` 则获取的是该文章以及之后的文章
3233

34+
* `articalIds` 这个参数配置为需要获取的文章的所有的 `ID`
35+
3336
* `cookie` 你在网页版登录后返回的`cookie`信息
3437

3538
### 运行

columnArticleList.js

+26-5
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,23 @@ const downloadComment = require('./downloadComment.js');
1111
* 执行方法
1212
*/
1313
(async function getColumnArticleList (firstArticalId){
14-
await utils.createDir('geektime_'+config.columnName);
14+
await utils.createDir('geektime_' + config.columnName);
1515
console.log('专栏文章链接开始获取');
1616
let columnArticleUrlList = [];
17+
let type = 0;
18+
19+
//指定id下载
20+
let assignIndex = 1;
21+
if (config.articalIds && config.articalIds.length > 0) {
22+
type = 1;
23+
firstArticalId = config.articalIds[0];
24+
console.log('通过firstArticalId配置进行文章获取');
25+
} else {
26+
console.log('通过articalIds配置进行文章获取');
27+
}
28+
1729
let articalId = firstArticalId;
30+
1831
async function getNextColumnArticleUrl (){
1932
try {
2033
let res = await superagent.post(config.url)
@@ -71,18 +84,26 @@ const downloadComment = require('./downloadComment.js');
7184
path.resolve(__dirname, 'geektime_' + config.columnName)
7285
);
7386
};
87+
7488
// 判断是否还有下一篇文章
75-
let neighborRight = columnArticle.neighbors.right;
76-
if (neighborRight && neighborRight.id){
77-
articalId = neighborRight.id;
89+
let nextId;
90+
if(type == 1) {
91+
nextId = config.articalIds.length >= assignIndex ? config.articalIds[assignIndex] : undefined;
92+
assignIndex++;
93+
} else {
94+
nextId = columnArticle.neighbors.right ? columnArticle.neighbors.right : undefined;
95+
}
96+
97+
if (nextId){
98+
articalId = nextId;
7899
await utils.sleep(1.5);
79100
await getNextColumnArticleUrl();
80101
};
81102
} catch(err){
82103
console.log(`访问 地址 ${config.columnBaseUrl + articalId} err`, err.message);
83104
};
84105
};
85-
await getNextColumnArticleUrl(firstArticalId);
106+
await getNextColumnArticleUrl();
86107
console.log('专栏文章链接获取完成');
87108
utils.writeToFile(`geektime_${config.columnName}`, JSON.stringify(columnArticleUrlList,null,4));
88109
return columnArticleUrlList;

config.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ module.exports = {
55
url: 'https://time.geekbang.org/serv/v1/article',
66
commentUrl: 'https://time.geekbang.org/serv/v1/comments',
77
columnBaseUrl: 'https://time.geekbang.org/column/article/',
8-
columnName: '软件工程之美',
9-
firstArticalId: 85730, //专栏第一篇文章的ID
8+
columnName: '分布式协议与算法实战',
9+
firstArticalId: 201700, //专栏第一篇文章的ID
10+
articalIds: [201700,202772,204472,205784], //指定下载的articalId, 优先级更高, 配置后firstArticalId配置将失效
1011
isdownloadVideo: true, // 是否下载音频
1112
isComment: true, // 是否导出评论
1213
cookie: 'cookie'

package-lock.json

+43-37
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)