点赞显示上限限制

我是从发布点赞中抽奖才发现的这个问题。

如图,当点赞数量超过200后,后面的头像图标都不会显示,假如我用GPT随机抽到200以上数字就无法确定是谁中奖,希望可以修复这个问题,辛苦大佬了。

21 个赞

网址+楼层就可以直接跳转到具体楼层了,这比一行行数方便
比如本楼层:点赞显示上限限制 - #2,来自 zhong_little

1 个赞

可是全显示的话,有的帖子就太长了

1 个赞

我当时是设置的评论和点赞中各抽一人

1 个赞

可以设置分页,就是有点麻烦

1 个赞

哦哦原来说的是点赞

1 个赞

对啊,如果修复不了就只能用抽楼层方式

控制台输入下这个代码 看看有没有输出302个 |・ω・`) (我没有那么多赞的帖子尝试不了)

还有点回应的 那得多加一个

fetch('https://linux.do/user_actions.json?limit=1000&username=naihe&filter=2') .then(response => response.json())
  .then(data => {
    // 筛选特定 PostId 的数据
    const specificPostId = 2232219;
    const filteredData = data.user_actions.filter(action => action.post_id === specificPostId); 

    // 提取 acting_username
    const usernames = filteredData.map(action => action.acting_username);

    // 打印或处理 usernames 数组
    console.log(usernames);
  })
  .catch(error => console.error('Error fetching data:', error));

佬这个人数好像对不上,只有286个

1 个赞

因为有人是点回应不是点赞 我还在写 这两个不一样 :tieba_024:(下面这种)

image

1 个赞

原来如此,这个对上了

让gpt合了一下 应该可以了|・ω・`)

// 将两个 fetch 请求放入 Promise.all 中,以便同时执行
Promise.all([
  fetch('https://linux.do/user_actions.json?limit=1000&username=naihe&filter=2').then(response => response.json()),
  fetch('https://linux.do/discourse-reactions/posts/reactions-received.json?limit=1000&username=naihe').then(response => response.json())
]).then(data => {
  // data[0] 是第一个请求的结果,data[1] 是第二个请求的结果
  const specificPostId = 2232219;
  
  // 从第一个请求结果中筛选和提取 acting_username
  const filteredUserActions = data[0].user_actions.filter(action => action.post_id === specificPostId);
  const actingUsernames = filteredUserActions.map(action => action.acting_username);

  // 从第二个请求结果中筛选和提取 username
  const filteredReactionsReceived = data[1].filter(item => item.post_id === specificPostId);
  const usernames = filteredReactionsReceived.map(item => item.user.username);

  // 合并两个结果
  const combinedUsernames = actingUsernames.concat(usernames);

  // 打印或处理合并后的 usernames 数组
  console.log(combinedUsernames);
}).catch(error => {
  console.error('Error fetching data:', error);
});
1 个赞

佬太强了,这个代码唯一的缺憾就是点赞用户顺序不对,不知道能不能按照顺序输出

下面是我从控制台找到的

输出的其实是倒序 多了个响应还挺尴尬 :tieba_092: 试一下这个吧 拿创建时间排了下序

Promise.all([
  fetch('https://linux.do/user_actions.json?limit=1000&username=naihe&filter=2').then(response => response.json()),
  fetch('https://linux.do/discourse-reactions/posts/reactions-received.json?limit=1000&username=naihe').then(response => response.json())
]).then(data => {
  const specificPostId = 2232219;
  
  // 从第一个请求结果中筛选和提取 acting_username 和创建时间
  const filteredUserActions = data[0].user_actions.filter(action => action.post_id === specificPostId);
  const userActionsInfo = filteredUserActions.map(action => ({
    username: action.acting_username,
    createdAt: action.created_at
  }));

  // 从第二个请求结果中筛选和提取 username 和创建时间
  const filteredReactionsReceived = data[1].filter(item => item.post_id === specificPostId);
  const reactionsInfo = filteredReactionsReceived.map(item => ({
    username: item.user.username,
    createdAt: item.created_at
  }));

  // 合并两个信息数组
  const combinedInfo = userActionsInfo.concat(reactionsInfo);

  // 按创建时间排序,从最早到最新
  combinedInfo.sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));

  // 提取排序后的用户名数组
  const sortedUsernames = combinedInfo.map(info => info.username);

  // 打印或处理排序后的 usernames 数组
  console.log(sortedUsernames);
}).catch(error => {
  console.error('Error fetching data:', error);
});
3 个赞

很完美,感谢大佬!

https://linux.do/discourse-reactions/posts/${articleElement.dataset.postId}/reactions-users.json

这个感觉还可以再改善一下
刚刚试了一下破千赞的帖,然而这个 json 只会返回一部分的点赞…

原文

先从 dom 中取得 post id,只请求该 post 的 reactions。
我晚点分享下脚本

点击楼层后 可复制 post id、点赞 url、点赞清单

3 个赞


接口其实是自己的获赞通知(所以只能查自己发的帖子) |・ω・`)
LINUX DO - 新的理想型社区 & LINUX DO - 新的理想型社区

要通用的话把这个限制调大一点就行 设置1万 :melting_face:(默认其实是30 要offset 一点点翻页)

(看楼主的获赞总数去改的 怕一次拉太多数据 )

总结

也可以加判断就是 提前获取一下帖子的创建时间 如果返回数据没有比发帖早的 就继续在拉一些数据 直到覆盖整个发帖 比如20号发的贴 获取的数据只到21号 就继续获取 直到获取了19号的数据 就说明把帖子相关的获赞通知都拉完了

2 个赞