RECEIVE_FACTORY.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. const CMD = {}
  2. const time_count = 250;
  3. const PROT = 9101
  4. var http = require('http');
  5. const redis_help = require('../src/use_redis');
  6. const origin_data_controllers = require('../src/data_manager/Controllers/origin_data_controllers');
  7. var recv_data_list = []
  8. const 视频id = 0;
  9. const 视频链接 = 1;
  10. const 标题 = 2;
  11. const 发布时间 = 3;
  12. const 收藏数 = 4;
  13. const 评论数 = 5;
  14. const 点赞数 = 6;
  15. const 分享数 = 7;
  16. const 是否挂件 = 8;
  17. const 挂件地址 = 9;
  18. let task_status = false
  19. function excelDateToJs(dateStr) {
  20. // const date = moment(dateStr, "DD/MM/YYYY HH:mm:ss").toDate();
  21. // return new Date(date);
  22. return new Date()
  23. }
  24. async function processTask(){
  25. try{
  26. if(recv_data_list.length>0){
  27. const xml = recv_data_list.pop();
  28. let guajian_link = ''
  29. guajian_link = xml[挂件地址]
  30. const result = await origin_data_controllers.getOriginData({video_id:xml[视频id]})
  31. if(result.success){
  32. await origin_data_controllers.updateOriginData({video_id:xml[视频id]},{kepp_num:xml[收藏数],comment_num:xml[评论数],like_num:xml[点赞数],shared_num:xml[分享数],guajian_link:guajian_link})
  33. }else{
  34. await origin_data_controllers.createOriginData(
  35. {
  36. video_id:xml[视频id],
  37. video_link:xml[视频链接],
  38. title:xml[标题],
  39. // publish_time:xml[发布时间],
  40. publish_time:excelDateToJs(xml[发布时间]),
  41. kepp_num:xml[收藏数],
  42. comment_num:xml[评论数],
  43. like_num:xml[点赞数],
  44. shared_num:xml[分享数],
  45. is_guajian:xml[是否挂件],
  46. guajian_link:guajian_link,
  47. status:0,
  48. }
  49. )
  50. }
  51. }else{
  52. task_status = false;
  53. }
  54. }catch(e){
  55. console.log("数据解析错误:",e)
  56. }finally{
  57. setTimeout(processTask,200)
  58. }
  59. }
  60. CMD.startTask = function(data){
  61. task_status = true;
  62. let temp_list = JSON.parse(data)
  63. for (let index = 1; index < temp_list.length; index++) {
  64. let isGuaJian = parseInt(temp_list[index][是否挂件])==1
  65. if(isGuaJian){
  66. recv_data_list.push(temp_list[index])
  67. }
  68. }
  69. console.log("temp_list.length:",temp_list.length)
  70. processTask()
  71. }
  72. CMD.init = function(){
  73. redis_help.connect(()=>{
  74. })
  75. }
  76. CMD.runTask = async function(){
  77. for (let index = 0; index < recv_data_list.length; index++) {
  78. const xml = recv_data_list[index];
  79. }
  80. }
  81. var server = http.createServer(function(req,res){
  82. res.setHeader('Access-Control-Allow-Origin', '*'); // 允许所有域的请求,注意:在生产环境中应该限制为特定的域
  83. res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); // 允许的方法
  84. res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization'); // 允许的头部
  85. let body = '';
  86. // 监听数据块
  87. req.on('data', chunk => {
  88. body += chunk.toString(); // 将接收到的数据块转换为字符串并拼接
  89. });
  90. // 监听请求结束
  91. req.on('end', async () => {
  92. if (req.method === 'POST') {
  93. if (req.headers['content-type'] === 'application/x-www-form-urlencoded') {
  94. try {
  95. // 解析 JSON 数据
  96. const jsonData = JSON.parse(body);
  97. console.log("recv msg:",jsonData)
  98. if(jsonData['fun']=="start_filter"&&jsonData['cmd']=="filter_task"){
  99. res.writeHead(200, {'Content-Type': 'application/json'});
  100. if(task_status==false){
  101. CMD.startTask(jsonData['data'])
  102. res.end(JSON.stringify({ msg: 'success!',code:10000,data:{}}));
  103. }else{
  104. res.end(JSON.stringify({ msg: '服务器繁忙!',code:10000,data:{}}));
  105. }
  106. }else{
  107. res.writeHead(200, {'Content-Type': 'application/json'});
  108. res.end(JSON.stringify({ message: 'fun 错误',code:100}));
  109. }
  110. } catch (error) {
  111. // 处理解析错误
  112. console.error('Error parsing JSON:', error);
  113. res.writeHead(200, {'Content-Type': 'application/json'});
  114. res.end(JSON.stringify({ error: 'Invalid JSON' }));
  115. }
  116. } else {
  117. // 如果不是 JSON 内容类型,返回错误
  118. res.writeHead(200, {'Content-Type': 'text/plain'});
  119. res.end('Unsupported Media Type. Please send data as JSON.');
  120. }
  121. }else{
  122. res.writeHead(200, {'Content-Type': 'text/plain'});
  123. res.end(' Please Use Post.');
  124. }
  125. });
  126. })
  127. server.listen(PROT,()=>{
  128. });
  129. CMD.init()