from bilibili_api.video import VideoInfo
import random
import time
#导入各种库
#设置一个固定的时间戳作为抽奖随机数的种子,使每次结果都相同
times = '2020-08-03 10:00:00'
timeArray = time.strptime(times, "%Y-%m-%d %H:%M:%S")
timeStamp = int(time.mktime(timeArray))
#设置随机数种子
random.seed(timeStamp)
#设置视频的bv号并获取到视频信息的对象
bvid = 'BV1DZ4y1u7B1'
video_info = VideoInfo(bvid=bvid)
#调用get_comments方法获取的到评论列表
Users = video_info.get_comments()
#使用冒泡排序对获取到的评论列表重新排列
def user_sort():
global Users
a = 0
for i in range(1, len(Users)):
for j in range(0, len(Users)-i):
if Users[j]['rpid'] > Users[j+1]['rpid']:
a = Users[j+1]
Users[j + 1] = Users[j]
Users[j] = a
return Users
#调用并赋值新的数组
users = user_sort()
#没有任何作用的三秒延迟
time.sleep(3)
#设置luck_list为列表类型
luck_list = []
#创建luck_time方法获取到用户的数据
def luck_time(i):
global users
luck = users[i]
uid = luck['member']['mid']
name = luck['member']['uname']
content = luck['content']['message']
luck_people = {'name':name,'uid':uid,'content':content}
return luck_people
#判断是否抽到过
def if_in(uid):
global luck_list
a = False
for i in range(0,len(luck_list)):
if luck_list[i]['uid'] == uid:
a = True
return a
#创建随机数生成以及存储用户
def random_people():
global luck_list
r = random.randint(0,len(users))
luck_people = luck_time(r)
#判断用户是否为up本人或是否已经存在于幸运列表里
if luck_people['uid'] == '278964074' or if_in(luck_people['uid']):
luck_people = random_people()
return luck_people
#循环20次
for i in range(1,21):
luck_one = random_people()
luck_list.append(luck_one)
print(luck_one)
time.sleep(0.2)
#不知道为什么会有bug,有的时候生成出来的和大多数时候生成出的数据不一样
#这边以下列名单为准,有能力的小伙伴运行此代码应该也是同样的结果
'''
@DDW233
@君莫邪啊
@莫问Sakura
@-快乐的肥宅-
@凯欧ミ
@gonghc
@雪音的欧尼桑
@鹅系渣渣辉
@3120537145
@阿德基诺李三
@Cusi丶cusi
@帅气灯泡君か
@Kartuzy
@暮气朝朝
@兔田peko拉
@-薄荷加冰微微凉-
@WJさま
@S天邪
@我是小星星qaq
@音乐大师贝多花
'''