悄悄话留言:赞数前 26 条已变星,其余 0~2 赞(够 3 赞本机变星+特效);早孕留言也按内容限定孕周
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -71,6 +71,14 @@ for t in [l.strip() for l in open('tools/whcm/early_rep.txt', encoding='utf-8')
|
||||
hit = [c for c in out if c[1].startswith(head)]
|
||||
assert len(hit) == 1, head
|
||||
hit[0][3].append([early_p[ei], txt]); ei += 1
|
||||
ERULES = [(r'两道杠|还没跟你爸说|验孕棒|小黑圈|胎心胎芽', 6, 8), (r'孕酮|查血|出血', 6, 10), (r'约了NT', 10, 12),
|
||||
(r'葡萄|裤子有点紧|肚子还是平的', 10, 13)]
|
||||
eleft = early_p[ei:]
|
||||
def epick(t):
|
||||
lo, hi = next(((a, b) for pat, a, b in ERULES if re.search(pat, t)), (6, 13))
|
||||
for i in eleft:
|
||||
if lo <= wk(d['p'][i]) <= hi: eleft.remove(i); return i
|
||||
raise SystemExit('没有合适早孕人设:' + t)
|
||||
early = [l.strip() for l in open('tools/whcm/early.txt', encoding='utf-8') if l.strip()]
|
||||
eo = []
|
||||
for k, l in enumerate(early):
|
||||
@@ -78,7 +86,7 @@ for k, l in enumerate(early):
|
||||
rr = []
|
||||
for t in parts[1:]:
|
||||
rr.append([reps[ri], t]); ri += 1
|
||||
eo.append([early_p[ei], parts[0], 0, rr]); ei += 1
|
||||
eo.append([epick(parts[0]), parts[0], 0, rr])
|
||||
# 定赞数:从第 3 条起每隔约 2~3 条放一条早孕的,赞数取前后两条之间
|
||||
merged = []
|
||||
step = len(out) / len(eo)
|
||||
@@ -92,6 +100,15 @@ for e in eo[j:]: e[2] = 3
|
||||
# 追加在最后(模拟留言的 key 是「帖子#下标」,插在中间会让原来那 100 条下标错位,真实回复/本机点赞挂错楼);
|
||||
# 赞数已按插入位置取好,「最热」排序时自然穿插在中间
|
||||
out = out + eo
|
||||
# 11-07 用户定(方案 A):「被赞 3 次变星星」要和赞数对得上 → 赞数最高的 26 条标成已变星(第 5 位 = 1),
|
||||
# 赞数压到几十~个位(不再几百);其余 0~2 个赞,看着就是「还差一点」,有人帮着点一下就能变星(前端本机算)
|
||||
order = sorted(range(len(out)), key=lambda k: -out[k][2])
|
||||
NS = 26
|
||||
for r, k in enumerate(order):
|
||||
if r < NS:
|
||||
out[k][2] = max(4, int(168 * (0.88 ** r)) + rnd.randint(-5, 5)); out[k].append(1)
|
||||
else:
|
||||
out[k][2] = rnd.choice([0, 0, 1, 1, 1, 2, 2])
|
||||
d['c'][TARGET] = out
|
||||
json.dump(d, open(P, 'w', encoding='utf-8'), ensure_ascii=False, separators=(',', ':'))
|
||||
print('ok', len(out), 'replies', ri, 'early', len(eo), 'early-replies', ei - len(eo))
|
||||
print('ok', len(out), 'replies', ri, 'early', len(eo), 'early-replies', ei)
|
||||
|
||||
Reference in New Issue
Block a user