| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- #!/usr/bin/env node
- /**
- * 完整的发布测试 - Task #61
- * 使用增强的反检测功能和代理
- */
- const http = require('http');
- const fs = require('fs');
- const path = require('path');
- // 配置
- const PYTHON_API = 'http://localhost:5005';
- const TASK_ID = 61;
- // Task #61 的完整数据
- const PUBLISH_DATA = {
- platform: 'weixin', // 微信视频号
- cookie: JSON.stringify([
- {
- "name":"sessionid",
- "value":"BgAAXERdxFp7jCFlOv26QpoGfHFTWafeI1UHi%2F6RxenyzR8zhCfVtyOkJFAw4UJD2yzCpzRQ3phKnIIRiNDY2eM6sUHMCtSAdlG4%2FEqu89Qb",
- "domain":"channels.weixin.qq.com",
- "path":"/",
- "expires":1806737620.630474,
- "httpOnly":false,
- "secure":true,
- "sameSite":"no_restriction"
- },
- {
- "name":"wxuin",
- "value":"197897203",
- "domain":"channels.weixin.qq.com",
- "path":"/",
- "expires":1806737620.630622,
- "httpOnly":false,
- "secure":true,
- "sameSite":"no_restriction"
- }
- ]),
- title: '拍照机',
- description: '拍照机',
- video_path: 'E:\\Workspace\\multi-platform-media-manage\\server\\uploads\\videos\\88ce3597-0499-4882-bcb5-b6d0722547af.mp4',
- tags: [],
- headless: true, // 改回无头模式
- return_screenshot: true,
- user_id: 1,
- publish_task_id: TASK_ID,
- publish_account_id: 24,
- proxy: {
- enabled: true,
- provider: 'shenlong',
- productKey: 'o2ihwv3e',
- signature: 'ccff437b0c211d7a758b0926cbdcf958',
- regionCode: '310000', // 上海
- city: '上海'
- }
- };
- // 检查视频文件
- function checkVideoFile() {
- const videoPath = PUBLISH_DATA.video_path;
- console.log('\n📹 检查视频文件...');
- console.log('路径:', videoPath);
-
- if (!fs.existsSync(videoPath)) {
- console.error('❌ 视频文件不存在');
- return false;
- }
-
- const stats = fs.statSync(videoPath);
- console.log('✅ 文件大小:', (stats.size / 1024 / 1024).toFixed(2), 'MB');
- return true;
- }
- // 发布
- function publish() {
- return new Promise((resolve, reject) => {
- console.log('\n🚀 开始发布...');
- console.log('平台:', PUBLISH_DATA.platform);
- console.log('标题:', PUBLISH_DATA.title);
- console.log('代理: 启用 (上海地区)');
- console.log('Headless:', PUBLISH_DATA.headless);
-
- const postData = JSON.stringify(PUBLISH_DATA);
-
- const req = http.request(`${PYTHON_API}/publish/ai-assisted`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- 'Content-Length': Buffer.byteLength(postData)
- },
- timeout: 180000 // 3分钟超时
- }, (res) => {
- let data = '';
- res.on('data', chunk => data += chunk);
- res.on('end', () => {
- try {
- const result = JSON.parse(data);
- console.log('\n📊 发布结果:');
- console.log('成功:', result.success);
- console.log('状态:', result.status);
- console.log('错误:', result.error || '无');
- console.log('需要验证码:', result.need_captcha || false);
- console.log('验证码类型:', result.captcha_type || '无');
-
- if (result.screenshot_base64) {
- console.log('截图: 已获取 (长度:', result.screenshot_base64.length, ')');
- // 保存截图
- const screenshotPath = `E:\\Workspace\\multi-platform-media-manage\\uploads\\screenshots\\test_task_${TASK_ID}_${Date.now()}.png`;
- fs.writeFileSync(screenshotPath, Buffer.from(result.screenshot_base64, 'base64'));
- console.log('截图已保存:', screenshotPath);
- }
-
- if (result.video_url) {
- console.log('视频链接:', result.video_url);
- }
-
- resolve(result);
- } catch (e) {
- console.error('❌ 解析响应失败:', e);
- console.log('原始响应:', data.substring(0, 500));
- reject(e);
- }
- });
- });
-
- req.on('error', (e) => {
- console.error('❌ 请求失败:', e.message);
- reject(e);
- });
-
- req.on('timeout', () => {
- console.error('❌ 请求超时');
- req.destroy();
- reject(new Error('Timeout'));
- });
-
- req.write(postData);
- req.end();
- });
- }
- // 主函数
- async function main() {
- try {
- console.log('🎯 完整发布测试 - Task #' + TASK_ID);
- console.log('='.repeat(60));
-
- // 1. 检查视频文件
- if (!checkVideoFile()) {
- return;
- }
-
- // 2. 发布
- const result = await publish();
-
- console.log('\n' + '='.repeat(60));
- if (result.success) {
- console.log('✅ 发布成功!');
- } else if (result.need_captcha) {
- console.log('⚠️ 需要验证码:', result.captcha_type);
- console.log('💡 建议: 在有头浏览器模式下处理验证码');
- } else {
- console.log('❌ 发布失败');
- console.log('💡 建议: 检查 Cookie 是否有效,或查看截图分析原因');
- }
-
- } catch (error) {
- console.error('\n❌ 测试失败:', error);
- }
- }
- main();
|