1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| const axios = require('axios')
function _getList(id, callback){ let cb_status = { status: 0, msg: `` } new Promise((resolve,reject)=>{ let {cate,cate_id,newstype_id,sign,source_name} = id; let target_url = `http://127.0.0.1:8084/?url=https://www.zhihu.com/api/v4/topics/${cate_id}/feeds/timeline_activity?limit=5&after_id=5` axios.get(target_url).then(res=>{ if( res.data.status_code == 200 ){ cb_status.status = 200; cb_status.msg = `抓取数据成功`; resolve({ cate: cate, cate_id: cate_id, complete_data:res.data.complete_data , newstype_id:newstype_id , sign:sign , source_name:source_name, target_url: target_url }); }else{ console.log( `抓取数据失败` ); cb_status.status = 201; cb_status.msg = `抓取数据失败`; resolve(cb_status); }
}); }).then(({cate , cate_id , complete_data, newstype_id , sign , source_name, target_url})=>{
complete_data.data.forEach(element => { (function(one,callback){ let default_data = { content: "", content_url: [], cover_type: 145, cover_url: [
], introduction: ``, is_update: 0, media_type: 0, news_type: [], open_url: ``, source_name: ``, tag: [], title: "", video_url: "", weight: -3 }
default_data.tag.push( cate ); default_data.introduction = `${one.target.question.title}`; default_data.title = `${one.target.question.title}`; default_data.open_url = `https://www.zhihu.com/question/${one.target.question.id}/answer/${one.target.id}`; if(one.target.thumbnail){ default_data.cover_url.push({ height: 164, width: 248, url_type: '图片', url_name: `${one.target.thumbnail}`
}); } default_data.source_name = `${source_name}`; default_data.cover_type = newstype_id; default_data.news_type.push(newstype_id); default_data.created_time = one.target.created_time;
if( sign == 0 || (sign < one.target.created_time&&sign!=0) ){ axios.post( `https://屏蔽/management/news`,default_data ) .then(result=>{ console.log(result.data.status_code, result.data.message); callback(cb_status); }).catch(err => console.log(`提交出错`,err)); }else{ cb_status.status = 202; cb_status.msg = `已经存储过`; callback(cb_status); }
})(element,callback) });
});
}
module.exports = { getList: _getList }
|