diff --git a/scripts/dramacmt/README.md b/scripts/dramacmt/README.md index 3244c35..b2a3e10 100644 --- a/scripts/dramacmt/README.md +++ b/scripts/dramacmt/README.md @@ -18,8 +18,11 @@ ## 机器人用户 -- uid 从 **1001** 开始往上发,默认 400 个。该区间原本完全空闲(`uid 1~17` 是库里 - 已有的 17 个机器人,1000 以下整段不碰) +- uid 从 **1001** 开始往上发,`--users` 控制池子大小。该区间原本完全空闲 + (`uid 1~17` 是库里已有的 17 个机器人,1000 以下整段不碰) +- **池子要够大**:同一部剧内用户不重复,所以 `--users` 必须大于 `--max`; + 而且池子太小的话同一个昵称头像会在整个评论区刷屏。实测取值: + tangguo 5,000(和 `scripts/vidcmt` 共用),其余四站 3,000 - uid 必须 `<= 111999`(`common/constant.RobotUIDLimit`)—— `commentser.getTrackInfo` 靠这个阈值判定 `isRobot`,后台可按机器人筛选和撤回 - uid 池远低于 `auto_id` 的 uid 计数器(当时是 3111989,只增不减), @@ -74,8 +77,11 @@ createdAt <= now - **不写 `like` 集合的记录**。`likeCount` 是展示值,`isLike` 只反映当前请求用户, 不建 like 文档不影响功能,也省掉几万条垃圾数据 -文案池在 `content.go`,179 条互不重复。单剧内文案和用户都不重复, -所以 `--max` 不能超过池子容量。 +文案池在 `content.go`,**637 条**互不重复。单剧内文案和用户都不重复, +所以 `--max` 不能超过池子容量(`main.go` 里有硬校验)。 + +容量还要留足余量,不能刚好够:铺 200 条时池子只有 220 条的话,每部剧都会抽到 +九成文案,几千部剧的评论区长得一模一样。现在抽 200 条约占池子三成。 ## 用法 @@ -88,8 +94,9 @@ go build -o /tmp/dramacmt ./scripts/dramacmt/ # 只给评论数为 0 的剧铺,每部 20~50 条(默认) /tmp/dramacmt --dst "$DST_TANGGUO" --db tangguo -# 全部在线短剧都补到 20~50 条 -/tmp/dramacmt --dst "$DST_TANGGUO" --db tangguo --only-empty=false +# 所有在线短剧都加铺 50~200 条(其余四站 2026-10-30 实际用的参数) +/tmp/dramacmt --dst "$DST_HUANGGUO" --db huangguo --users 3000 \ + --min 50 --max 200 --only-empty=false # 调试:只跑 3 部,固定种子便于复现 /tmp/dramacmt --dst "$DST_TANGGUO" --db tangguo --limit 3 --seed 42 @@ -102,11 +109,18 @@ go build -o /tmp/dramacmt ./scripts/dramacmt/ 机器人用户和评论都带标记,撤回是两条命令: ```js -// 撤回评论(软删,保守做法) -db.comment.updateMany({isRobot: true, objType: "drama", userID: {$gte: 1001, $lte: 1400}}, +// 撤回评论(软删,保守做法)。uid 上限按当站实际的 --users 取 +db.comment.updateMany({isRobot: true, objType: "drama", userID: {$gte: 1001, $lte: 5000}}, {$set: {isDelete: true}}) -// countComment 要跟着减,按 objID 分组重算 ``` -硬删同理,把 `$set` 换成 `deleteMany`。重算 `countComment` 用 -`countDocuments({objID, level:1, status:1, isDelete:false})`。 +硬删同理,把 `$set` 换成 `deleteMany`。两种都做完后 `countComment` 要重算, +口径和 App 列表第 1 页保持一致(`app/service/commentser.GetTotalComments`): + +```js +countDocuments({objID, objType: "drama", level: 1, status: 1, + isDelete: false, isAdvertiser: {$in: [null, false]}}) +``` + +短剧和影视不一样:**第 1 页的总条数直接读 `media.countComment`**,第 2 页之后才 +实时查,所以这个字段不重算前端就会出现「显示 N 条但列表是空的」。 diff --git a/scripts/dramacmt/content.go b/scripts/dramacmt/content.go index 9f47ce8..cba7b8c 100644 --- a/scripts/dramacmt/content.go +++ b/scripts/dramacmt/content.go @@ -2,8 +2,15 @@ package main // 评论文案池。短剧观众的常见反应:催更、剧情、演员、画质、追剧感想。 // -// 每部剧从池子里不重复地抽 20~50 条,所以池子容量必须远大于 50, -// 否则同一部剧下会出现重复文案。 +// 每部剧从池子里**不重复**地抽 --min~--max 条,所以池子容量必须远大于 --max, +// 否则同一部剧下会出现重复文案(main.go 里有硬校验)。 +// +// 容量还要留足余量:铺 200 条时,池子只有 220 条的话每部剧都会抽到九成文案, +// 几千部剧的评论区长得一模一样,一眼假。现在 contents 条数见文件末尾的统计, +// 抽 200 条约占池子三成。 +// +// 三类内容故意不收:约炮求联系留地区的、涉及年龄的、非自愿表述的—— +// 这些是审核该删的东西,不该批量生产。 var contents = []string{ // 催更 "什么时候更新下一集啊", "等更新等得好辛苦", "一天一集太少了吧", "求加更!", @@ -78,4 +85,198 @@ var contents = []string{ "更新频率再快点就完美了", "希望这个班底多出点作品", "这部的完成度明显比平均水平高", + + // 催更(续) + "今天也没更新", "怎么还不更", "更新了吗更新了吗", "蹲一个更新预告", + "这周还更不更了", "断更第三天", "等得我都快忘了剧情了", + "求导演行行好", "一集不够塞牙缝", "能不能两集两集地放", + "我愿意多等几天换一集长的", "刚追上就断更", "更到哪了有人知道吗", + "评论区有人知道更新时间吗", "设了提醒还是怕漏", "开了通知就等它响", + "每天固定时间来刷", "看完上一集就在这等了", "再不更我就要去看别的了", + "等更的日子不好过", "更新速度跟不上我的手速", "一更我就来", + "没更新先来点个赞", "占个位置等更新", "更新了记得回来找我", + "这个坑我跳了,等着被填", "追更第一天打卡", "追更第十天了", + "从第一集等到现在", "我已经把前面都重看一遍了", "先看别的垫一垫,等更", + "求个更新时间表", "是不是要等下周", "放假前能更完吗", + "希望别拖到明年", "一次性更完我给你打钱", "愿意为加更付费", + "加更一集吧求你了", "导演你听得到吗", "催更大队集合", + "今天来晚了,更新了没", + + // 剧情 / 编剧(续) + "这集信息量有点大", "剧情推进得很干脆", "不拖泥带水", + "每集都有新进展", "没有一集是废的", "该交代的都交代了", + "这个悬念吊得人难受", "刚解开一个又来一个", "线索给得挺克制", + "看第二遍才发现第一集就埋了", "回头看开头全是暗示", + "这个巧合有点刻意", "剧情逻辑基本站得住", "没有明显的硬伤", + "情绪转折处理得不错", "矛盾爆发那段很带劲", "冲突写得真实", + "人物关系不复杂,看得清楚", "群像写得不错", "每个人都有自己的算盘", + "反派终于有脑子了", "反派不蠢是加分项", "坏人坏得有理由", + "主角不圣母,这点好", "主角终于会还手了", "主角这波操作解气", + "看得我拳头都硬了", "这段太解压了", "憋了几集终于爆发", + "前期憋屈后期爽", "欲扬先抑用得好", "铺垫没白铺", + "结尾收得有点急", "结局有点仓促", "差一个交代就完美了", + "留白留得恰好", "开放结局挺好", "不想要强行圆满的结局", + "希望别为了续集硬留悬念", "这个钩子我咬了", "下一季该怎么接", + "要是能拍成长剧也不错", "这个题材可以深挖", "设定其实很有潜力", + "世界观交代得挺清楚", "规则讲明白了,看得不累", + "时间线有点乱", "闪回太多了容易晕", "插叙用得还算克制", + "叙事视角切换得流畅", "多线并进处理得不错", "两条线终于合上了", + "这条支线有点多余", "支线比主线好看", "希望支线也给个交代", + "台词有金句", "有几句台词挺有嚼头", "这句台词我记下了", + "对白不说教,难得", "没有强行煽情", "该克制的地方克制住了", + "该狠的地方够狠", "尺度把握得刚好", "分寸感不错", + "笑点踩在点上", "不尴尬的幽默", "该严肃的时候立得住", + "情绪没有断层", "看完有点意犹未尽", "想知道后面怎么样了", + + // 角色 / CP + "女主这个性格我喜欢", "女主不恋爱脑真好", "女主终于不装了", + "女主这段哭戏到位", "男主人设立得住", "男主有点东西", + "男主前期有点闷,后面好了", "男二比男主有意思", + "女二这条线我站", "配角个个有名有姓", "配角撑起半部剧", + "这个配角我记住了", "闺蜜这个角色太真实了", "兄弟情写得不错", + "反派的戏最好看", "反派一出来我就精神", "坏人演得真坏", + "这对我站", "这对有化学反应", "这俩站一起就来电", + "CP感很强", "磕到了", "这糖我吃", "终于有进展了", + "这进度条我满意", "这段互动好自然", "眼神戏比台词管用", + "两个人之间的拉扯挺细腻", "别虐了求放过", "虐得我有点上气不接下气", + "希望他们好好的", "给个好结局行吗", "别搞误会那一套", + "误会桥段能不能少点", "没有狗血误会就很好", "成年人之间直接说话真好", + "角色都挺讨人喜欢", "没有让人想快进的角色", "没有讨人厌的工具人", + "每个人的选择都能理解", "没有一个人是纯坏的", "人物都有灰度", + "这个角色挺立体", "角色成长看得见", "主角有变化,不是一成不变", + + // 演员 / 演技(续) + "这几个演员都挺生面孔,但不出戏", "新人演得比预期好", + "女主眼睛会说话", "男主哭戏有层次", "这段无台词的戏演得好", + "演员状态在线", "演员之间很有默契", "对手戏火花四射", + "台词念得清楚,不含糊", "原声出演加分", "不是后期配的,真好", + "口型对得上,舒服", "方言用得挺地道", "口音有点出戏", + "演技撑得住特写", "特写镜头经得起看", "微表情处理得细", + "情绪收放自如", "不用力过猛", "没有夸张的表演", + "反派演员气场很足", "这个演员适合演这种角色", "选角很贴脸", + "配角的演技反而更稳", "老演员一出场就不一样", + "几个年轻演员都在进步", "希望他们都能火", "顺手关注了女主", + "去搜了演员的其他作品", "这个班底值得追", + + // 制作 / 画质 / 配乐(续) + "开头曲挺好听", "主题曲求歌名", "配乐用得克制,不抢戏", + "这段BGM上来我鸡皮疙瘩", "音乐起得恰到好处", "没有滥用煽情音乐", + "音效细节到位", "环境音做得真实", "收音干净", + "混音舒服,不用调音量", "人声和音乐比例合适", + "画面构图讲究", "镜头语言有想法", "转场设计得不错", + "长镜头用得漂亮", "手持镜头不晕", "打光把人拍好看了", + "夜景拍得清楚", "暗部细节还在", "色调统一,看着舒服", + "调色不油腻", "没有滥用滤镜", "美术质感在线", + "置景细节经得起看", "道具没有穿帮", "服装符合人物身份", + "妆造没有脱离剧情", "发型换得有道理", "造型没有悬浮感", + "剪辑节奏舒服", "没有多余的空镜", "该快的快该慢的慢", + "字幕排版清楚", "字幕没有错别字", "分辨率够用了", + "竖屏拍成这样不容易", "竖屏构图没浪费", "适配手机看刚好", + + // 吐槽 / 批评 + "中间几集明显在水", "有两集可以删掉", "这段注水了", + "重复镜头有点多", "回忆片段太长", "片头片尾加起来太占时长", + "广告有点多", "插播位置很烦", "能不能别在高潮处插广告", + "这集结尾有点敷衍", "转折太生硬", "为了反转而反转", + "后期有点崩", "前紧后松", "开头惊艳结尾普通", + "期待值被自己拉太高了", "没有宣传得那么好", "标题有点夸张", + "封面和内容风格不太一样", "简介写得有点误导", + "配角消失得莫名其妙", "这条线没交代就断了", "伏笔忘了收", + "有个bug没人发现吗", "穿帮了一处", "这里前后矛盾", + "时间线对不上", "第五集和第七集说法不一致", + "台词有点书面", "念起来不太像人话", "有几句很尬", + "音乐有点抢戏", "配乐太满了,喘不过气", "滤镜重了点", + "有些镜头有点糊", "夜戏看不清", "声音忽大忽小", + "节奏有点慢,建议1.25倍速", "前三集需要耐心", "过了前三集就好了", + "不是我的口味但能看出用心", "题材不新但拍得认真", + "套路还是那些套路", "能猜到走向,但看着不难受", + + // 平台 / 体验 / 求资源(续) + "终于在这找到全集了", "别的地方都是片段", "这里的片源最清楚", + "求个下载", "能不能支持缓存", "想离线看", + "投屏看更爽", "大屏看质感更好", "耳机听音效完全不一样", + "建议戴耳机", "半夜看记得关声音", "音量先调小", + "收藏夹又多一部", "加到稍后再看了", "分享给群里了", + "推荐给对象一起看", "和家人一起看的", "闺蜜推荐来的", + "评论区看到推荐才点进来的", "首页推给我的,没失望", + "算法这次推得准", "希望多推这种", "同类的都给我来一打", + "求推荐同题材的", "看完想找类似的", "有没有同一个班底的作品", + "这个系列前作也好看", "先看这部再去补前作", "顺序看不影响理解", + "单集独立,随便从哪看都行", "建议从第一集看", "别跳着看", + + // 追剧场景(续) + "午休看了两集", "等车的时候刷完一集", "地铁上看完的", + "在被窝里看完的", "饭都忘了吃", "外卖凉了才想起来", + "一边加班一边偷看", "摸鱼看完的", "开会时候偷看了一集", + "周末一口气刷完", "下雨天在家刷剧最舒服", "假期就靠它了", + "睡前看一集结果看到三点", "本来定了闹钟,结果没睡", "眼睛熬红了", + "第二天起不来也值", "看完直接精神了", "看完还在回味", + "关了屏幕还在想剧情", "脑子里一直循环那段", "走路都在想后续", + "今天第三遍了", "二刷比一刷好看", "三刷发现了新细节", + "每年都会重看一遍", "翻出来重温", "又来回味名场面", + "专门回来看第七集那段", "那段我单独存下来了", "截了好几张图", + "做了壁纸", "剪了个片段", "推荐语都想好了", + + // 讨论 / 互动 / 打卡(续) + "有人看到这条吗", "来晚了,坐最后一排", "前排占座", + "考古的举个手", "两年后还有人在看吗", "翻评论区比看剧还有意思", + "评论区全是神评", "笑点都在评论区", "来评论区取经", + "看完回来对答案", "果然大家都注意到了", "跟我想的一样", + "只有我觉得男二更好吗", "有没有人和我站同一边", + "讨论一下结局", "大家猜猜下一集", "我押反转", + "打赌下集有人要走", "猜中了来找我", "我先立个贴等反转", + "留个脚印", "签到第一天", "每日打卡", "打卡第二遍", + "日常来看一眼", "顺手留个评", "第一次留言给这部", + "必须留个评论支持", "给个好评不过分", "值得一条五星", + "已经推荐三个人了", "拉人入坑成功", "安利出去了", + + // 短评 / 弹幕式(续) + "香", "顶一个", "妙", "稳", "可", "真顶", "有料", "够劲", + "太对了", "就是这个感觉", "对味了", "正合口味", "拿下", + "收下了", "入库", "存了", "顶上去", "必须顶", "帮顶一下", + "顶到首页", "不火说不过去", "凭什么没人看", "宝藏", + "挖到宝了", "捡到了", "赚了", "值", "回本了", "不亏", + "有被治愈", "看完心情好了", "解压", "很上瘾", "沦陷了", + "栽了", "一发入魂", "直接命中", "正中靶心", "我的审美被拿捏了", + "懂我", "这个我熟", "对上了", "好评", "满分", "五星", + "九分起步", "值得高分", "名列前茅", "口碑之作", "良心作品", + "用心了", "看得出诚意", "不糊弄观众", "没有敷衍", + "难得的好东西", "少见的用心", "这种质量多来点", + + // 稍长一点的(续) + "从第一集追到现在,质量一直稳得住,没有中途垮掉", + "难得遇到不靠狗血冲突推进剧情的短剧,看着不累", + "同类型里我看了不少,这部在剧本上明显多花了功夫", + "二十分钟一集能把人物和冲突都立起来,编剧功力不差", + "没有强行拉长,也没有赶进度,节奏感很舒服", + "第一集还有点生涩,从第三集开始整个水准上了一个台阶", + "演员不是熟脸,反而没有偶像剧那种悬浮感", + "布景和服装都不糊弄,一看就知道预算花在了该花的地方", + "主角做的每个选择都有前因,不是编剧硬塞给他的", + "以为是老套路,结果中段来了个我完全没想到的转向", + "前半段的铺垫在后半段全都用上了,这才叫埋伏笔", + "看完回去重看第一集,发现开场那几句台词全是暗示", + "最喜欢的是它没有把观众当傻子,该留白的地方留白了", + "情感戏处理得克制,没有大段哭诉,反而更打人", + "反派不是为了恶而恶,动机写清楚了,这点就比很多剧强", + "结局不算圆满,但是合理,比硬凑一个大团圆好", + "唯一的遗憾是时长,再多三集能把支线交代得更完整", + "一口气看完才发现天都亮了,这种体验很久没有过了", + "推荐给了身边三个人,没有一个说不好看的", + "如果有第二季,原班人马回来我肯定第一时间追", + "这部的完成度放在长剧里也不算差,只是时长短", + "短剧能拍到这个水准,说明问题从来不是形式", + "看惯了注水的,再看这种干净利落的叙事特别舒服", + "每集结尾都停在最想知道后面的地方,太会勾人了", + "镜头、配乐、表演三样都没掉链子,难得的整体感", + "没有一处让我想按快进,这在短剧里已经很稀有了", + "题材不算新鲜,但处理方式让它和同类拉开了差距", + "最打动我的是细节,很多一闪而过的东西都站得住", + "重看第二遍反而更喜欢,第一遍光顾着看剧情了", + "算是今年追过的里面最省心的一部,没有中途失望", + "从头到尾没有降智情节,角色都在正常思考", + "该交代的都交代清楚了,看完没有留下一堆疑问", + "情绪给得满但不腻,收得住,这个火候不好掌握", + "值得一个认真的长评,可惜我写不出更好的话", + "看完去搜了班底,打算把他们的作品都补一遍", }