const CMD = {} const time_count = 250; const PROT = 9101 var http = require('http'); const redis_help = require('../src/use_redis'); const moment = require('moment'); const origin_data_controllers = require('../src/data_manager/Controllers/origin_data_controllers'); var recv_data_list = [] const 视频id = 0; const 视频链接 = 1; const 标题 = 2; const 发布时间 = 3; const 收藏数 = 4; const 评论数 = 5; const 点赞数 = 6; const 分享数 = 7; const 是否挂件 = 8; const 挂件地址 = 9; let task_status = false function excelDateToJs(dateStr) { // const date = moment(dateStr, "DD/MM/YYYY HH:mm:ss").toDate(); // return new Date(date); return new Date() } CMD.startTask = function(data){ let temp_list = JSON.parse(data) for (let index = 1; index < temp_list.length; index++) { recv_data_list.push(temp_list[index]) } CMD.runTask() } CMD.init = function(){ redis_help.connect(()=>{ }) } CMD.runTask = async function(){ task_status = true; for (let index = 0; index < recv_data_list.length; index++) { const xml = recv_data_list[index]; let guajian_link = '' let isGuaJian = parseInt(xml[是否挂件])==1 if(isGuaJian){ try{ guajian_link = xml[挂件地址] const result = await origin_data_controllers.getOriginData({video_id:xml[视频id]}) if(result.success){ 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}) }else{ await origin_data_controllers.createOriginData( { video_id:xml[视频id], video_link:xml[视频链接], title:xml[标题], // publish_time:xml[发布时间], publish_time:excelDateToJs(xml[发布时间]), kepp_num:xml[收藏数], comment_num:xml[评论数], like_num:xml[点赞数], shared_num:xml[分享数], is_guajian:xml[是否挂件], guajian_link:guajian_link, status:0, } ) } }catch(e){ console.log("解析原始数据错误!",e) } } } task_status = false; } var server = http.createServer(function(req,res){ res.setHeader('Access-Control-Allow-Origin', '*'); // 允许所有域的请求,注意:在生产环境中应该限制为特定的域 res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); // 允许的方法 res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization'); // 允许的头部 let body = ''; // 监听数据块 req.on('data', chunk => { body += chunk.toString(); // 将接收到的数据块转换为字符串并拼接 }); // 监听请求结束 req.on('end', async () => { if (req.method === 'POST') { if (req.headers['content-type'] === 'application/x-www-form-urlencoded') { try { // 解析 JSON 数据 const jsonData = JSON.parse(body); console.log("recv msg:",jsonData) if(jsonData['fun']=="start_filter"&&jsonData['cmd']=="filter_task"){ res.writeHead(200, {'Content-Type': 'application/json'}); if(task_status==false){ CMD.startTask(jsonData['data']) res.end(JSON.stringify({ msg: 'success!',code:10000,data:{}})); }else{ res.end(JSON.stringify({ msg: '服务器繁忙!',code:10000,data:{}})); } }else{ res.writeHead(200, {'Content-Type': 'application/json'}); res.end(JSON.stringify({ message: 'fun 错误',code:100})); } } catch (error) { // 处理解析错误 console.error('Error parsing JSON:', error); res.writeHead(200, {'Content-Type': 'application/json'}); res.end(JSON.stringify({ error: 'Invalid JSON' })); } } else { // 如果不是 JSON 内容类型,返回错误 res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Unsupported Media Type. Please send data as JSON.'); } }else{ res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(' Please Use Post.'); } }); }) server.listen(PROT,()=>{ }); CMD.init()