/** * diag-post-verify.js — 评论是否真的发出去了?用评论列表做地面真相校验 * * 思路:发评论前后各抓一次评论列表的可见文案,做差集。 * 只有在"发布后新出现"的文案才算真凭实据——比只看计数可靠得多 * (实测遇到过计数不刷新、但评论确实已发布的情况)。 * * 会真的发一条评论(用 config 的评论池第一条)。不点"发送"以外的任何写操作。 */ var cfg = TikTokAuto.config.resolve({ runtime: { dryRun: false } }); var t = TikTokAuto.tiktok; var l = TikTokAuto.layout; var w = TikTokAuto.wait; function visibleTexts(limit) { var texts = className('android.widget.TextView').find(); var out = []; for (var i = 0; i < texts.size(); i += 1) { var node = texts.get(i); if (!l.isVisible(node)) { continue; } var value = l.text(node); if (value && value.length >= 2) { out.push(value); } if (out.length >= limit) { break; } } return out; } function openCommentList() { if (t.panelInput() !== null) { return true; } var button = t.commentButton(); if (!button) { return false; } TikTokAuto.ui.clickNode(button, 'diag'); return w.waitFor('diag', function () { return t.panelInput() !== null ? true : null; }, 8000, 200) === true; } function closePanel() { if (t.panelInput() !== null) { back(); w.tick(600); } } function diff(before, after) { var added = []; for (var i = 0; i < after.length; i += 1) { if (before.indexOf(after[i]) === -1) { added.push(after[i]); } } return added; } // ---- 就位:必须在播放页 ---- if (t.pageState() !== 'player') { console.log('DIAG 当前不在播放页(' + t.pageState() + '),尝试打开第一个卡片'); var cards = t.videoCards(); console.log('DIAG 卡片数=' + cards.length); if (cards.length > 0) { TikTokAuto.ui.clickNode(cards[0].container, 'diag'); TikTokAuto.player.waitPlayerReady(cfg, 'diag'); } } console.log('DIAG state=' + t.pageState() + ' count=' + t.commentCount()); // ---- 发布前:抓一次评论列表 ---- console.log('DIAG 打开评论列表(发布前)…'); openCommentList(); var before = visibleTexts(30); console.log('DIAG 发布前可见文案 ' + before.length + ' 条:' + JSON.stringify(before.slice(0, 12))); closePanel(); // ---- 发布 ---- var text = cfg.comments.pool[0]; console.log('DIAG 准备发布:' + JSON.stringify(text) + ',发布前计数=' + t.commentCount()); var result = TikTokAuto.comment.post(cfg, text, 'diag'); console.log('DIAG 发布返回:' + JSON.stringify(result)); // ---- 发布后:再抓一次评论列表 ---- w.tick(2500); console.log('DIAG 发布后计数=' + t.commentCount()); console.log('DIAG 打开评论列表(发布后)…'); openCommentList(); var after = visibleTexts(30); console.log('DIAG 发布后可见文案 ' + after.length + ' 条:' + JSON.stringify(after.slice(0, 12))); console.log('DIAG 新增文案=' + JSON.stringify(diff(before, after))); console.log('DIAG 目标文案在列表里=' + (after.indexOf(text) !== -1));