歡迎光臨
每天分享高質量文章

網上噴子太多,用Python開發彈幕轟炸程式怒懟“網路噴子”

人生苦短,我用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()

贊(0)

分享創造快樂