v26110473 广场点赞:每天 40~60 个,按活跃时段分散在一天里随机涨
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
@@ -912,10 +912,10 @@ html.night .gtg button.on{background:#F2725B;border-color:#F2725B;color:#fff}
|
||||
<div id="sheet" role="dialog" aria-modal="true"><i class="sg"></i><div class="sbd" id="sbd"></div></div>
|
||||
<div class="toast" id="toast"></div>
|
||||
|
||||
<script src="topics.js?v=26110472"></script>
|
||||
<script src="data.js?v=26110472"></script>
|
||||
<script src="feed.js?v=26110472"></script>
|
||||
<script src="../js/ava-pool.js?v=26110472"></script> <!-- 11-05 装饰头像分配表(各模块互不重复) -->
|
||||
<script src="topics.js?v=26110473"></script>
|
||||
<script src="data.js?v=26110473"></script>
|
||||
<script src="feed.js?v=26110473"></script>
|
||||
<script src="../js/ava-pool.js?v=26110473"></script> <!-- 11-05 装饰头像分配表(各模块互不重复) -->
|
||||
<script src="ceshi/meta.js?v=26110464"></script>
|
||||
<script src="../js/share-card.js?v=26110464"></script>
|
||||
<script src="../js/cm-pics.js?v=26110464"></script> <!-- 11-05 评论 / 回复带图 -->
|
||||
@@ -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) {
|
||||
|
||||
@@ -107,7 +107,7 @@ main{padding:6px 16px 0}
|
||||
</div>
|
||||
<div class="wb"><button type="button" id="write"><svg class="ic" viewBox="0 0 24 24"><path d="M12 20h9M16.5 3.5a2.1 2.1 0 013 3L7 19l-4 1 1-4z"/></svg>写新的故事</button></div>
|
||||
|
||||
<script src="../topics.js?v=26110472"></script>
|
||||
<script src="../topics.js?v=26110473"></script>
|
||||
<script>
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
24
index.html
24
index.html
@@ -8,8 +8,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>兜爸心选 · 孕育陪伴</title>
|
||||
<!-- 11-04 UGC 总开关(孕妈广场 + 测一测,后台 /box_bm/plaza 顶部切换),见 js/ugc.js -->
|
||||
<script src="js/ugc.js?v=26110472"></script>
|
||||
<!-- V:26110472 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
|
||||
<script src="js/ugc.js?v=26110473"></script>
|
||||
<!-- V:26110473 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
|
||||
<link rel="stylesheet" href="mama-box.css">
|
||||
<link rel="stylesheet" href="night.css">
|
||||
<!-- 11-04 用户:「顶部图片上的倒计时先删除掉」→ 不加载 hero-cd.css / hero-cd.js(文件留着,加回这两行即恢复),头图回到原样式 -->
|
||||
@@ -2669,13 +2669,13 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
|
||||
<script src="/_bridge/avatar-picker.js?v=26101105"></script>
|
||||
<script src="/_bridge/hand-icons.js?v=26101202"></script>
|
||||
<script src="js/zodiac-art.js"></script>
|
||||
<script src="guangchang/topics.js?v=26110472"></script>
|
||||
<script src="js/ava-pool.js?v=26110472"></script> <!-- 11-05 装饰头像分配表(各模块互不重复) -->
|
||||
<script src="guangchang/topics.js?v=26110473"></script>
|
||||
<script src="js/ava-pool.js?v=26110473"></script> <!-- 11-05 装饰头像分配表(各模块互不重复) -->
|
||||
<script src="js/app.js"></script>
|
||||
<script src="js/kit.js?v=26110472"></script>
|
||||
<script src="js/kit.js?v=26110473"></script>
|
||||
<!-- 11-05 用户:孕期百问加上跟趣味小测试一样的底部 Tab(孕期百问 / 记一下 / 返回首页)。挂在 #detailQA 里,面板关着时跟着滑出屏外;
|
||||
「记一下」直接开首页自己的记一下弹层(z 95 盖在百问 z 80 上),「返回首页」= 关掉百问面板 -->
|
||||
<script src="js/mb-tabbar.js?v=26110472"></script>
|
||||
<script src="js/mb-tabbar.js?v=26110473"></script>
|
||||
<script>
|
||||
(function () {
|
||||
var d = document.getElementById('detailQA'); if (!d || !window.MBTab) return;
|
||||
@@ -2695,7 +2695,7 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
|
||||
if (gchDone || !window.__mbUgc) return; gchDone = true;
|
||||
var m = location.search.match(/[?&]gcv=([1-6])(?:&|$)/);
|
||||
if (!m) window.__gcDefault = 1;
|
||||
var n = m ? m[1] : '6', l = document.createElement('link'), s = document.createElement('script'), q = m ? Date.now() : 'v=26110472';
|
||||
var n = m ? m[1] : '6', l = document.createElement('link'), s = document.createElement('script'), q = m ? Date.now() : 'v=26110473';
|
||||
var dir = n === '4' || n === '6' ? 'js/gch/' : 'demo/gch/'; /* 11-03 上正式:定稿 V6(含它套的 V4)并进 js/gch/,其余效果稿仍在 demo/ */
|
||||
l.rel = 'stylesheet'; l.href = dir + 'v' + n + '.css?' + q;
|
||||
s.src = dir + 'v' + n + '.js?' + q;
|
||||
@@ -2710,19 +2710,19 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
|
||||
/* 11-02 品牌露出(用户定 4 处都要):默认加载,?brand=0 可关掉对比;11-03 已并进 js/gch/ */
|
||||
if (!/[?&]brand=0/.test(location.search)) {
|
||||
var bl = document.createElement('link'), bs = document.createElement('script');
|
||||
bl.rel = 'stylesheet'; bl.href = 'js/gch/brand.css?v=26110472'; bs.src = 'js/gch/brand.js?v=26110472';
|
||||
bl.rel = 'stylesheet'; bl.href = 'js/gch/brand.css?v=26110473'; bs.src = 'js/gch/brand.js?v=26110473';
|
||||
document.head.appendChild(bl); document.body.appendChild(bs);
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
<!-- 2026-10-03 首页彩蛋:宝宝在肚皮底下动(独立文件,删掉这一行即整体下线;开关在「隐私权限」) -->
|
||||
<script src="js/bump.js?v=26110472"></script>
|
||||
<script src="js/bump.js?v=26110473"></script>
|
||||
<!-- 2026-10-04 首页头图:按孕周换宝宝 + 阳光水波(独立文件) -->
|
||||
<script src="js/hero-fx.js"></script>
|
||||
<!-- 2026-10-05 首页头图:宝宝时不时动一动小手小脚(独立文件,删掉这一行即下线) -->
|
||||
<script src="js/baby-limbs.js?v=26110472"></script>
|
||||
<script src="js/coach.js?v=26110472"></script>
|
||||
<script src="js/birth-flow.js?v=26110472"></script>
|
||||
<script src="js/baby-limbs.js?v=26110473"></script>
|
||||
<script src="js/coach.js?v=26110473"></script>
|
||||
<script src="js/birth-flow.js?v=26110473"></script>
|
||||
|
||||
<!-- 禁止下拉回弹(2026-10-11 统一规则,与孕期体重同一段):竖向拖动时从手指下往上找还能朝该方向滚的容器,找不到才拦;横滑、双指、可滚列表不受影响 -->
|
||||
<script>
|
||||
|
||||
@@ -244,5 +244,5 @@
|
||||
}
|
||||
/* feed.js 首页默认不加载(index.html 只引了 topics.js),这里按需拉一次 */
|
||||
if (window.GC_FEED) init();
|
||||
else { var fs = document.createElement('script'); fs.src = 'guangchang/feed.js?v=26110472'; fs.onload = fs.onerror = init; document.body.appendChild(fs); }
|
||||
else { var fs = document.createElement('script'); fs.src = 'guangchang/feed.js?v=26110473'; fs.onload = fs.onerror = init; document.body.appendChild(fs); }
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user