假设你们已经知道大善人的 Workers 和 Pages,并且已经知道怎么创建了
Workers:部署查询接口
Pages:前端抽奖页面
Workers 部署之后记住这个地址
Page 部署
html代码修改此行代码
使用
填写在帖子url中的数字
后续开发计划
- 点赞抽奖
- 点赞+评论抽奖
- 优化随机算法
- UI优化
假设你们已经知道大善人的 Workers 和 Pages,并且已经知道怎么创建了
Workers:部署查询接口
Pages:前端抽奖页面
html代码修改此行代码
填写在帖子url中的数字
你是大善人,是给大家方便的佬,祝你周五愉快
前排围观支持一下
抽奖最大的痛点是抽奖服务器很难读取带权限的帖子
直接反代linux.do
,然后登陆账号
所以我说很难,也许可以撺掇neo给OAuth鉴权后的token加个获取特定帖子信息的能力?
或许 neo 可以给论坛加个抽奖功能
吧这个项目用油猴在页面内打开,cookie走的是当前登录人的,可以解决问题
太强了,大佬!
开源精神!赞
点赞数据,我目前不知道有没有接口是否可以拿到
之前有帖子讨论的,目前帖子点赞接口他只会显示部分(因为前端也只显示一定数量)比较暴力的取法是有的,可以取自己被点赞的所有历史,再过滤帖子,我的自动阅读脚本里有集成可以参考
const postId = parseInt(articleElement.id.replace('post_', ''));
const requestUrl1 = `https://linux.do/user_actions.json?limit=2000&username=${articleElement.innerHTML.match(/data-user-card="([^"]+)"/)[1]}&filter=2`;
const requestUrl2 = `https://linux.do/discourse-reactions/posts/reactions-received.json?username=${articleElement.innerHTML.match(/data-user-card="([^"]+)"/)[1]}`;
try {
const [response1, response2] = await Promise.all([fetch(requestUrl1), fetch(requestUrl2)]);
const data1 = await response1.json();
const data2 = await response2.json();
const userList1 = data1.user_actions
.filter(action => action.post_id === postId)
.map((action, index) => `${index + 1}. ${action.acting_username}`);
const userList2 = data2
.filter(item => item.post_id === postId)
.map((item, index) => `${userList1.length + index + 1}. ${item.user.username}`);
const userList = [...userList1, ...userList2];
我这个我知道,之前我发抽奖,我研究了,我自己写了脚本,这种只能取到点小红心的,点
这种的取不完整
后排强势围观
应该可以吧,你看我请求了两个端,一个是点赞的,一个是reaction的
還是說 reaction 的取不完整呢?我之前試了20多個的印象中可以
真不行呢?这么神奇,刚刚试一个50个的,只有46个
这样感觉还是搞出论坛插件比较靠普,最好能设定等级,重复是否只计一次之类的
是真的不可以,因为我测试过了,因为我之前那个点赞的数量样本数据还挺大,所以被我测试出来了
点小红心的是可以完整抓到的,点其他的去抓,他是会漏数据的
既然需求量这么高,完全可以跟始皇提需求,让他内置
伪随机我觉得也是可以的,例如根据截止时最后回复的post id/楼层/username 等数据作为种子,再随机出一个数字,这样抽奖结果是可以被复现证实没有黑箱自演的。
重复回复的问题只要帖子设定冷却间隔大于抽奖期限就能实现
期待点赞抽奖