PULL_DATA.js 5.9 KB

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