1+ // 获取专栏文章列表
2+ const config = require ( './config.js' ) ;
3+ const superagent = require ( 'superagent' ) ;
4+ const utils = require ( './utils' ) ;
5+ const path = require ( 'path' ) ;
6+ const generaterPdf = require ( './generaterPdf.js' ) ;
7+
8+ ( async function getColumnArticleList ( firstArticalId ) {
9+ await utils . createDir ( 'geektime_' + config . columnName ) ;
10+ console . log ( '专栏文章链接开始获取' ) ;
11+ let columnArticleUrlList = [ ] ;
12+ let articalId = firstArticalId ;
13+ async function getNextColumnArticleUrl ( ) {
14+ try {
15+ let res = await superagent . post ( config . url )
16+ . set ( {
17+ 'Content-Type' : 'application/json' ,
18+ 'Cookie' : config . cookie ,
19+ 'Referer' : config . columnBaseUrl + articalId ,
20+ 'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
21+ } ) . send ( {
22+ 'id' : articalId ,
23+ 'include_neighbors' : true
24+ } ) ;
25+ console . log ( res . body . data . article_title ) ;
26+ let columnArticle = res . body . data ;
27+ let articleInfo = {
28+ articleTitle : columnArticle . article_title , // 文章标题
29+ articalUrl : config . columnBaseUrl + articalId , // 文章地址
30+ articleContent : columnArticle . article_content , // 文章内容
31+ articleCover : columnArticle . article_cover , // 文章背景图
32+ authorName : columnArticle . author_name , // 文章作者
33+ articleCtime : utils . formatDate ( columnArticle . article_ctime ) , // 文章创建时间 unix 时间戳 单位为 s
34+ articleNeighbors : columnArticle . neighbors , // 上下篇文章信息
35+ audioDownloadUrl : columnArticle . audio_download_url ,
36+ audioTitle : columnArticle . audio_title
37+ } ;
38+ columnArticleUrlList . push ( articleInfo ) ;
39+ //生成PDF
40+ await generaterPdf ( articleInfo ,
41+ columnArticle . article_title + '.pdf' ,
42+ path . resolve ( __dirname , config . columnName )
43+ ) ;
44+ // 判断是否还有下一篇文章
45+ let neighborRight = columnArticle . neighbors . right ;
46+ if ( neighborRight && neighborRight . id ) {
47+ articalId = neighborRight . id ;
48+ await utils . sleep ( 1.5 ) ;
49+ await getNextColumnArticleUrl ( ) ;
50+ } ;
51+ } catch ( err ) {
52+ console . log ( `访问 地址 ${ config . columnBaseUrl + articalId } err` , err . message ) ;
53+ } ;
54+ } ;
55+ await getNextColumnArticleUrl ( firstArticalId ) ;
56+ console . log ( '专栏文章链接获取完成' ) ;
57+ utils . writeToFile ( `${ config . columnName } ` , JSON . stringify ( columnArticleUrlList , null , 4 ) ) ;
58+ return columnArticleUrlList ;
59+ } ) ( config . firstArticalId ) ;
0 commit comments