说明 用的哔哩接口写的,测试可用,填上cookie即可。可挂云函数自动升级。有能力的可自行研究扩充或修改。 代码[Python] 纯文本查看 复制代码 # -*- coding: utf8 -*-
import requests
import json
import logging
import time
import importlib
import sys
importlib.reload(sys)
# 填写cookie即可运行
cookies = ""
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s %(filename)s : %(levelname)s %(message)s',
datefmt='%Y-%m-%d %A %H:%M:%S',
filename="log.txt",
filemode='w')
console = logging.StreamHandler() # 定义console handler
console.setLevel(logging.INFO)
formatter = logging.Formatter(
'%(asctime)s %(filename)s : %(levelname)s %(message)s')
console.setFormatter(formatter)
# Create an instance
logging.getLogger().addHandler(console)
def extract_cookies(cookies):
global csrf
"""从浏览器或者request headers中拿到cookie字符串,提取为字典格式的cookies"""
cookies = dict([l.split("=", 1) for l in cookies.split("; ")])
csrf = cookies['bili_jct']
return cookies
# 银币数
def getCoin():
cookie = extract_cookies(cookies)
url = "http://account.bilibili.com/site/getCoin"
r = requests.get(url, cookies=cookie).text
j = json.loads(r)
money = j['data']['money']
return money
# 个人信息
def getInfo():
global uid
url = "http://api.bilibili.com/x/space/myinfo"
cookie = extract_cookies(cookies)
r = requests.get(url, cookies=cookie).text
j = json.loads(r)
uid = j['data']['mid']
name = j['data']['name']
level = j['data']['level']
current_exp = j['data']['level_exp']['current_exp']
next_exp = j['data']['level_exp']['next_exp']
sub_exp = int(next_exp)-int(current_exp)
days = int(int(sub_exp)/65)
coin = getCoin()
msg = "欢迎使用!!!用户: "+name + ",当前等级为 "+str(level) + " 级,当前经验为 " + \
str(current_exp)+",距离升级还差"+str(sub_exp) + \
" ,还需 "+str(days)+" 天升级!"+"银币数剩余 "+str(coin)
logging.info(msg)
# 最新动态
def getActiveInfo():
url = "https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=" + \
str(uid)+"&type_list=268435455&from=weball&platform=web"
cookie = extract_cookies(cookies)
r = requests.get(url, cookies=cookie).text
j = json.loads(r)
return j
# 点赞 投币 5次
def Task():
j = getActiveInfo()
cards = j['data']['cards']
count = 0
for i in range(0, len(cards)):
desc = cards[i]['desc']
like = cards[count]['desc']['like']
if "bvid" in desc:
# 视频类型
bvid = desc['bvid']
aid = desc['rid_str']
if like == 1:
continue
like_code = tolike(aid)
coin_code = tocoin(bvid)
toshare(aid)
#coin_code = 0
time.sleep(3)
if like_code == 1 or coin_code == 1:
count = count+1
if count == 5:
break
logging.info('----------------------')
# 点赞函数
def tolike(aid):
url = "https://api.bilibili.com/x/web-interface/archive/like"
data = {
'aid': aid,
'like': 1,
'csrf': csrf,
}
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'
}
cookie = extract_cookies(cookies)
r = requests.post(url, data=data, headers=headers, cookies=cookie).text
j = json.loads(r)
code = j['code']
if code == 0:
logging.info(aid+' tolike succcessful !')
return 1
else:
logging.info(aid+' tolike failed !')
return 0
# 投币函数
def tocoin(bvid):
coinNum = getCoin()
if coinNum == 0:
logging.info('not enough coin !')
return -1
url = "http://api.bilibili.com/x/web-interface/coin/add"
data = {
'bvid': bvid,
'multiply': 1,
'select_like': 1,
'csrf': csrf
}
cookie = extract_cookies(cookies)
r = requests.post(url, data=data, cookies=cookie).text
j = json.loads(r)
code = j['code']
if code == 0:
logging.info(bvid+' toaddcoin successful !')
return 1
else:
logging.info(bvid+' toaddcoin failed!')
return 0
# 分享视频
def toshare(rid):
url = "https://api.vc.bilibili.com/dynamic_repost/v1/dynamic_repost/share"
data = {
'uid': 0,
'type': 8,
'share_uid': 0,
'content': 'testing!',
'rid': rid,
'csrf': csrf
}
cookie = extract_cookies(cookies)
r = requests.post(url, data=data, cookies=cookie).text
j = json.loads(r)
code = j['code']
dynamic_id = j['data']['dynamic_id']
if code == 0:
logging.info('share successful!')
else:
logging.info('share failed!')
time.sleep(2)
todelshare(dynamic_id)
# 删除动态
def todelshare(dynamic_id):
url = "https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/rm_dynamic"
data = {
'dynamic_id': dynamic_id,
'csrf': csrf
}
cookie = extract_cookies(cookies)
r = requests.post(url, data=data, cookies=cookie).text
j = json.loads(r)
code = j['code']
if code == 0:
logging.info('share delete successful!')
else:
logging.info('share delete failed!')
def run():
getInfo()
Task()
if __name__ == '__main__':
run()
申明
综上所述,仅供参考学习交流,严禁做违法之事,所产生的不良后果与本人无关。侵权麻烦管理删帖,谢谢。
|