在 B 站上看了进击的金厂长的投稿的视频如:B 界等级修仙传,B 界等级修魔传等,觉得 B 站升级对小编这种白嫖党 + 懒癌党太不友好了,就码了这篇 B 站升级脚本 。
获取个人信息用自己的账号登录到 B 站并打开个人页面,按 F12 控制面板 。 可以找到一个 https://api.bilibili.com/x/space/myinfo?jsonp=jsonp&callback=__jp0 的地址,从相应的返回值来看,这就是个人资料的请求地址 。 并且把请求头中的 cookie 复制到代码中,让我们可以正常用代码登录 B 站 。
![b站升级的等级 b站怎么升级](http://img.zhejianglong.com/220414/1KH63424-0.jpg)
文章插图
这里的 cookie 是一串字符串,在 requests.get() 请求的时候肯定是要转换为字典类型的 。 其中一个 bili_jct 比较关键,在后续操作中将被用到 。
def convert_cookies_to_dict(cookies): cookies = dict([l.split("=", 1) for l in cookies.split("; ")]) return cookies
下面代码就用上面转换成字典的 cookie 获取 B 站的个人资料 。 def getInfo(cookie): url = "http://api.bilibili.com/x/space/myinfo" resp = requests.get(url, cookies=cookie).text myinfo = json.loads(resp) data = https://www.wenanka.com/post/myinfo['data'] mid = data['mid'] name = data['name'] level_exp = data['level_exp'] current_level = level_exp['current_exp'] current_exp = level_exp['current_exp'] next_exp = level_exp['next_exp'] sub_exp = int(next_exp) - int(current_exp) days = int(int(sub_exp)/70) coin = data['coins'] print("{},你的等级是{},当前经验是{},下一级经验是{},还需要{}天升级,有{}个硬币".format(name, current_level,current_exp,next_exp,days,coin))
观看视频因为小编实在是不想解析页面,就在网上找了一个 B 站的 http://api.bilibili.cn/recommend 接口来获取视频地址 。 返回值是一个 json 串,这里面有 aid 和 bvid 。 def getVideo(cookie): url = "http://api.bilibili.cn/recommend" resp = requests.get(url, cookies=cookie).text data = https://www.wenanka.com/post/json.loads(resp) list_length = len(data['list']) result = [] for i in range(list_length): bvid = data['list'][i]['bvid'] aid = data['list'][i]['aid'] result.append({'bvid': bvid, 'aid': aid}) return result
获取到 aid 和 bvid 后,打开播放视频页面会有发送心跳链接到服务器,这个应该可以看做是看过视频的 。 ![b站升级的等级 b站怎么升级](http://img.zhejianglong.com/220414/1KHC609-1.jpg)
文章插图
【b站升级的等级 b站怎么升级】
def view(bvid, aid, bili_jct, playedTime): url = "https://api.bilibili.com/x/click-interface/web/heartbeat" header = { "origin": "https://www.bilibili.com", "referer": "https://www.bilibili.com/video/"+bvid, "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36", "cookie": cookies } data = https://www.wenanka.com/post/{'aid': aid, 'bvid': bvid, 'played_time': playedTime, 'csrf': bili_jct } resp = requests.post(url, data = https://www.wenanka.com/post/data ,headers=header).text json_data = json.loads(resp) code = json_data['code'] time.sleep() if code == 0: print('视频观看成功,bvid 号为:' + bvid) else: print('视频观看失败,bvid 号为:' + bvid)
投币投币比较简单,只有 4 个参数,但是每天就只能投 5 个币,得 50 经验 。 ![b站升级的等级 b站怎么升级](http://img.zhejianglong.com/220414/1KH61503-2.jpg)
文章插图
def coin(bvid, aid, csrf): url = "https://api.bilibili.com/x/web-interface/coin/add" data = https://www.wenanka.com/post/{'aid': aid, 'multiply': 1, 'select_like': 1, 'cross_domain': 'true', 'csrf': csrf } header = { "origin": "https://www.bilibili.com", "referer": "https://www.bilibili.com/video/"+bvid, "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36", "cookie": cookies } resp = requests.post(url, headers=header, data=https://www.wenanka.com/post/data).text data = json.loads(resp) code = data['code'] if code == 0: print("投币成功") else: print('投币失败')
分享视频在分享到动态的时候,可以看到有一个 share 的地址,然后小编就用这个试了好几次都没有成功,只能求助万能的 github 。 ![b站升级的等级 b站怎么升级](http://img.zhejianglong.com/220414/1KH635W-3.jpg)
文章插图
上面这个地址没成功,都是分享失败,下面的截图是 github 的,分享成功 。
![b站升级的等级 b站怎么升级](http://img.zhejianglong.com/220414/1KHA034-4.jpg)
文章插图
def share( bvid, csrf): url = 'https://api.bilibili.com/x/web-interface/share/add' data = https://www.wenanka.com/post/{'csrf': csrf, 'bvid': bvid } header = { 'content-type': 'application/x-www-form-urlencoded;charset=UTF-8', "Connection": "keep-alive", "origin": "https://t.bilibili.com", "referer": 'https://t.bilibili.com', "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36", "cookie": cookies } resp = requests.post(url, data=https://www.wenanka.com/post/data, headers=header).text json_data = json.loads(resp) code = json_data['code'] if code == 0: print('视频分享成功') else: print('视频分享失败')
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- oppo恢复出厂设置的方法步骤 oppo怎么恢复出厂设置
- 未来,长沙的城市中心在哪里? 长沙中心区是哪个区
- 验钞机“验”不出新版人民币? 验钞机怎么升级
- 冬季来成都要这样耍! 冬天去成都有啥好玩的
- 去往八达岭长城的三种便捷交通! 怎么去长城
- 2019年最挣钱的行业排名出炉 2019年最赚钱的行业有哪些?
- 拼多多买的货收不到找谁,拼多多网店的物流异常的处理方法
- 唯品会和京东哪个更真,唯品会和京东的详细区别
- 拼多多买货收不到找谁怎么办,拼多多货没到已签收的处理方法
- 淘宝怎么删除购买记录,淘宝怎么删除历史订单的流程