人生苦短,我用Python,所以讓我們一起來學習Python吧!
網際網路時代,說話沒有了限制,於是網路上的“噴子”也是越來越多!
動之以情曉之以理都解決不了這麼“噴子”,那麼咱們就以其人之道還治其人之身!
環境:
Python3.6+ Windows
模組:
# 匯入一個第三請求庫
import requests
# 匯入一個時間模組
import time
第一步:獲取實時彈幕
1.1 定一個需要送的表單
def post_info_data():
# 1.2 打包一些基本資訊
from_data = {
'csrf_token': '',
'roomid': 10185039,
'visit_id': '92cvaa6up88w'}
return from_data
1.2 傳送我們已經打包好的資料
def post_data_url(data):
# 要資料到這個URL
url = 'https://api.live.bilibili.com/ajax/msg'
# 傳送資料得到響應
response = requests.post(url, data=data)
# 一層一層的透過鍵值對的鍵找到我們的
data = response.json()['data']['room']
# 定義一個串列儲存最近的10條彈幕資料
itemcont = []
# 遍歷我們從字典中所有的鍵
for items in data:
itemcont.append(items['text'])
# print(response)
return itemcont[-1]
用一個變數接收打包好的資料
post_data = post_info_data()
# 用一個迴圈來無限獲取
while True:
# 睡眠1秒,再接著執行
time.sleep(1)
# 得到最新的一條彈幕資訊
cont = post_data_url(post_data)
print(cont)
# print(post_data)
第二步: 傳送實時彈幕
2.1要找到我們傳送彈幕的URL
# 所需要傳送的資料
def post_data_cont():
post_data = {
'color': '16777215',
'csrf_token': '',
'fontsize': 25,
'mode': 1,
'msg': '嗨',
'rnd': '1527404803',
'roomid': '10185039'}
return post_data
向伺服器傳送資訊
def post_url_data(data):
# 向這個地址,提交表單,表單中包含了我們需要傳送的彈幕資訊
url = 'https://api.live.bilibili.com/msg/send'
# cookie 用於伺服器記錄我們的登入資訊
cookie = {'Cookie': 'buvid3=9D5AF13F-81C3-44D2-ADBF-7E9EE187FC0A13512infoc; LIVE_BUVID=AUTO5515224216712884; rpdid=kxxkikiqkwdosiipioxpw; finger=c650951b; Hm_lvt_8a6e55dbd2870f0f5bc9194cddf32a02=1527401127,1527404662; sid=4r7a6x2c; fts=1527401995; DedeUserID=321074467; DedeUserID__ckMd5=17d6f40c8a8668f0; SESSDATA=c30fb9e3%2C1529994023%2Ca56e1407; bili_jct=57cef56872eb3d2938ee9b66edd0bacd; _dfcaptcha=f6bf50348608fde1876dc53faba7f655; Hm_lpvt_8a6e55dbd2870f0f5bc9194cddf32a02=1527404804'}
# 向伺服器提交我們的個人資訊,以及需要傳送的表單內容和傳送到什麼地址
response = requests.post(url, cookies=cookie, data=data)
# print(response)
# 檢測我們傳送的狀態,是不是正常傳送
if response.status_code == 200:
print(response.json())
pass
form_data = post_data_cont()
post_url_data(form_data)
print(form_data)
第三步: 組合第一步和第二步
3.1步
def post_info_data(roomid):
# 3.2 打包一些基本資訊
from_data = {
'csrf_token': '57cef56872eb3d2938ee9b66edd0bacd',
'roomid': roomid,
'visit_id': '92cvaa6up88w'}
return from_data
3.2 傳送我們已經打包好的資料
def post_data_url(data):
# 要資料到這個URL
url = 'https://api.live.bilibili.com/ajax/msg'
# 傳送資料得到響應
response = request.post(url, data=data)
# 一層一層的透過鍵值對的鍵找到我們的
data = response.json()['data']['room']
# 定義一個串列儲存最近的10條彈幕資料
itemcont = []
# 遍歷我們從字典中所有的鍵
for items in data:
# 把得到的彈幕資訊新增到串列中
itemcont.append(items['text'])
# print(response)
return itemcont[-1]
3.3步
def post_data_cont(post_msg,roomid):
post_data = {
'color': '16777215',
'csrf_token': '57cef56872eb3d2938ee9b66edd0bacd',
'fontsize': 25,
'mode': 1,
'msg': post_msg,
'rnd': '1527404803',
'roomid': roomid}
return post_data
3.4 向伺服器傳送資訊
def post_url_data(data):
# 向這個地址,提交表單,表單中包含了我們需要傳送的彈幕資訊
url = 'https://api.live.bilibili.com/msg/send'
# cookie 用於伺服器記錄我們的登入資訊
cookie = {'Cookie': ''}
# 向伺服器提交我們的個人資訊,以及需要傳送的表單內容和傳送到什麼地址
request.post(url, cookies=cookie, data=data)
# print(response)
# 檢測我們傳送的狀態,是不是正常傳送
# 主函式,(程式入口)
def main():
roomid = input('請輸入你想要整蠱的房間ID:')
while True:
time.sleep(2)
form_msg_data = post_info_data(roomid)
post_msg = post_data_url(form_msg_data)
print('實時彈幕是 - > %s' % post_msg)
post_msg_cont = post_data_cont(post_msg,roomid)
print('正在傳送的彈幕 - > %s ' % post_msg)
post_url_data(post_msg_cont)
if __name__ == '__main__':
main()