开奖记录
本瓜将在此小节,公开往期所有抽奖的【开奖记录】,并会持续更新、维护这个表!
以后的每次抽奖也都会带着本篇链接🔗进行指引~~
日期🌅 | 奖品🎁 | 中奖工友🎉 | 沸点链接🚀 |
---|---|---|---|
2022.09.26 | usc旅行箱 | 遇到一个刷子,tui, juejin.cn/pin/7148654… 后面会把奖补回来 | juejin.cn/pin/7147491… |
2022.09.22 | 迪卡侬登山杖 | 少女的英雄梦 | juejin.cn/pin/7144893… |
2022.07.22 | 【1支爱国者录音笔、1张100元京东卡、3个掘金棒球帽、2个护腕鼠标垫、3个商务笔记本】 | 后端小菜鸡、起fei、Xyuan_、sun麋鹿先生、一枚前端小姐姐、郑儿八经、指尖逆苍穹、YvLu、这里查无此人、哒布溜 | juejin.cn/pin/7121539… |
2022.06.26 | 罗技(G) G302 电竞游戏鼠标(199 rmb) | 用户未知 | juejin.cn/pin/7112230… |
2022.05.17 | HVDB洗面奶1瓶 | 林浅不见鹿 | juejin.cn/pin/7098594… |
2022.04.19 | 小熊电热饭盒 | 掘金宋鸭丝 | juejin.cn/pin/7088128… |
2022.03.15 | 云南黑咖啡(2盒) | Ylimhs、wyoon | juejin.cn/pin/7075169… |
2022.01.25 | Dell Pro Wireless Keyboard and Mouse – KM5221W | 阿珍_你来真的呀 | juejin.cn/pin/7056944… |
2021.11.15 | 一套掘金徽章(共8枚) | 就你帅 | juejin.cn/pin/7030608… |
2021.11.07 | 掘金超大鼠标垫 | Benjamin | juejin.cn/pin/7027509… |
2021.11.02 | 掘金缸子(或帽子) | 掘金WindTalker | juejin.cn/pin/7025902… |
2021.09.27 | 1 包地狱辣拉面说(共 3 名) | BUG预言家、一只鱼呀、摸摸鱼神-未领取 | juejin.cn/pin/7012498… |
2021.09.14 | 4 个毛绒公仔 | 看星星的兔子 | juejin.cn/pin/7006633… |
2021.09.06 | 1箱(6包)加辣加臭螺蛳粉 | 滑稽点 | juejin.cn/pin/7003205… |
2021.08.07 | 100 现金红包 | 你的代码有bug | juejin.cn/pin/6993241… |
2021.07.23 | 掘金缸子 | Mr_Chai | juejin.cn/pin/6987296… |
各位工友请放心,既然把抽奖这个事儿正紧的提上了日程,后续活动会越来越多!!
如果你对奖品有任何想法,可以留言反馈~
持续关注!!持续抽奖!!! 让我康康,有谁会跟奖品过不去(●'◡'●)~~
抽奖算法
抽奖嘛,公平永远是第一位!每人的中奖概率均等是最最最要紧的前提!
刚好在一篇掘文《# 卡牌大师:玩转“洗牌算法”,幸运女神在微笑 (^_^)》中研究了乱序洗牌算法,如果公开算法来抽奖,那不得是:有理有据,百口莫辩!
老观众都知道,抽奖算法一直用的是著名的 Fisher-Yates 算法,对原理有兴趣的工友,可到前面的文章中去寻找;
以下是完整代码,可在活动沸点界面的控制台中运行:
附加优化:
原本的代码要一直把评论全部展开才能获取全部名单,怎样能通过脚本自动展开呢?咱就是说,有需要的工友动手试试呗,这里本瓜先搞一个简陋版本的,定次数调用滚轮下滑;
/***************获取所有评论的代码******************/
window.scrollTo(0,document.body.scrollHeight)
document.getElementsByClassName("fetch-more-comment")[1].click() // 一:先模拟第一次点击展开评论
function doInterval(fn,times,duration){
let timesRun=0
var interval = setInterval(function(){
timesRun += 1;
if(timesRun === times){
clearInterval(interval);
}
console.log("下拉获取次数",timesRun)
fn();
}, duration);
}
doInterval(()=>window.scrollTo(0,document.body.scrollHeight),30,1000) // 二、再模拟连续下滑滚轮触底
// * ps:这么写其实有点小毛病,不信可以把间隔时间缩短到100毫秒试试,你能优化优化吗?
/***************抽奖代码******************/
const domArr=document.getElementsByClassName("comment-list")[0].getElementsByClassName("username username")
const getLuckyBoys = function(){
// 获取参与沸点评论的掘友
let luckyBoys = []
for(let i =0;i<domArr.length;i++){
luckyBoys.push(domArr[i].innerText)
}
return Array.from(new Set(luckyBoys))// 去重“重复评论”
}
const FYShuffle_lucyest = function () {
// 乱序算法
let nums=[]
for(let i=1,len=getLuckyBoys().length;i<=len;i++){
nums.push(i)
}
const radomNums = nums.slice(0);
let len = radomNums.length;
while (len > 1) {
let rand = Math.floor(Math.random() * len);
len--;
let temp = radomNums[len];
radomNums[len] = radomNums[rand];
radomNums[rand] = temp;
}
return radomNums[0]; // 中奖序号
}
const handleLottery =function (){
// 进行抽奖
console.log("参赛选手:",getLuckyBoys())
console.log("最终得奖:",getLuckyBoys()[FYShuffle_lucyest()-1])
console.log(new Date())
}
setInterval(()=>{
// 当天抽奖倒计时
let date = new Date()
console.log(`倒计时,${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`)
if (date.getHours() ===17
&&date.getMinutes()===0
&&date.getSeconds()===0) {
// 开奖
handleLottery()
}
},1000)
- 掘金评论功能在改版,获取 Dom 可能存在细微差别;
@我本来就很美,这个工友,脚本给你啦~ 按需所取,按需所改🙌
更新: 一次性抽多人的:
const domArr=document.getElementsByClassName("comment-list")[0].getElementsByClassName("username username")
const getLuckyBoys = function(){
// 获取参与沸点评论的掘友
let luckyBoys = []
for(let i =0;i<domArr.length;i++){
luckyBoys.push(domArr[i].innerText)
}
return Array.from(new Set(luckyBoys))// 去重“重复评论”
}
const FYShuffle_lucyest = function (N) {
// 乱序算法
let nums=[]
for(let i=1,len=getLuckyBoys().length;i<=len;i++){
nums.push(i)
}
const radomNums = nums.slice(0);
let len = radomNums.length;
while (len > 1) {
let rand = Math.floor(Math.random() * len);
len--;
let temp = radomNums[len];
radomNums[len] = radomNums[rand];
radomNums[rand] = temp;
}
return radomNums.slice(0,N); // 中奖数组
}
const handleLottery =function (N){
// 进行抽奖
console.log("参赛选手:",getLuckyBoys())
const muti_lucyest=FYShuffle_lucyest(N)
for(let i=0;i<N;i++){
console.log(`最终得奖第${i+1}位:${getLuckyBoys()[muti_lucyest[i]-1]}`)
}
console.log(new Date())
}
setInterval(()=>{
// 当天抽奖倒计时
let date = new Date()
console.log(`倒计时,${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`)
if (date.getHours() ===10
&&date.getMinutes()===0
&&date.getSeconds()===0) {
// 开奖
handleLottery(3) // 抽 3 个人
}
},1000)
不忘初心
话说本瓜 为什么 要在沸点进行 抽奖 呢?最直接的原因有两点:
- 感谢大家一直以来的支持🙏;
- 顺道能吸波粉(那就更好啦~(●'◡'●)~);
内容创作者嘛,当然希望在创作的同时能得到关注,有时候费劲心力撰文一篇却无人问津,多少是有些失落的。
没办法做到极致的纯粹,也担心最终成为 “自嗨型” 作者~~
所以大家的反馈和支持对本瓜来说,真的是最强有力的鼓励!!(ง •_•)ง
欢迎大家加我加群,微信:Anthony1453,V我一起学习~~
或者关注公众号【掘金安东尼】,上面有除了程序员之外的更多生活写文、创作;
相信技术、传递价值。 —— juejin.cn
输出暴露输入、技术洞见生活,我们同行。 —— 掘金安东尼
祝你好运
最后,祝大家抽奖总是好运连连!!!
我是掘金安东尼,公众号同名,输出暴露输入,技术洞见生活,再会~