代码拉取完成,页面将自动刷新
(function () {
// 获取评论区所有用户名
// 评论比较少,没有分页~~ 所以一个query就搞定了
// const users = [...document.querySelectorAll('.reply-list .user-name')]
// .map((el) => el.innerText)
// .filter((name => name !== '程序员D1'))
// 设置奖品
// 视频中有四种墨水屏时钟,随机抽取一种作为奖品
const gifts = [
'2.13',
'2.66',
'2.9',
'4.2'
]
async function sleep(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms)
})
}
const stop = 30000
// 抽取行为:
// 按照随机间隔遍历数组,当总时间到达指定时间后停止
async function randomVisit(arr) {
// 去重
arr = [...new Set(arr)]
let duration = 0
for (let i = 0; i < arr.length; i++) {
// 每次停留时间0.1-0.4s
const rand = 100 + Math.round(Math.random() * 300)
const current = arr[i]
await sleep(rand)
duration += rand
if (duration >= stop) {
console.log('result:', current)
return current
}
console.log('------>', current, ' ', i)
if (i === arr.length - 1) {
i = -1
}
}
}
// async function fetchUsers() {
// // 地址需要修改,从network中的请求中直接复制。
// const url = 'https://api.bilibili.com/x/v2/reply/main?csrf=49e839cce988e818a011c0d1c1171aa6&mode=3&oid=486730748&pagination_str=%7B%22offset%22:%22%22%7D&plat=1&seek_rpid=&type=1'
// const res = await fetch(url)
// const jsonData = await res.json()
// // 不排除up主自己了~ 随机到自己的话重新执行一次
// return jsonData.data.replies.map((reply) => reply.member.uname)
// }
async function run() {
console.log('开始设置奖品:')
const gift = await randomVisit(gifts)
console.log('----------> 奖品为:', gift)
console.log('开始抽奖:')
const users = [...document.querySelectorAll('#comment > div > div > div > div.reply-warp > div.reply-list div.user-info > div')].map(item => item.innerText) // 拉取用户
console.log('用户列表:', users.join(';'))
const user = await randomVisit(users)
console.log('----------> 恭喜中奖用户', user, gift)
}
run()
// 结束!!
})()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。