信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 1|回复: 0
打印 上一主题 下一主题

[宣传软件网站动态] AIWROK软件框架的抖音自动化营销系统

[复制链接]

1937

主题

1947

帖子

1万

积分

积分
11348

资讯缩略图:

资讯发布日期:2026-06-15

资讯发布简介:AIWROK软件框架的抖音自动化营销系统

资讯关键词:AIWROK软件框架的抖音自动化营销系统

资讯所属分类:IT资讯 SEO资讯 

联系:

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/

资讯详细描述
AIWROK软件框架的抖音自动化营销系统
AIWROK软件框架的抖音自动化营销系统 b2b软件

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>&#127925; 抖音自动化营销系统 - AIWROK Pro</title>
  7.     <style>
  8.         * {
  9.             margin: 0;
  10.             padding: 0;
  11.             box-sizing: border-box;
  12.         }
  13.         
  14.         body {
  15.             font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  16.             background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  17.             min-height: 100vh;
  18.             padding: 15px;
  19.         }
  20.         
  21.         .container {
  22.             max-width: 800px;
  23.             margin: 0 auto;
  24.             background: white;
  25.             border-radius: 20px;
  26.             box-shadow: 0 20px 60px rgba(0,0,0,0.15);
  27.             overflow: hidden;
  28.         }
  29.         
  30.         /* 头部样式 */
  31.         .header {
  32.             background: linear-gradient(135deg, #fe2c55 0%, #ff6b6b 50%, #ffa502 100%);
  33.             color: white;
  34.             padding: 35px 25px;
  35.             text-align: center;
  36.             position: relative;
  37.             overflow: hidden;
  38.         }
  39.         
  40.         .header::before {
  41.             content: '';
  42.             position: absolute;
  43.             top: -50%;
  44.             left: -50%;
  45.             width: 200%;
  46.             height: 200%;
  47.             background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%);
  48.             animation: pulse 4s ease-in-out infinite;
  49.         }
  50.         
  51.         @keyframes pulse {
  52.             0%, 100% { transform: scale(1); opacity: 0.5; }
  53.             50% { transform: scale(1.1); opacity: 0.8; }
  54.         }
  55.         
  56.         .header h1 {
  57.             font-size: 28px;
  58.             margin-bottom: 10px;
  59.             position: relative;
  60.             z-index: 1;
  61.             text-shadow: 2px 2px 4px rgba(0,0,0,0.2);
  62.         }
  63.         
  64.         .header p {
  65.             font-size: 15px;
  66.             opacity: 0.95;
  67.             position: relative;
  68.             z-index: 1;
  69.         }
  70.         
  71.         .version-badge {
  72.             display: inline-block;
  73.             background: rgba(255,255,255,0.2);
  74.             padding: 5px 15px;
  75.             border-radius: 20px;
  76.             font-size: 12px;
  77.             margin-top: 10px;
  78.             position: relative;
  79.             z-index: 1;
  80.         }
  81.         
  82.         /* 标签页导航 */
  83.         .tab-nav {
  84.             display: flex;
  85.             background: #f8f9fa;
  86.             border-bottom: 2px solid #e0e0e0;
  87.             overflow-x: auto;
  88.         }
  89.         
  90.         .tab-btn {
  91.             flex: 1;
  92.             padding: 15px 20px;
  93.             border: none;
  94.             background: transparent;
  95.             font-size: 14px;
  96.             font-weight: 600;
  97.             color: #666;
  98.             cursor: pointer;
  99.             transition: all 0.3s;
  100.             white-space: nowrap;
  101.             position: relative;
  102.         }
  103.         
  104.         .tab-btn.active {
  105.             color: #fe2c55;
  106.             background: white;
  107.         }
  108.         
  109.         .tab-btn.active::after {
  110.             content: '';
  111.             position: absolute;
  112.             bottom: 0;
  113.             left: 0;
  114.             right: 0;
  115.             height: 3px;
  116.             background: #fe2c55;
  117.         }
  118.         
  119.         .tab-btn:hover {
  120.             background: rgba(254, 44, 85, 0.05);
  121.         }
  122.         
  123.         /* 内容区域 */
  124.         .content {
  125.             padding: 25px;
  126.         }
  127.         
  128.         .tab-content {
  129.             display: none;
  130.         }
  131.         
  132.         .tab-content.active {
  133.             display: block;
  134.             animation: fadeIn 0.3s ease;
  135.         }
  136.         
  137.         @keyframes fadeIn {
  138.             from { opacity: 0; transform: translateY(10px); }
  139.             to { opacity: 1; transform: translateY(0); }
  140.         }
  141.         
  142.         /* 卡片样式 */
  143.         .card {
  144.             background: white;
  145.             border: 2px solid #f0f0f0;
  146.             border-radius: 12px;
  147.             padding: 20px;
  148.             margin-bottom: 20px;
  149.             transition: all 0.3s;
  150.         }
  151.         
  152.         .card:hover {
  153.             border-color: #fe2c55;
  154.             box-shadow: 0 5px 20px rgba(254, 44, 85, 0.1);
  155.         }
  156.         
  157.         .card-title {
  158.             font-size: 18px;
  159.             font-weight: bold;
  160.             color: #333;
  161.             margin-bottom: 15px;
  162.             display: flex;
  163.             align-items: center;
  164.             gap: 8px;
  165.         }
  166.         
  167.         .card-title::before {
  168.             content: '';
  169.             width: 4px;
  170.             height: 20px;
  171.             background: linear-gradient(to bottom, #fe2c55, #ff6b6b);
  172.             border-radius: 2px;
  173.         }
  174.         
  175.         /* 表单元素 */
  176.         .form-group {
  177.             margin-bottom: 18px;
  178.         }
  179.         
  180.         .form-group label {
  181.             display: block;
  182.             font-size: 14px;
  183.             color: #555;
  184.             margin-bottom: 8px;
  185.             font-weight: 500;
  186.         }
  187.         
  188.         .form-group input[type="text"],
  189.         .form-group input[type="number"],
  190.         .form-group textarea,
  191.         .form-group select {
  192.             width: 100%;
  193.             padding: 12px 15px;
  194.             border: 2px solid #e0e0e0;
  195.             border-radius: 8px;
  196.             font-size: 15px;
  197.             transition: all 0.3s;
  198.             background: #fafafa;
  199.         }
  200.         
  201.         .form-group input:focus,
  202.         .form-group textarea:focus,
  203.         .form-group select:focus {
  204.             outline: none;
  205.             border-color: #fe2c55;
  206.             background: white;
  207.             box-shadow: 0 0 0 3px rgba(254, 44, 85, 0.1);
  208.         }
  209.         
  210.         .form-group textarea {
  211.             resize: vertical;
  212.             min-height: 100px;
  213.             font-family: inherit;
  214.         }
  215.         
  216.         .form-hint {
  217.             font-size: 12px;
  218.             color: #999;
  219.             margin-top: 5px;
  220.         }
  221.         
  222.         /* 开关样式 */
  223.         .switch-group {
  224.             display: flex;
  225.             justify-content: space-between;
  226.             align-items: center;
  227.             padding: 15px;
  228.             background: #f8f9fa;
  229.             border-radius: 10px;
  230.             margin-bottom: 10px;
  231.             transition: all 0.3s;
  232.         }
  233.         
  234.         .switch-group:hover {
  235.             background: #f0f0f0;
  236.         }
  237.         
  238.         .switch-info {
  239.             flex: 1;
  240.         }
  241.         
  242.         .switch-label {
  243.             font-size: 15px;
  244.             color: #333;
  245.             font-weight: 500;
  246.             margin-bottom: 3px;
  247.         }
  248.         
  249.         .switch-desc {
  250.             font-size: 12px;
  251.             color: #999;
  252.         }
  253.         
  254.         .switch {
  255.             position: relative;
  256.             width: 56px;
  257.             height: 30px;
  258.             margin-left: 15px;
  259.         }
  260.         
  261.         .switch input {
  262.             opacity: 0;
  263.             width: 0;
  264.             height: 0;
  265.         }
  266.         
  267.         .slider {
  268.             position: absolute;
  269.             cursor: pointer;
  270.             top: 0;
  271.             left: 0;
  272.             right: 0;
  273.             bottom: 0;
  274.             background-color: #ccc;
  275.             transition: 0.3s;
  276.             border-radius: 30px;
  277.         }
  278.         
  279.         .slider:before {
  280.             position: absolute;
  281.             content: "";
  282.             height: 24px;
  283.             width: 24px;
  284.             left: 3px;
  285.             bottom: 3px;
  286.             background-color: white;
  287.             transition: 0.3s;
  288.             border-radius: 50%;
  289.             box-shadow: 0 2px 4px rgba(0,0,0,0.2);
  290.         }
  291.         
  292.         input:checked + .slider {
  293.             background: linear-gradient(135deg, #fe2c55 0%, #ff6b6b 100%);
  294.         }
  295.         
  296.         input:checked + .slider:before {
  297.             transform: translateX(26px);
  298.         }
  299.         
  300.         /* 按钮组 */
  301.         .btn-group {
  302.             display: grid;
  303.             grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  304.             gap: 12px;
  305.             margin-top: 20px;
  306.         }
  307.         
  308.         .btn {
  309.             padding: 14px 20px;
  310.             border: none;
  311.             border-radius: 10px;
  312.             font-size: 15px;
  313.             font-weight: 600;
  314.             cursor: pointer;
  315.             transition: all 0.3s;
  316.             display: flex;
  317.             align-items: center;
  318.             justify-content: center;
  319.             gap: 8px;
  320.             position: relative;
  321.             overflow: hidden;
  322.         }
  323.         
  324.         .btn::before {
  325.             content: '';
  326.             position: absolute;
  327.             top: 50%;
  328.             left: 50%;
  329.             width: 0;
  330.             height: 0;
  331.             border-radius: 50%;
  332.             background: rgba(255,255,255,0.3);
  333.             transform: translate(-50%, -50%);
  334.             transition: width 0.6s, height 0.6s;
  335.         }
  336.         
  337.         .btn:active::before {
  338.             width: 300px;
  339.             height: 300px;
  340.         }
  341.         
  342.         .btn-primary {
  343.             background: linear-gradient(135deg, #fe2c55 0%, #ff6b6b 100%);
  344.             color: white;
  345.             box-shadow: 0 4px 15px rgba(254, 44, 85, 0.3);
  346.         }
  347.         
  348.         .btn-primary:hover {
  349.             transform: translateY(-2px);
  350.             box-shadow: 0 6px 20px rgba(254, 44, 85, 0.4);
  351.         }
  352.         
  353.         .btn-success {
  354.             background: linear-gradient(135deg, #00C851 0%, #00a843 100%);
  355.             color: white;
  356.             box-shadow: 0 4px 15px rgba(0, 200, 81, 0.3);
  357.         }
  358.         
  359.         .btn-success:hover {
  360.             transform: translateY(-2px);
  361.             box-shadow: 0 6px 20px rgba(0, 200, 81, 0.4);
  362.         }
  363.         
  364.         .btn-warning {
  365.             background: linear-gradient(135deg, #ffbb33 0%, #ff8800 100%);
  366.             color: white;
  367.             box-shadow: 0 4px 15px rgba(255, 187, 51, 0.3);
  368.         }
  369.         
  370.         .btn-warning:hover {
  371.             transform: translateY(-2px);
  372.             box-shadow: 0 6px 20px rgba(255, 187, 51, 0.4);
  373.         }
  374.         
  375.         .btn-danger {
  376.             background: linear-gradient(135deg, #ff4444 0%, #cc0000 100%);
  377.             color: white;
  378.             box-shadow: 0 4px 15px rgba(255, 68, 68, 0.3);
  379.         }
  380.         
  381.         .btn-danger:hover {
  382.             transform: translateY(-2px);
  383.             box-shadow: 0 6px 20px rgba(255, 68, 68, 0.4);
  384.         }
  385.         
  386.         .btn-secondary {
  387.             background: #f0f0f0;
  388.             color: #333;
  389.         }
  390.         
  391.         .btn-secondary:hover {
  392.             background: #e0e0e0;
  393.         }
  394.         
  395.         /* 状态面板 */
  396.         .status-panel {
  397.             background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
  398.             border: 2px solid #e0e0e0;
  399.             border-radius: 12px;
  400.             padding: 20px;
  401.             margin-top: 20px;
  402.         }
  403.         
  404.         .status-header {
  405.             display: flex;
  406.             justify-content: space-between;
  407.             align-items: center;
  408.             margin-bottom: 15px;
  409.         }
  410.         
  411.         .status-title {
  412.             font-size: 16px;
  413.             font-weight: bold;
  414.             color: #333;
  415.         }
  416.         
  417.         .status-indicator {
  418.             display: flex;
  419.             align-items: center;
  420.             gap: 8px;
  421.             font-size: 14px;
  422.             font-weight: 600;
  423.         }
  424.         
  425.         .status-dot {
  426.             width: 10px;
  427.             height: 10px;
  428.             border-radius: 50%;
  429.             animation: blink 1.5s infinite;
  430.         }
  431.         
  432.         .status-dot.running {
  433.             background: #00C851;
  434.         }
  435.         
  436.         .status-dot.stopped {
  437.             background: #ff4444;
  438.             animation: none;
  439.         }
  440.         
  441.         @keyframes blink {
  442.             0%, 100% { opacity: 1; }
  443.             50% { opacity: 0.3; }
  444.         }
  445.         
  446.         .stats-grid {
  447.             display: grid;
  448.             grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  449.             gap: 12px;
  450.             margin-top: 15px;
  451.         }
  452.         
  453.         .stat-item {
  454.             background: white;
  455.             border: 1px solid #e0e0e0;
  456.             border-radius: 8px;
  457.             padding: 12px;
  458.             text-align: center;
  459.         }
  460.         
  461.         .stat-value {
  462.             font-size: 24px;
  463.             font-weight: bold;
  464.             color: #fe2c55;
  465.             margin-bottom: 5px;
  466.         }
  467.         
  468.         .stat-label {
  469.             font-size: 12px;
  470.             color: #999;
  471.         }
  472.         
  473.         /* 进度条 */
  474.         .progress-container {
  475.             margin-top: 15px;
  476.         }
  477.         
  478.         .progress-bar {
  479.             width: 100%;
  480.             height: 10px;
  481.             background: #e0e0e0;
  482.             border-radius: 5px;
  483.             overflow: hidden;
  484.             position: relative;
  485.         }
  486.         
  487.         .progress-fill {
  488.             height: 100%;
  489.             background: linear-gradient(90deg, #fe2c55 0%, #ff6b6b 50%, #ffa502 100%);
  490.             transition: width 0.5s ease;
  491.             border-radius: 5px;
  492.             position: relative;
  493.         }
  494.         
  495.         .progress-fill::after {
  496.             content: '';
  497.             position: absolute;
  498.             top: 0;
  499.             left: 0;
  500.             right: 0;
  501.             bottom: 0;
  502.             background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
  503.             animation: shimmer 2s infinite;
  504.         }
  505.         
  506.         @keyframes shimmer {
  507.             0% { transform: translateX(-100%); }
  508.             100% { transform: translateX(100%); }
  509.         }
  510.         
  511.         .progress-text {
  512.             text-align: center;
  513.             margin-top: 8px;
  514.             font-size: 13px;
  515.             color: #666;
  516.         }
  517.         
  518.         /* 日志面板 */
  519.         .log-panel {
  520.             background: #1e1e1e;
  521.             border-radius: 12px;
  522.             padding: 15px;
  523.             margin-top: 20px;
  524.             max-height: 400px;
  525.             overflow-y: auto;
  526.             font-family: 'Courier New', Consolas, monospace;
  527.             font-size: 13px;
  528.             line-height: 1.8;
  529.         }
  530.         
  531.         .log-header {
  532.             display: flex;
  533.             justify-content: space-between;
  534.             align-items: center;
  535.             margin-bottom: 10px;
  536.             padding-bottom: 10px;
  537.             border-bottom: 1px solid #333;
  538.         }
  539.         
  540.         .log-title {
  541.             color: #fff;
  542.             font-weight: bold;
  543.         }
  544.         
  545.         .log-clear {
  546.             background: #333;
  547.             color: #fff;
  548.             border: none;
  549.             padding: 5px 12px;
  550.             border-radius: 5px;
  551.             font-size: 12px;
  552.             cursor: pointer;
  553.         }
  554.         
  555.         .log-clear:hover {
  556.             background: #444;
  557.         }
  558.         
  559.         .log-entry {
  560.             margin-bottom: 6px;
  561.             padding: 4px 0;
  562.             border-bottom: 1px solid #2a2a2a;
  563.         }
  564.         
  565.         .log-time {
  566.             color: #888;
  567.             margin-right: 8px;
  568.         }
  569.         
  570.         .log-info {
  571.             color: #4ec9b0;
  572.         }
  573.         
  574.         .log-success {
  575.             color: #89d185;
  576.         }
  577.         
  578.         .log-error {
  579.             color: #f48771;
  580.         }
  581.         
  582.         .log-warn {
  583.             color: #dcdcaa;
  584.         }
  585.         
  586.         /* 提示框 */
  587.         .toast {
  588.             position: fixed;
  589.             top: 20px;
  590.             right: 20px;
  591.             background: white;
  592.             border-left: 4px solid #fe2c55;
  593.             box-shadow: 0 5px 20px rgba(0,0,0,0.2);
  594.             padding: 15px 20px;
  595.             border-radius: 8px;
  596.             display: none;
  597.             animation: slideIn 0.3s ease;
  598.             z-index: 1000;
  599.             max-width: 350px;
  600.         }
  601.         
  602.         @keyframes slideIn {
  603.             from {
  604.                 transform: translateX(100%);
  605.                 opacity: 0;
  606.             }
  607.             to {
  608.                 transform: translateX(0);
  609.                 opacity: 1;
  610.             }
  611.         }
  612.         
  613.         .toast.show {
  614.             display: block;
  615.         }
  616.         
  617.         .toast-title {
  618.             font-weight: bold;
  619.             margin-bottom: 5px;
  620.             color: #333;
  621.         }
  622.         
  623.         .toast-message {
  624.             color: #666;
  625.             font-size: 14px;
  626.         }
  627.         
  628.         /* 响应式设计 */
  629.         @media (max-width: 768px) {
  630.             .container {
  631.                 border-radius: 15px;
  632.             }
  633.             
  634.             .header {
  635.                 padding: 25px 15px;
  636.             }
  637.             
  638.             .header h1 {
  639.                 font-size: 22px;
  640.             }
  641.             
  642.             .content {
  643.                 padding: 15px;
  644.             }
  645.             
  646.             .btn-group {
  647.                 grid-template-columns: 1fr;
  648.             }
  649.             
  650.             .stats-grid {
  651.                 grid-template-columns: repeat(2, 1fr);
  652.             }
  653.         }
  654.     </style>
  655. </head>
  656. <body>
  657.     <!-- Toast提示 -->
  658.     <div class="toast" id="toast">
  659.         <div class="toast-title" id="toastTitle">提示</div>
  660.         <div class="toast-message" id="toastMessage"></div>
  661.     </div>
  662.    
  663.     <div class="container">
  664.         <!-- 头部 -->
  665.         <div class="header">
  666.             <h1>&#127925; 抖音自动化营销系统</h1>
  667.             <p>AIWROK Pro - 智能广告投放平台</p>
  668.             <div class="version-badge">v2.0.0 | Build 2026.06.13</div>
  669.         </div>
  670.         
  671.         <!-- 标签页导航 -->
  672.         <div class="tab-nav">
  673.             <button class="tab-btn active" onclick="switchTab('config')">️ 任务配置</button>
  674.             <button class="tab-btn" onclick="switchTab('control')">&#127918; 执行控制</button>
  675.             <button class="tab-btn" onclick="switchTab('monitor')">&#128202; 实时监控</button>
  676.             <button class="tab-btn" onclick="switchTab('logs')">&#128221; 运行日志</button>
  677.         </div>
  678.         
  679.         <div class="content">
  680.             <!-- 任务配置 -->
  681.             <div class="tab-content active" id="tab-config">
  682.                 <div class="card">
  683.                     <div class="card-title">搜索关键词</div>
  684.                     <div class="form-group">
  685.                         <label for="keywords">请输入要搜索的关键词,多个关键词用逗号分隔:</label>
  686.                         <input type="text" id="keywords" placeholder="美食探店,旅游攻略,健身教程">
  687.                     </div>
  688.                 </div>
  689.                
  690.                 <div class="card">
  691.                     <div class="card-title">任务设置</div>
  692.                     <div class="form-group">
  693.                         <label for="maxVideos">最大视频数:</label>
  694.                         <input type="number" id="maxVideos" placeholder="5">
  695.                     </div>
  696.                     <div class="form-group">
  697.                         <label for="waitTime">操作间隔(秒):</label>
  698.                         <input type="number" id="waitTime" placeholder="2">
  699.                     </div>
  700.                 </div>
  701.                
  702.                 <div class="card">
  703.                     <div class="card-title">操作开关</div>
  704.                     <div class="switch-group">
  705.                         <div class="switch-info">
  706.                             <div class="switch-label">点赞</div>
  707.                             <div class="switch-desc">是否自动点赞视频</div>
  708.                         </div>
  709.                         <label class="switch">
  710.                             <input type="checkbox" id="likeEnabled">
  711.                             <span class="slider"></span>
  712.                         </label>
  713.                     </div>
  714.                     <div class="switch-group">
  715.                         <div class="switch-info">
  716.                             <div class="switch-label">评论</div>
  717.                             <div class="switch-desc">是否自动评论视频</div>
  718.                         </div>
  719.                         <label class="switch">
  720.                             <input type="checkbox" id="commentEnabled">
  721.                             <span class="slider"></span>
  722.                         </label>
  723.                     </div>
  724.                     <div class="switch-group">
  725.                         <div class="switch-info">
  726.                             <div class="switch-label">分享</div>
  727.                             <div class="switch-desc">是否自动分享视频</div>
  728.                         </div>
  729.                         <label class="switch">
  730.                             <input type="checkbox" id="shareEnabled">
  731.                             <span class="slider"></span>
  732.                         </label>
  733.                     </div>
  734.                     <div class="switch-group">
  735.                         <div class="switch-info">
  736.                             <div class="switch-label">关注</div>
  737.                             <div class="switch-desc">是否自动关注作者</div>
  738.                         </div>
  739.                         <label class="switch">
  740.                             <input type="checkbox" id="followEnabled">
  741.                             <span class="slider"></span>
  742.                         </label>
  743.                     </div>
  744.                 </div>
  745.                
  746.                 <div class="card">
  747.                     <div class="card-title">评论模板</div>
  748.                     <div class="form-group">
  749.                         <label for="commentTemplates">请输入评论模板,每行一个模板:</label>
  750.                         <textarea id="commentTemplates" placeholder="这个视频真不错!&#128077;\n学到了,感谢分享!\n太实用了,已收藏\n支持一下!加油&#128170;"></textarea>
  751.                     </div>
  752.                 </div>
  753.                
  754.                 <div class="btn-group">
  755.                     <button class="btn btn-primary" onclick="saveConfig()">&#128190; 保存配置</button>
  756.                     <button class="btn btn-secondary" onclick="loadConfig()">&#128194; 加载配置</button>
  757.                     <button class="btn btn-danger" onclick="resetConfig()">&#128465;️ 重置配置</button>
  758.                 </div>
  759.             </div>
  760.             
  761.             <!-- 执行控制 -->
  762.             <div class="tab-content" id="tab-control">
  763.                 <div class="btn-group">
  764.                     <button class="btn btn-primary" id="btnStart" onclick="startCampaign()">&#128640; 启动任务</button>
  765.                     <button class="btn btn-danger" id="btnStop" onclick="stopCampaign()">⏹️ 停止任务</button>
  766.                 </div>
  767.             </div>
  768.             
  769.             <!-- 实时监控 -->
  770.             <div class="tab-content" id="tab-monitor">
  771.                 <div class="status-panel">
  772.                     <div class="status-header">
  773.                         <div class="status-title">任务状态</div>
  774.                         <div class="status-indicator">
  775.                             <div id="statusDot" class="status-dot stopped"></div>
  776.                             <div id="statusText">已停止</div>
  777.                         </div>
  778.                     </div>
  779.                     <div class="stats-grid">
  780.                         <div class="stat-item">
  781.                             <div class="stat-value" id="statTotal">0</div>
  782.                             <div class="stat-label">总视频数</div>
  783.                         </div>
  784.                         <div class="stat-item">
  785.                             <div class="stat-value" id="statLiked">0</div>
  786.                             <div class="stat-label">点赞数</div>
  787.                         </div>
  788.                         <div class="stat-item">
  789.                             <div class="stat-value" id="statCommented">0</div>
  790.                             <div class="stat-label">评论数</div>
  791.                         </div>
  792.                         <div class="stat-item">
  793.                             <div class="stat-value" id="statShared">0</div>
  794.                             <div class="stat-label">分享数</div>
  795.                         </div>
  796.                         <div class="stat-item">
  797.                             <div class="stat-value" id="statFollowed">0</div>
  798.                             <div class="stat-label">关注数</div>
  799.                         </div>
  800.                         <div class="stat-item">
  801.                             <div class="stat-value" id="statFailed">0</div>
  802.                             <div class="stat-label">失败数</div>
  803.                         </div>
  804.                     </div>
  805.                     <div class="progress-container">
  806.                         <div class="progress-bar">
  807.                             <div class="progress-fill" id="progressBar"></div>
  808.                         </div>
  809.                         <div class="progress-text" id="progressText">准备就绪</div>
  810.                     </div>
  811.                     <div class="status-header">
  812.                         <div class="status-title">任务进度</div>
  813.                         <div class="status-indicator">
  814.                             <div id="currentStep">-</div>
  815.                             <div id="startTime">-</div>
  816.                         </div>
  817.                     </div>
  818.                 </div>
  819.                
  820.                 <div class="btn-group">
  821.                     <button class="btn btn-secondary" onclick="resetStats()">&#128260; 重置统计</button>
  822.                     <button class="btn btn-primary" onclick="exportReport()">&#128196; 导出报告</button>
  823.                 </div>
  824.             </div>
  825.             
  826.             <!-- 运行日志 -->
  827.             <div class="tab-content" id="tab-logs">
  828.                 <div class="log-panel">
  829.                     <div class="log-header">
  830.                         <div class="log-title">运行日志</div>
  831.                         <button class="log-clear" onclick="clearLogs()">&#128465;️ 清空日志</button>
  832.                     </div>
  833.                     <div id="logContainer">
  834.                         <div class="log-entry"><span class="log-time">[系统]</span><span class="log-info">日志已清空</span></div>
  835.                     </div>
  836.                 </div>
  837.             </div>
  838.         </div>
  839.     </div>
  840.    
  841.     <script>
  842.         // ==================== 全局变量 ====================
  843.         var isRunning = false;
  844.         var statusInterval = null;
  845.         var taskConfig = {
  846.             keywords: '',
  847.             maxVideos: 5,
  848.             waitTime: 2,
  849.             likeEnabled: true,
  850.             commentEnabled: true,
  851.             shareEnabled: false,
  852.             followEnabled: false,
  853.             commentTemplates: ''
  854.         };
  855.         
  856.         // ==================== 工具函数 ====================
  857.         
  858.         function showToast(title, message, type) {
  859.             var toast = document.getElementById('toast');
  860.             var toastTitle = document.getElementById('toastTitle');
  861.             var toastMessage = document.getElementById('toastMessage');
  862.             
  863.             toastTitle.textContent = title;
  864.             toastMessage.textContent = message;
  865.             
  866.             if (type === 'success') {
  867.                 toast.style.borderLeftColor = '#00C851';
  868.             } else if (type === 'error') {
  869.                 toast.style.borderLeftColor = '#ff4444';
  870.             } else if (type === 'warning') {
  871.                 toast.style.borderLeftColor = '#ffbb33';
  872.             } else {
  873.                 toast.style.borderLeftColor = '#fe2c55';
  874.             }
  875.             
  876.             toast.classList.add('show');
  877.             
  878.             setTimeout(function() {
  879.                 toast.classList.remove('show');
  880.             }, 3000);
  881.         }
  882.         
  883.         function addLog(message, type) {
  884.             var logContainer = document.getElementById('logContainer');
  885.             var timestamp = new Date().toLocaleTimeString();
  886.             var entry = document.createElement('div');
  887.             entry.className = 'log-entry';
  888.             
  889.             var timeSpan = document.createElement('span');
  890.             timeSpan.className = 'log-time';
  891.             timeSpan.textContent = '[' + timestamp + '] ';
  892.             
  893.             var msgSpan = document.createElement('span');
  894.             msgSpan.className = 'log-' + type;
  895.             msgSpan.textContent = message;
  896.             
  897.             entry.appendChild(timeSpan);
  898.             entry.appendChild(msgSpan);
  899.             logContainer.appendChild(entry);
  900.             
  901.             // 自动滚动到底部
  902.             var logPanel = document.querySelector('.log-panel');
  903.             logPanel.scrollTop = logPanel.scrollHeight;
  904.         }
  905.         
  906.         function clearLogs() {
  907.             var logContainer = document.getElementById('logContainer');
  908.             logContainer.innerHTML = '<div class="log-entry"><span class="log-time">[系统]</span><span class="log-info">日志已清空</span></div>';
  909.             showToast('提示', '日志已清空', 'info');
  910.         }
  911.         
  912.         function switchTab(tabName) {
  913.             // 隐藏所有标签页内容
  914.             var tabContents = document.querySelectorAll('.tab-content');
  915.             tabContents.forEach(function(content) {
  916.                 content.classList.remove('active');
  917.             });
  918.             
  919.             // 取消所有按钮激活状态
  920.             var tabBtns = document.querySelectorAll('.tab-btn');
  921.             tabBtns.forEach(function(btn) {
  922.                 btn.classList.remove('active');
  923.             });
  924.             
  925.             // 显示选中的标签页
  926.             document.getElementById('tab-' + tabName).classList.add('active');
  927.             
  928.             // 激活对应按钮
  929.             event.target.classList.add('active');
  930.         }
  931.         
  932.         function updateProgress(current, total) {
  933.             var percent = Math.round((current / total) * 100);
  934.             document.getElementById('progressBar').style.width = percent + '%';
  935.             document.getElementById('progressText').textContent = '进度: ' + current + '/' + total + ' (' + percent + '%)';
  936.         }
  937.         
  938.         function updateStatus(data) {
  939.             try {
  940.                 var status = typeof data === 'string' ? JSON.parse(data) : data;
  941.                
  942.                 // 更新运行状态
  943.                 var statusDot = document.getElementById('statusDot');
  944.                 var statusText = document.getElementById('statusText');
  945.                
  946.                 if (status.isRunning) {
  947.                     statusDot.className = 'status-dot running';
  948.                     statusText.textContent = '运行中';
  949.                     statusText.style.color = '#00C851';
  950.                 } else {
  951.                     statusDot.className = 'status-dot stopped';
  952.                     statusText.textContent = '已停止';
  953.                     statusText.style.color = '#ff4444';
  954.                 }
  955.                
  956.                 // 更新步骤信息
  957.                 if (status.currentStep && status.totalSteps) {
  958.                     document.getElementById('currentStep').textContent =
  959.                         status.currentStep + '/' + status.totalSteps;
  960.                     updateProgress(status.currentStep, status.totalSteps);
  961.                 }
  962.                
  963.                 // 更新统计数据
  964.                 if (status.statistics) {
  965.                     document.getElementById('statTotal').textContent = status.statistics.totalVideos || 0;
  966.                     document.getElementById('statLiked').textContent = status.statistics.likedCount || 0;
  967.                     document.getElementById('statCommented').textContent = status.statistics.commentedCount || 0;
  968.                     document.getElementById('statShared').textContent = status.statistics.sharedCount || 0;
  969.                     document.getElementById('statFollowed').textContent = status.statistics.followedCount || 0;
  970.                     document.getElementById('statFailed').textContent = status.statistics.failedCount || 0;
  971.                 }
  972.                
  973.                 // 更新开始时间
  974.                 if (status.statistics && status.statistics.startTime) {
  975.                     document.getElementById('startTime').textContent = status.statistics.startTime;
  976.                 }
  977.                
  978.             } catch (e) {
  979.                 console.error('更新状态失败:', e);
  980.             }
  981.         }
  982.         
  983.         // ==================== 配置管理 ====================
  984.         
  985.         function saveConfig() {
  986.             try {
  987.                 addLog('正在保存配置...', 'info');
  988.                
  989.                 if (window.at && window.at.publicSet) {
  990.                     // 保存搜索关键词
  991.                     var keywords = document.getElementById('keywords').value;
  992.                     window.at.publicSet('douyin_keywords', keywords);
  993.                     
  994.                     // 保存最大视频数
  995.                     var maxVideos = document.getElementById('maxVideos').value;
  996.                     window.at.publicSet('douyin_max_videos', maxVideos);
  997.                     
  998.                     // 保存等待时间
  999.                     var waitTime = document.getElementById('waitTime').value;
  1000.                     window.at.publicSet('douyin_wait_time', waitTime);
  1001.                     
  1002.                     // 保存开关配置
  1003.                     window.at.publicSet('douyin_like_enabled',
  1004.                         document.getElementById('likeEnabled').checked ? 'true' : 'false');
  1005.                     window.at.publicSet('douyin_comment_enabled',
  1006.                         document.getElementById('commentEnabled').checked ? 'true' : 'false');
  1007.                     window.at.publicSet('douyin_share_enabled',
  1008.                         document.getElementById('shareEnabled').checked ? 'true' : 'false');
  1009.                     window.at.publicSet('douyin_follow_enabled',
  1010.                         document.getElementById('followEnabled').checked ? 'true' : 'false');
  1011.                     
  1012.                     // 保存评论模板
  1013.                     var commentTemplates = document.getElementById('commentTemplates').value;
  1014.                     window.at.publicSet('douyin_comment_templates', commentTemplates);
  1015.                     
  1016.                     addLog('配置保存成功', 'success');
  1017.                     showToast('成功', '配置已保存到原生环境', 'success');
  1018.                     
  1019.                     // 同时通知原生端
  1020.                     if (window.at.callFun) {
  1021.                         window.at.callFun('main', 'MSG:&#128190; 配置已保存');
  1022.                     }
  1023.                 } else {
  1024.                     addLog('publicSet方法不可用', 'error');
  1025.                     showToast('错误', '无法连接到原生环境', 'error');
  1026.                 }
  1027.             } catch (e) {
  1028.                 addLog('保存配置失败: ' + e.message, 'error');
  1029.                 showToast('错误', '保存失败: ' + e.message, 'error');
  1030.             }
  1031.         }
  1032.         
  1033.         function loadConfig() {
  1034.             try {
  1035.                 addLog('正在加载配置...', 'info');
  1036.                
  1037.                 if (window.at && window.at.publicGet) {
  1038.                     // 加载搜索关键词
  1039.                     var keywords = window.at.publicGet('douyin_keywords');
  1040.                     if (keywords) {
  1041.                         document.getElementById('keywords').value = keywords;
  1042.                     }
  1043.                     
  1044.                     // 加载最大视频数
  1045.                     var maxVideos = window.at.publicGet('douyin_max_videos');
  1046.                     if (maxVideos) {
  1047.                         document.getElementById('maxVideos').value = maxVideos;
  1048.                     }
  1049.                     
  1050.                     // 加载等待时间
  1051.                     var waitTime = window.at.publicGet('douyin_wait_time');
  1052.                     if (waitTime) {
  1053.                         document.getElementById('waitTime').value = waitTime;
  1054.                     }
  1055.                     
  1056.                     // 加载开关配置
  1057.                     var likeEnabled = window.at.publicGet('douyin_like_enabled');
  1058.                     if (likeEnabled !== null) {
  1059.                         document.getElementById('likeEnabled').checked = likeEnabled === 'true';
  1060.                     }
  1061.                     
  1062.                     var commentEnabled = window.at.publicGet('douyin_comment_enabled');
  1063.                     if (commentEnabled !== null) {
  1064.                         document.getElementById('commentEnabled').checked = commentEnabled === 'true';
  1065.                     }
  1066.                     
  1067.                     var shareEnabled = window.at.publicGet('douyin_share_enabled');
  1068.                     if (shareEnabled !== null) {
  1069.                         document.getElementById('shareEnabled').checked = shareEnabled === 'true';
  1070.                     }
  1071.                     
  1072.                     var followEnabled = window.at.publicGet('douyin_follow_enabled');
  1073.                     if (followEnabled !== null) {
  1074.                         document.getElementById('followEnabled').checked = followEnabled === 'true';
  1075.                     }
  1076.                     
  1077.                     // 加载评论模板
  1078.                     var commentTemplates = window.at.publicGet('douyin_comment_templates');
  1079.                     if (commentTemplates) {
  1080.                         document.getElementById('commentTemplates').value = commentTemplates;
  1081.                     }
  1082.                     
  1083.                     addLog('配置加载成功', 'success');
  1084.                     showToast('成功', '配置已从原生环境加载', 'success');
  1085.                 } else {
  1086.                     addLog('publicGet方法不可用', 'error');
  1087.                     showToast('错误', '无法连接到原生环境', 'error');
  1088.                 }
  1089.             } catch (e) {
  1090.                 addLog('加载配置失败: ' + e.message, 'error');
  1091.                 showToast('错误', '加载失败: ' + e.message, 'error');
  1092.             }
  1093.         }
  1094.         
  1095.         function resetConfig() {
  1096.             if (confirm('确定要重置为默认配置吗?')) {
  1097.                 document.getElementById('keywords').value = '美食探店,旅游攻略,健身教程';
  1098.                 document.getElementById('maxVideos').value = '5';
  1099.                 document.getElementById('waitTime').value = '2';
  1100.                 document.getElementById('likeEnabled').checked = true;
  1101.                 document.getElementById('commentEnabled').checked = true;
  1102.                 document.getElementById('shareEnabled').checked = false;
  1103.                 document.getElementById('followEnabled').checked = false;
  1104.                 document.getElementById('commentTemplates').value = '这个视频真不错!&#128077;\n学到了,感谢分享!\n太实用了,已收藏\n支持一下!加油&#128170;';
  1105.                
  1106.                 addLog('配置已重置为默认值', 'info');
  1107.                 showToast('提示', '配置已重置', 'info');
  1108.             }
  1109.         }
  1110.         
  1111.         // ==================== 任务控制 ====================
  1112.         
  1113.         function startCampaign() {
  1114.             if (isRunning) {
  1115.                 showToast('警告', '任务已在运行中', 'warning');
  1116.                 return;
  1117.             }
  1118.             
  1119.             try {
  1120.                 addLog('&#128640; 正在启动抖音广告任务...', 'info');
  1121.                
  1122.                 // 先保存配置
  1123.                 saveConfig();
  1124.                
  1125.                 // 调用原生函数 - AIWROK只支持调用main函数
  1126.                 if (window.at && window.at.callFun) {
  1127.                     var result = window.at.callFun('main', 'START_CAMPAIGN');
  1128.                     addLog('任务启动指令已发送', 'success');
  1129.                     
  1130.                     isRunning = true;
  1131.                     document.getElementById('btnStart').disabled = true;
  1132.                     document.getElementById('btnStop').disabled = false;
  1133.                     
  1134.                     showToast('成功', '任务已启动', 'success');
  1135.                     
  1136.                     // 定期获取状态
  1137.                     if (statusInterval) {
  1138.                         clearInterval(statusInterval);
  1139.                     }
  1140.                     statusInterval = setInterval(function() {
  1141.                         getStatus();
  1142.                     }, 2000);
  1143.                     
  1144.                 } else {
  1145.                     addLog('callFun方法不可用', 'error');
  1146.                     showToast('错误', '无法连接到原生环境', 'error');
  1147.                 }
  1148.                
  1149.             } catch (e) {
  1150.                 addLog('启动失败: ' + e.message, 'error');
  1151.                 showToast('错误', '启动失败: ' + e.message, 'error');
  1152.             }
  1153.         }
  1154.         
  1155.         function stopCampaign() {
  1156.             if (!isRunning) {
  1157.                 showToast('警告', '当前没有运行中的任务', 'warning');
  1158.                 return;
  1159.             }
  1160.             
  1161.             try {
  1162.                 addLog('⏹️ 正在停止任务...', 'warn');
  1163.                
  1164.                 if (window.at && window.at.callFun) {
  1165.                     var result = window.at.callFun('main', 'STOP_CAMPAIGN');
  1166.                     addLog('任务停止指令已发送', 'success');
  1167.                     
  1168.                     isRunning = false;
  1169.                     document.getElementById('btnStart').disabled = false;
  1170.                     document.getElementById('btnStop').disabled = true;
  1171.                     
  1172.                     if (statusInterval) {
  1173.                         clearInterval(statusInterval);
  1174.                         statusInterval = null;
  1175.                     }
  1176.                     
  1177.                     showToast('成功', '任务已停止', 'success');
  1178.                 } else {
  1179.                     addLog('callFun方法不可用', 'error');
  1180.                     showToast('错误', '无法连接到原生环境', 'error');
  1181.                 }
  1182.                
  1183.             } catch (e) {
  1184.                 addLog('停止失败: ' + e.message, 'error');
  1185.                 showToast('错误', '停止失败: ' + e.message, 'error');
  1186.             }
  1187.         }
  1188.         
  1189.         function getStatus() {
  1190.             try {
  1191.                 if (window.at && window.at.callFun) {
  1192.                     var status = window.at.callFun('main', 'GET_STATUS');
  1193.                     updateStatus(status);
  1194.                 }
  1195.             } catch (e) {
  1196.                 // 静默失败,避免频繁报错
  1197.             }
  1198.         }
  1199.         
  1200.         function resetStats() {
  1201.             if (confirm('确定要重置统计数据吗?')) {
  1202.                 try {
  1203.                     addLog('&#128260; 正在重置统计数据...', 'info');
  1204.                     
  1205.                     if (window.at && window.at.callFun) {
  1206.                         var result = window.at.callFun('main', 'RESET_STATS');
  1207.                         addLog(result, 'success');
  1208.                         
  1209.                         // 清空状态显示
  1210.                         document.getElementById('statTotal').textContent = '0';
  1211.                         document.getElementById('statLiked').textContent = '0';
  1212.                         document.getElementById('statCommented').textContent = '0';
  1213.                         document.getElementById('statShared').textContent = '0';
  1214.                         document.getElementById('statFollowed').textContent = '0';
  1215.                         document.getElementById('statFailed').textContent = '0';
  1216.                         document.getElementById('progressBar').style.width = '0%';
  1217.                         document.getElementById('progressText').textContent = '准备就绪';
  1218.                         document.getElementById('currentStep').textContent = '-';
  1219.                         document.getElementById('startTime').textContent = '-';
  1220.                         
  1221.                         showToast('成功', '统计数据已重置', 'success');
  1222.                     } else {
  1223.                         addLog('callFun方法不可用', 'error');
  1224.                         showToast('错误', '无法连接到原生环境', 'error');
  1225.                     }
  1226.                     
  1227.                 } catch (e) {
  1228.                     addLog('重置失败: ' + e.message, 'error');
  1229.                     showToast('错误', '重置失败: ' + e.message, 'error');
  1230.                 }
  1231.             }
  1232.         }
  1233.         
  1234.         function exportReport() {
  1235.             try {
  1236.                 addLog('&#128196; 正在生成执行报告...', 'info');
  1237.                
  1238.                 var report = '========================================\n';
  1239.                 report += '&#128202; 抖音广告投放执行报告\n';
  1240.                 report += '========================================\n';
  1241.                 report += '生成时间: ' + new Date().toLocaleString() + '\n\n';
  1242.                
  1243.                 // 添加配置信息
  1244.                 report += '--- 配置信息 ---\n';
  1245.                 report += '搜索关键词: ' + document.getElementById('keywords').value + '\n';
  1246.                 report += '最大视频数: ' + document.getElementById('maxVideos').value + '\n';
  1247.                 report += '操作间隔: ' + document.getElementById('waitTime').value + '秒\n';
  1248.                 report += '点赞: ' + (document.getElementById('likeEnabled').checked ? '开启' : '关闭') + '\n';
  1249.                 report += '评论: ' + (document.getElementById('commentEnabled').checked ? '开启' : '关闭') + '\n';
  1250.                 report += '分享: ' + (document.getElementById('shareEnabled').checked ? '开启' : '关闭') + '\n';
  1251.                 report += '关注: ' + (document.getElementById('followEnabled').checked ? '开启' : '关闭') + '\n\n';
  1252.                
  1253.                 // 添加统计数据
  1254.                 report += '--- 统计数据 ---\n';
  1255.                 report += '总视频数: ' + document.getElementById('statTotal').textContent + '\n';
  1256.                 report += '点赞数: ' + document.getElementById('statLiked').textContent + '\n';
  1257.                 report += '评论数: ' + document.getElementById('statCommented').textContent + '\n';
  1258.                 report += '分享数: ' + document.getElementById('statShared').textContent + '\n';
  1259.                 report += '关注数: ' + document.getElementById('statFollowed').textContent + '\n';
  1260.                 report += '失败数: ' + document.getElementById('statFailed').textContent + '\n';
  1261.                 report += '========================================\n';
  1262.                
  1263.                 // 显示报告
  1264.                 alert(report);
  1265.                
  1266.                 addLog('报告已生成', 'success');
  1267.                 showToast('成功', '执行报告已生成', 'success');
  1268.                
  1269.             } catch (e) {
  1270.                 addLog('生成报告失败: ' + e.message, 'error');
  1271.                 showToast('错误', '生成报告失败: ' + e.message, 'error');
  1272.             }
  1273.         }
  1274.         
  1275.         function testConnection() {
  1276.             try {
  1277.                 addLog('&#128279; 正在测试连接...', 'info');
  1278.                
  1279.                 if (window.at && window.at.callFun) {
  1280.                     var testMessage = 'H5控制台连接测试 - ' + new Date().toLocaleString();
  1281.                     var result = window.at.callFun('main', 'TEST:' + testMessage);
  1282.                     addLog(result, 'success');
  1283.                     showToast('成功', result, 'success');
  1284.                 } else {
  1285.                     addLog('callFun方法不可用', 'error');
  1286.                     showToast('错误', '无法连接到原生环境', 'error');
  1287.                 }
  1288.                
  1289.             } catch (e) {
  1290.                 addLog('测试连接失败: ' + e.message, 'error');
  1291.                 showToast('错误', '连接失败: ' + e.message, 'error');
  1292.             }
  1293.         }
  1294.         
  1295.         // ==================== 初始化 ====================
  1296.         
  1297.         window.onload = function() {
  1298.             addLog('控制台初始化完成', 'info');
  1299.             addLog('系统版本: v2.0.0 | Build 2026.06.13', 'info');
  1300.             
  1301.             // 自动加载配置
  1302.             setTimeout(function() {
  1303.                 loadConfig();
  1304.             }, 300);
  1305.             
  1306.             // 测试连接(延迟更长时间确保WebView完全初始化)
  1307.             setTimeout(function() {
  1308.                 try {
  1309.                     testConnection();
  1310.                 } catch (e) {
  1311.                     addLog('连接测试失败(可忽略): ' + e.message, 'warn');
  1312.                 }
  1313.             }, 1500);
  1314.             
  1315.             addLog('等待用户操作...', 'info');
  1316.         };
  1317.     </script>
  1318. </body>
  1319. </html>
复制代码





unto赛博朋克任务控制中心H5示例nextnocontent
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
群发软件AIWROK软件框架的抖音自动化营销系统
AIWROK软件框架的抖音自动化营销系统
群发软件赛博朋克任务控制中心H5示例
赛博朋克任务控制中心H5示例
群发软件苹果脚本现代深色UI设计风格
现代深色UI设计风格
群发软件AIWROK软件智能任务监控悬浮窗
AIWROK软件智能任务监控悬浮窗
群发软件AIWROK软件事件监听示例
AIWROK软件事件监听示例
群发软件QZ掘金原生UI界面
QZ掘金原生UI界面
群发软件安卓脚本auto方法完整示例
安卓脚本auto方法完整示例
群发软件安卓脚本暂停弹出确认对话框
安卓脚本暂停弹出确认对话框
群发软件苹果iOS脚本天气信息查询工具
苹果iOS脚本天气信息查询工具
群发软件安卓脚本简化版H5日志输出窗口
安卓脚本简化版H5日志输出窗口
群发软件安卓脚本简化版H5日志输出窗口
安卓脚本简化版H5日志输出窗口
群发软件安卓脚本应用重置、代理模式监控及补丁升级
安卓脚本应用重置、代理模式监控及补丁升级
群发软件安卓脚本里的打开关闭安装以及卡密授权信息
安卓脚本里的打开关闭安装以及卡密授权信息
群发软件AIWROK软件脚本GET下载文件并检测0KB工具
AIWROK软件脚本GET下载文件并检测0KB工具
群发软件安卓脚本HID按键方法完整示例
安卓脚本HID按键方法完整示例
群发软件AIWROK软件键鼠HID滑动所有方法功能演示
AIWROK软件键鼠HID滑动所有方法功能演示
群发软件苹果脚本里HID的5种滑动方法的使用
苹果脚本里HID的5种滑动方法的使用
群发软件苹果脚本示例7种不同的OCR识别和点击方法
苹果脚本示例7种不同的OCR识别和点击方法
群发软件AIWROK软件安卓脚本FTP上传下载例子
AIWROK软件安卓脚本FTP上传下载例子
群发软件AIWROK软件脚本JSON转换示例
AIWROK软件脚本JSON转换示例
群发软件AIWROK软件运算符高级应用实例
AIWROK软件运算符高级应用实例
群发软件JavaScript语法小示例
JavaScript语法小示例
群发软件展示JavaScript各种语句标识符的实际应用
展示JavaScript各种语句标识符的实际应用
群发软件AIWROK条件语句实用示例智能活动推荐系统
AIWROK条件语句实用示例智能活动推荐系统
群发软件AIWROK软件示例数组方法实战应用
AIWROK软件示例数组方法实战应用
群发软件示例JavaScript的 try-catch-finally-throw用法
示例JavaScript的 try-catch-finally-throw用法
群发软件JavaScript 高级错误处理实战示例
JavaScript 高级错误处理实战示例
群发软件安卓脚本AIWROK软件示例JS函数高级用法
安卓脚本AIWROK软件示例JS函数高级用法
群发软件AIWROK环境JavaScript编码规范完整示例
AIWROK环境JavaScript编码规范完整示例
群发软件安卓脚本示例实时截图判断页面变化
安卓脚本示例实时截图判断页面变化
群发软件苹果脚本7种不同的OCR识别
苹果脚本7种不同的OCR识别
群发软件安卓脚本多变的function用法
安卓脚本多变的function用法
群发软件苹果脚本示例Config配置H5集成
苹果脚本示例Config配置H5集成
群发软件安卓脚本类型判断与Boolean对象综合示例
安卓脚本类型判断与Boolean对象综合示例
群发软件线程全局变量H5可视化控制台
线程全局变量H5可视化控制台
群发软件秒吐司快速显示和关闭的UI提示窗口
秒吐司快速显示和关闭的UI提示窗口
群发软件苹果脚本里H5 里的 window.at.callFun 示例
苹果脚本里H5 里的 window.at.callFun 示例
群发软件H5日志打印运行过程例子
H5日志打印运行过程例子
群发软件AIWROK软件字符串方法实用案例
AIWROK软件字符串方法实用案例
群发软件HID贝塞尔曲线运动控制器
HID贝塞尔曲线运动控制器
群发软件AIWROK苹果脚本sleep方法综合实战示例
AIWROK苹果脚本sleep方法综合实战示例
群发软件苹果脚本Line控件的多种创意用法和实际应用场景
苹果脚本Line控件的多种创意用法和实际应用场景
群发软件苹果脚本toast高级应用综合示例
苹果脚本toast高级应用综合示例
群发软件苹果智能OCR自动化助手
苹果智能OCR自动化助手
群发软件苹果脚本UI超快速点击示例
苹果脚本UI超快速点击示例
群发软件展示时间戳的各种复杂处理方法
展示时间戳的各种复杂处理方法
群发软件苹果脚本随机数实用示例
苹果脚本随机数实用示例
群发软件安卓手机脚本多种倒计时显示方式
安卓手机脚本多种倒计时显示方式
群发软件苹果脚本屏幕事件EVENT示例
苹果脚本屏幕事件EVENT示例
群发软件苹果脚本屏幕类screen例子
苹果脚本屏幕类screen例子
群发软件安卓手机config配置演示实列
安卓手机config配置演示实列
群发软件苹果脚本配置config小实例
苹果脚本配置config小实例 https://www.yuque.com/aiwork/dcvhmb/qolobpysdg0hvi2e
群发软件苹果脚本矩形类rect小实例
苹果脚本矩形类rect小实例
群发软件AIWROK安卓苹果平台设计的实用工具库
AIWROK安卓苹果平台设计的实用工具库
群发软件AIWROK软件Function导入方法实例演示
AIWROK软件Function导入方法实例演示
群发软件苹果脚本实例1项目project应用示例
苹果脚本实例1项目project应用示例
群发软件苹果脚本实例1剪贴板功能集成
苹果脚本实例1剪贴板功能集成
群发软件苹果iOS脚本Detect类系统性使用示例
苹果iOS脚本Detect类系统性使用示例
群发软件AIWROK苹果系统打印H5界面日志输出
AIWROK苹果系统打印H5界面日志输出
群发软件H5案例自动化看广告撸金币系统
H5案例自动化看广告撸金币系统
群发软件AIWROK苹果脚本H5任务执行小例子
AIWROK苹果脚本H5任务执行小例子
群发软件AIWROK软件苹果水平容器[Horizontal]小实例
AIWROK软件苹果水平容器[Horizontal]小实例
群发软件AIWROK苹果脚本实例1界面UI输入框类[Input]
AIWROK苹果脚本实例1界面UI输入框类
群发软件AIWROK软件苹果脚本案例1空白站位[Space]方法
AIWROK软件苹果脚本案例1空白站位[Space]方法
群发软件AIWROK软件苹查系统复选框用法
AIWROK软件苹查系统复选框用法

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-6-15 08:03 , Processed in 0.322979 second(s), 51 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表