diff --git a/guangchang/feed.js b/guangchang/feed.js index 009d87c..ea6b5e7 100644 --- a/guangchang/feed.js +++ b/guangchang/feed.js @@ -2,16 +2,29 @@ GC_BAND(stage):「孕 N 周」→ 孕周段 1~6(同「其他妈妈也在搜」:≤8/≤13/≤20/≤28/≤36/37+);「宝宝 N 个月 / 产后」→ 0 过来人;认不出 → -1 GC_ORDER(list, ub):按用户孕周段 ub 重排 —— 同段为主,每 5 条里 3 条同段 + 1 条过来人 + 1 条相邻段;ub='pp'(已生)过来人优先;ub<=0 原样返回 */ (function () { - /* 11-05 用户:「广场帖子的点赞量每天都要涨一些,一天涨 20~30,随机」 - → 从 2026-11-05(北京时间)起,每过一个北京时间零点,每篇帖子 +20~30;每篇每天涨多少按「帖子 id + 第几天」哈希定, - 所以同一天里刷新 / 换手机 / 首页和广场看到的数都一样,过零点才变。只用于示例帖子(data.js / feed.js 里写死的点赞数), - 真实投稿的点赞走后台,不经过这里。首页卡堆、「大家都在关注」、广场列表和详情都读这个。 */ + /* 11-05 用户:「广场帖子的点赞量每天都要涨一些」→ 二改(同日):「一天里也要随机变化,比如一天 +50,平均分到用户多的时候,不能一直固定」 + → 从 2026-11-05(北京时间)起,每篇每天涨 40~60 个赞(按「帖子 id + 第几天」哈希定);这些赞拆成一个一个, + 每个赞落在当天哪一分钟也按哈希定,按北京时间各小时的活跃度加权(LK_HR:晚 8~10 点最多、白天午饭前后次之、凌晨很少), + 所以白天刷新会看到数一点点往上走,不是零点一次跳;同一时刻刷新 / 换手机 / 首页和广场看到的数都一样。 + 只用于示例帖子(data.js / feed.js 里写死的点赞数),真实投稿的点赞走后台,不经过这里。首页卡堆、「大家都在关注」、广场列表和详情都读这个。 */ + var LK_HR = [1.2, .6, .3, .2, .2, .3, .8, 2, 2.5, 3, 3.2, 3, 3.5, 3.2, 2.5, 2.4, 2.4, 2.6, 2.8, 3.2, 4, 4.5, 4, 2.5], LK_CUM = [], lkS = 0; + LK_HR.forEach(function (w) { lkS += w; LK_CUM.push(lkS); }); + var lkH = function (k) { /* 字符串哈希 + 打散(相邻的 u 结果差得开,赞不会扎堆在同一分钟) */ + var h = 7; for (var j = 0; j < k.length; j++) h = (h * 31 + k.charCodeAt(j)) | 0; + h ^= h >>> 16; h = Math.imul(h, 0x85ebca6b); h ^= h >>> 13; h = Math.imul(h, 0xc2b2ae35); h ^= h >>> 16; + return h >>> 0; + }; window.GC_LIKES = function (id, base) { - var day = Math.floor((Date.now() + 8 * 3600e3) / 864e5) - Math.floor((Date.parse('2026-11-05T00:00:00+08:00') + 8 * 3600e3) / 864e5), add = 0; - for (var d = 1; d <= day; d++) { - var h = 7, k = id + '#' + d; - for (var j = 0; j < k.length; j++) h = (h * 31 + k.charCodeAt(j)) | 0; - add += 20 + Math.abs(h) % 11; + var now = Date.now() + 8 * 3600e3, d0 = Math.floor((Date.parse('2026-11-05T00:00:00+08:00') + 8 * 3600e3) / 864e5), + today = Math.floor(now / 864e5) - d0, min = (now % 864e5) / 6e4, add = 0; + for (var d = 0; d <= today; d++) { + var n = 40 + lkH(id + '#' + d) % 21; + if (d < today) { add += n; continue; } + for (var u = 0; u < n; u++) { /* 第 u 个赞:按活跃度挑小时,再在小时里挑分钟 */ + var r = (lkH(id + '#' + d + '#' + u) % 100000) / 100000 * lkS, hr = 0; + while (LK_CUM[hr] < r) hr++; + if (hr * 60 + lkH(id + '@' + d + '@' + u) % 60 <= min) add++; + } } return (+base || 0) + add; }; diff --git a/guangchang/index.html b/guangchang/index.html index 5a70889..23a1697 100644 --- a/guangchang/index.html +++ b/guangchang/index.html @@ -912,10 +912,10 @@ html.night .gtg button.on{background:#F2725B;border-color:#F2725B;color:#fff}
- - - - + + + + @@ -986,7 +986,7 @@ html.night .gtg button.on{background:#F2725B;border-color:#F2725B;color:#fff} var CMD = null, CMERR = false; /* 头像编码:数字 = av/NNNN.webp(旧代码头像);'av:c012' = av/c012.webp(卡通/可爱卡通);'/…' = 站内绝对路径(内置头像库 /_bridge/avatars/);其余 = assets/img/mom/xxx.jpg */ var avP = function (a) { return typeof a === 'number' ? 'av/' + ('000' + a).slice(-4) + '.webp' : a.indexOf('av:') === 0 ? 'av/' + a.slice(3) + '.webp' : a.charAt(0) === '/' ? a : '../assets/img/mom/' + a + '.jpg'; }; - fetch('cm.json?v=26110472').then(function (r) { return r.json(); }).then(function (j) { + fetch('cm.json?v=26110473').then(function (r) { return r.json(); }).then(function (j) { CMD = j; if (openId && NBY[openId]) { renderComments(NBY[openId]); syncBar(NBY[openId]); } }).catch(function () { CMERR = true; if (openId && NBY[openId]) renderComments(NBY[openId]); }); function commentsOf(n) { diff --git a/guangchang/mine/index.html b/guangchang/mine/index.html index db90908..404c0b5 100644 --- a/guangchang/mine/index.html +++ b/guangchang/mine/index.html @@ -107,7 +107,7 @@ main{padding:6px 16px 0}
- + - + + @@ -2669,13 +2669,13 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2 - - + + - + - + - + - - - + + +