抽奖小程序,python抽奖小程序代码
本文将使用Python编写一个哔哩哔哩自动彩票的小程序,可以实时监控关注UP的业主。如果关注的UP业主中有人发布抽奖,他们将自动参与抽奖。这样,我们就不会错过任何发财的机会。需要什么可以参考。
00-1010入门开发工具环境构建原则简介
目录
在朋友的邀请下,我给他写了一个小程序。其功能类似于实时监控我关注的UP主。如果关注的UP业主中有人发布抽奖,他们将自动参与抽奖。这样,我们就不会错过任何发财的机会。写完之后觉得这个想法挺有意思的,就上来分享一波。
事不宜迟,我们愉快的开始吧~
导语
Python版本:3.7.8
相关模块:
DecryptLogin模块;
以及python自带的一些模块。
开发工具
安装Python并将其添加到环境变量中。pip可以安装所需的相关模块。
环境搭建
我们使用的主要工具是微信官方账号前几天刚刚发布的DecryptLogin包。
首先,我们需要用它来模拟登录到哔哩哔哩。具体来说,我们需要首先安装pip:
pip安装解密登录
然后用Client类实现模拟登录,可以保存当前登录会话。在会话到期前再次运行程序,不需要重复发送登录请求,可以避免因为频繁登录账号而触发网站的风险控制机制:
从解密登录导入登录
客户端=登录。客户端()
毕丽=客户端. bilibili(reload_history=True)
Infos _ return,session=bili . log in(self . username,查尔斯的皮卡丘在微信微信官方账号: , scanqr )
接下来,让我们抓取包,看看请求哪个API来抓取我们的关注列表,具体如下图所示:
代码简单地实现如下:
获取关注列表
def get followers(self,session,infos_return):
URL= https://API . bilibili.com/x/relation/followers
params={
vmid : infos _ return[ data ][ mid ],
pn: 1 :
ps: 20 ,
订单 : desc :
订单类型 : 注意:
jsonp: jsonp ,
}
response=session.get(url,params=params,headers=self.headers)
total=response . JSON()[ data ][ total ]
followings _ ids,page=[],1
而True:
for item in response . JSON()[ data ][ list ]:
followers _ ids . append(item[ mid ])
if len(following _ ids)=total : break
页面=1
params[pn]=str(page)
response=session.get(url,params=params,headers=self.headers)
返回以下_ ids
同样,我们可以获得我们所关心的上位者的所有当前动态接口,如下:
获取UPmaster的动态
def getupdates(self,infos_return,host_uid,session):
URL=f https://API . VC . bilibili.com/dynamic _ SVR/v1/dynamic _ SVR/space _ history
?visitor_uid={infos_return["data"]["mid"]}&host_uid={host_uid}&offset_dynamic_id=0&need_top=1&platform=web
response = session.get(url, headers=self.headers)
response_json, updates = response.json(), {}
for card in response_json[data][cards]:
dynamic_id = card[desc][dynamic_id]
desp = re.findall(r"description":"(.*?)", card[card])[0]
updates[dynamic_id] = desp
return updates
转发动态的接口如下:
转发动态def forwardupdate(self, session, infos_return, dynamic_id):
url = http://api.vc.bilibili.com/dynamic_repost/v1/dynamic_repost/repost
data = {
uid: infos_return[data][mid],
dynamic_id: dynamic_id,
content : random.choice(self.comments),
ctrl: [{"data":"5581898","location":2,"length":4,"type":1},{"data":"10462362","location":7,"length":5,"type":1},{"data":"1577804","location":13,"length":4,"type":1}],
csrf_token: session.cookies.get(bili_jct)
}
response = session.post(url, data=data, headers=self.headers)
return response.json()
接下来要做的就是如何判断这个动态是不是抽奖动态了,这里我们设置利用关键词作为判断依据:
# 监控新的动态self.logging(开始监控是否有新的抽奖信息发布)
while True:
time.sleep(self.time_interval)
self.logging(开始检测是否有新的抽奖信息发布)
for userid in tqdm(followings_ids):
updates_old = followings_infos.pop(userid)
updates_latest = self.getupdates(infos_return, userid, session)
for dynamic_id in updates_latest.keys():
if dynamic_id not in updates_old:
desp = updates_latest[dynamic_id]
if #互动抽取# in desp:
result = self.forwardupdate(session, infos_return, dynamic_id)
self.logging(检测到有新的抽奖信息发布, 已经尝试转发, 返回的结果为{result})
followings_infos[userid] = updates_latest
即当动态中有#互动抽取#这四个字的时候,我们就认定这是一条抽奖用的动态,并对其进行转发。至此,我们的小程序就完成啦,它可以实时监控我们关注的UP主是否有发布新的抽奖信息,如果有,则第一时间参与这个抽奖。我们需要做的就是多关注一些经常发布抽奖信息的UP主就行了,接下来能不能暴富就看运气了。
最终代码的使用方式如下:
usage: bilibililottery.py [-h] [--username USERNAME][--time_interval TIME_INTERVAL]
B站监控关注的UP主并自动转发抽奖
optional arguments:
-h, --help show this help message and exit
--username USERNAME 用于存储历史cookies的唯一标识ID
--time_interval TIME_INTERVAL
查询UP主的动态的间隔时间
到此这篇关于基于Python编写一个B站全自动抽奖的小程序的文章就介绍到这了,更多相关Python自动抽奖内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。