PullDataServiceNew.js 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. const axios = require('axios');
  2. const config = require('../etc/config.json');
  3. const helper = require('./helper');
  4. class PullDataServiceNew {
  5. constructor(redis_help) {
  6. this.mRedis = redis_help
  7. this.session = axios.create({
  8. baseURL: config.isDebug?config.pull_data_new_config.debug_host:config.pull_data_new_config.release_host,
  9. headers: {
  10. 'Accept': 'application/json, text/plain, */*',
  11. 'api-key': config.pull_data_new_config['api-key'],
  12. 'api-secret': config.pull_data_new_config['api-secret']
  13. }
  14. });
  15. this.token = ""
  16. }
  17. async get_novel_material_list(cur_timeRange,n_start_time,size=500) {
  18. let maxRetries = 3
  19. let delay = 1000;
  20. let otherStr = null
  21. if(cur_timeRange.pull_day!=null&&cur_timeRange.pull_day!=""&&cur_timeRange.pull_day!=undefined){
  22. otherStr = cur_timeRange.pull_day
  23. }
  24. for (let i = 0; i < maxRetries; i++) {
  25. try {
  26. var now = new Date(); // 当前时间
  27. if(cur_timeRange!=null){
  28. if(cur_timeRange.start_time==null||cur_timeRange.start_time==""||cur_timeRange.start_time==undefined){
  29. now = helper.getTimeStampByHourMinute(cur_timeRange.start,otherStr)
  30. }else{
  31. now = helper.getTimeStampByHourMinute(cur_timeRange.start_time,otherStr)
  32. }
  33. }
  34. let interval_minute = 60;
  35. if(cur_timeRange!=null){
  36. interval_minute = cur_timeRange.interval_minute
  37. }
  38. // const fiveMinutesAgo = new Date(now - 5 * 60 * 1000); // 5分钟前的时间
  39. const fiveMinutesAgo = new Date(now - interval_minute * 60 * 1000); // 60分钟前的时间
  40. let data = {
  41. startTime:fiveMinutesAgo.getTime(),
  42. endTime:now.getTime(),
  43. count:false
  44. }
  45. if(cur_timeRange!=null){
  46. cur_timeRange.pull_time = data
  47. }
  48. let params = `?startTime=${n_start_time==0?data.startTime:n_start_time}&pageSize=500`
  49. let url = config.pull_data_new_config.get_novel_material_list+params
  50. console.log(url,data)
  51. var response = await this.session.get(url);
  52. if(response.data.msg!="success"){
  53. throw response.data
  54. }else{
  55. return response.data;
  56. }
  57. } catch (error) {
  58. if (i === maxRetries - 1) return {data:null,success:false,msg:error};
  59. console.log(`Retry get_novel_material_list ${i + 1} of ${maxRetries}`);
  60. await new Promise(resolve => setTimeout(resolve, delay * (i + 1)));
  61. }
  62. }
  63. }
  64. }
  65. module.exports = PullDataServiceNew;