下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:1891
这个完整的B站自动化交互系统包含四个模块:主功能模块、配置文件、主程序入口和实用工具。系统实现了自动评论、UP主自动回复和私信功能,并考虑了防封禁策略。使用时需要替换config.py中的Cookie和CSRF Token等配置信息。
import requests
import json
import time
import random
from typing import Dict, List, Optional
class BilibiliAuto:
def __init__(self, cookies: str, csrf_token: str):
self.session = requests.Session()
self.headers = {
'User-Agent': 'Mozilla/5.0',
'Cookie': cookies,
'Referer': 'https://www.bilibili.com/'
}
self.csrf_token = csrf_token
self.base_url = 'https://api.bilibili.com'
def get_video_info(self, bvid: str) -> Dict:
url = f"{self.base_url}/x/web-interface/view?bvid={bvid}"
response = self.session.get(url, headers=self.headers)
return response.json()
def post_comment(self, bvid: str, message: str) -> Dict:
url = f"{self.base_url}/x/v2/reply/add"
data = {
'oid': self.get_video_info(bvid)['data']['aid'],
'type': 1,
'message': message,
'plat': 1,
'csrf': self.csrf_token
}
response = self.session.post(url, headers=self.headers, data=data)
return response.json()
def get_replies(self, bvid: str) -> List[Dict]:
url = f"{self.base_url}/x/v2/reply/main?oid={self.get_video_info(bvid)['data']['aid']}&type=1"
response = self.session.get(url, headers=self.headers)
return response.json()['data']['replies']
def reply_to_comment(self, bvid: str, root_id: int, parent_id: int, message: str) -> Dict:
url = f"{self.base_url}/x/v2/reply/add"
data = {
'oid': self.get_video_info(bvid)['data']['aid'],
'type': 1,
'root': root_id,
'parent': parent_id,
'message': message,
'plat': 1,
'csrf': self.csrf_token
}
response = self.session.post(url, headers=self.headers, data=data)
return response.json()
def send_private_message(self, target_id: int, message: str) -> Dict:
url = f"{self.base_url}/x/msg/web/send"
data = {
'msg[sender_uid]': self.get_self_info()['data']['mid'],
'msg[receiver_id]': target_id,
'msg[msg_type]': 1,
'msg[content]': json.dumps({'content': message}),
'csrf': self.csrf_token
}
response = self.session.post(url, headers=self.headers, data=data)
return response.json()
def get_self_info(self) -> Dict:
url = f"{self.base_url}/x/space/myinfo"
response = self.session.get(url, headers=self.headers)
return response.json()
def auto_reply_to_comments(self, bvid: str, reply_rules: Dict[str, str]) -> None:
while True:
try:
replies = self.get_replies(bvid)
for reply in replies:
if reply['member']['mid'] != self.get_self_info()['data']['mid']:
for keyword, response in reply_rules.items():
if keyword in reply['content']['message']:
self.reply_to_comment(
bvid,
reply['rpid'],
reply['rpid'],
response
)
break
time.sleep(60)
except Exception as e:
print(f"Error: {e}")
time.sleep(300)
# B站登录信息配置
COOKIES = "您的B站Cookie"
CSRF_TOKEN = "您的CSRF Token"
# 自动回复规则
REPLY_RULES = {
"你好": "你好呀!感谢支持~",
"谢谢": "不客气,欢迎常来看看!",
"加油": "谢谢鼓励,我会继续努力的!",
"up主": "我是自动回复机器人,主人马上就会看到你的消息~"
}
# 自动评论内容池
COMMENT_POOL = [
"视频很棒,支持一下!",
"内容很有价值,感谢分享!",
"学到了新知识,谢谢UP主!",
"这个视频太有趣了,哈哈哈",
"期待下一期视频!"
]
# 私信发送配置
PRIVATE_MESSAGE_TARGETS = [
12345678, # 用户ID1
87654321 # 用户ID2
]
PRIVATE_MESSAGE_CONTENT = "您好,我是B站UP主,感谢您的关注和支持!"
bilibili_auto import BilibiliAuto
from config import COOKIES, CSRF_TOKEN, REPLY_RULES, COMMENT_POOL, PRIVATE_MESSAGE_TARGETS, PRIVATE_MESSAGE_CONTENT
import time
import random
def main():
# 初始化B站自动化实例
bilibili = BilibiliAuto(COOKIES, CSRF_TOKEN)
# 目标视频BV号
target_bvid = "BV1GJ411x7h7"
# 自动评论功能
print("开始执行自动评论...")
comment = random.choice(COMMENT_POOL)
result = bilibili.post_comment(target_bvid, comment)
print(f"评论结果: {result}")
# 自动私信功能
print("\n开始执行自动私信...")
for target_id in PRIVATE_MESSAGE_TARGETS:
result = bilibili.send_private_message(target_id, PRIVATE_MESSAGE_CONTENT)
print(f"给用户{target_id}发送私信结果: {result}")
time.sleep(10) # 避免发送过快
# 自动回复功能
print("\n开始执行自动回复监控...")
bilibili.auto_reply_to_comments(target_bvid, REPLY_RULES)
if __name__ == "__main__":
main()
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。