PULL_DATA.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. const CMD = {}
  2. const time_count = 5000;
  3. const redis_help = require('../src/use_redis');
  4. const origin_data_controllers = require('../src/data_manager/Controllers/origin_data_controllers');
  5. const pull_log_controllers = require('../src/data_manager/Controllers/pull_log_controllers');
  6. const helper = require('../src/helper');
  7. const axios = require('axios')
  8. const HttpClient = require('../src/HttpClient')
  9. const config = require('../etc/config.json')
  10. var session = null
  11. var cur_page = 0
  12. var task_list = []
  13. async function processTask(){
  14. try{
  15. if(cur_page>6){
  16. throw "没有数据了"
  17. }
  18. let FilterConfig = await redis_help.getKeyValue("FilterConfig")
  19. FilterConfig = JSON.parse(FilterConfig)
  20. let response = await CMD.get_novel_material_list(cur_page,5000)
  21. // console.log("get_novel_material_list:",response)
  22. let materialId_list = []
  23. let materialId_data_list = []
  24. for (let index = 0; index < response.result.list.length; index++) {
  25. const origin_element = response.result.list[index];
  26. const result = await origin_data_controllers.getOriginData({
  27. materialId:origin_element.materialId})
  28. if(result.success){
  29. await origin_data_controllers.updateOriginData({id:result.data.id},
  30. {
  31. kepp_num:origin_element.favoriteCount.count,
  32. comment_num:origin_element.commentCount.count,
  33. like_num:origin_element.likeCount.count,
  34. shared_num:origin_element.shareCount.count
  35. })
  36. }else{
  37. if(CMD.isRight(FilterConfig,origin_element)){
  38. materialId_list.push(origin_element.materialId)
  39. materialId_data_list[origin_element.materialId] = {
  40. kepp_num:origin_element.favoriteCount.count,
  41. comment_num:origin_element.commentCount.count,
  42. like_num:origin_element.likeCount.count,
  43. shared_num:origin_element.shareCount.count
  44. }
  45. }
  46. }
  47. }
  48. response = await CMD.get_detail(materialId_list)
  49. for (let index = 0; index < response.result.list.length; index++) {
  50. const element = response.result.list[index];
  51. const info = materialId_data_list[element.materialId]
  52. if(element.hasAnchorInfo){
  53. await origin_data_controllers.createOriginData(
  54. {
  55. video_id:element.awemeId,
  56. materialId:element.materialId,
  57. video_link:element.awemeUrl,
  58. title:element.title,
  59. publish_time:new Date(element.publishTime),
  60. kepp_num:info.kepp_num,
  61. comment_num:info.comment_num,
  62. like_num:info.like_num,
  63. shared_num:info.shared_num,
  64. is_guajian:1,
  65. guajian_link:element.landingUrl,
  66. status:0
  67. }
  68. )
  69. }
  70. }
  71. // console.log("get_detail:",response)
  72. // await pull_log_controllers.createData()
  73. }catch(e){
  74. console.log("PULL_DATA: error:",e)
  75. }finally{
  76. cur_page++;
  77. setTimeout(processTask,time_count)
  78. }
  79. }
  80. CMD.isRight = function(FilterConfig,origin_element){
  81. if(origin_element.likeCount.count < FilterConfig.like_num){// console.log("点赞数正确")
  82. return false
  83. }
  84. if(origin_element.favoriteCount.count < FilterConfig.kepp_num){ // console.log("收藏数正确")
  85. return false
  86. }
  87. if(origin_element.shareCount.count < FilterConfig.shared_num){ // console.log("分享数正确")
  88. return false
  89. }
  90. if(origin_element.commentCount.count < FilterConfig.comment_num){ // console.log("评论")
  91. return false
  92. }
  93. return true
  94. }
  95. CMD.getToken = async function(){
  96. const response = await session.post(config.pull_data_config.get_token,{
  97. userName:config.pull_data_config.userName,
  98. verCode:"1234",
  99. password:config.pull_data_config.password,
  100. loginType:"OPENAPI"
  101. });
  102. return response.data
  103. }
  104. CMD.get_novel_material_list = async function(page,size) {
  105. const now = new Date(); // 当前时间
  106. // const fiveMinutesAgo = new Date(now - 5 * 60 * 1000); // 5分钟前的时间
  107. const fiveMinutesAgo = new Date(now - 200 * 60 * 1000); // 50分钟前的时间
  108. let data = {
  109. startTime:fiveMinutesAgo.getTime(),
  110. endTime:now.getTime()
  111. }
  112. let params = `page=${page}&size=${size}&sort=update_time,desc`
  113. let url = config.pull_data_config.get_novel_material_list+params
  114. console.log(url,data)
  115. const response = await session.post(url,data, {
  116. headers: {
  117. 'token':await redis_help.getKeyValue("pull_data_token")
  118. }
  119. });
  120. return response.data
  121. }
  122. CMD.get_detail = async function(materialId_list) {
  123. let data = {
  124. list:materialId_list
  125. }
  126. const response = await session.post(config.pull_data_config.get_detail,data, {
  127. headers: {
  128. 'token':await redis_help.getKeyValue("pull_data_token")
  129. }
  130. });
  131. return response.data
  132. }
  133. CMD.init = async function(){
  134. session = axios.create({
  135. baseURL: config.isDebug?config.pull_data_config.debug_host:config.pull_data_config.release_host,
  136. headers: {
  137. 'Accept': 'application/json, text/plain, */*',
  138. }
  139. });
  140. redis_help.connect(async ()=>{
  141. let response = await CMD.getToken()
  142. console.log("getToken:",response.result.token)
  143. await redis_help.setKeyValue("pull_data_token",response.result.token)
  144. processTask()
  145. })
  146. }
  147. CMD.init()