ソースコード:
import requests
import time
import re
import pyautogui as gui
class Danmu():
def __init__(self):
# 弾幕URL
self.url = 'https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory'
# リクエストヘッダー
self.headers = {
'Host':'api.live.bilibili.com',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0',
}
# POSTパラメータ
self.data = {
# ライブルームID
'roomid':'1111111',
'csrf_token':'',
'csrf':'',
'visit_id':'',
}
# ログ書き込みオブジェクト
self.log_file_write = open('danmu.log',mode='a',encoding='UTF-8')
# ログ読み取り
log_file_read = open('danmu.log',mode='r',encoding='UTF-8')
self.log = log_file_read.readlines()
def get_danmu(self):
# ライブルームの弾幕を取得
html = requests.post(url=self.url,headers=self.headers,data=self.data).json()
# 弾幕リストを解析
for content in html['data']['room']:
# ニックネームを取得
nickname = content['nickname']
# メッセージを取得
text = content['text']
# タイムスタンプを取得
timeline = content['timeline']
# 時間 ニックネーム: メッセージ を結合
msg = timeline+' '+nickname+': '+text
# メッセージがログに存在するか確認し、新しい場合は表示して保存
if msg+'\n' not in self.log:
# メッセージを表示(弾幕情報)
print(msg)
# ログに保存
self.log_file_write.write(msg+'\n')
# ログリストに追加
self.log.append(msg+'\n')
# 変数キャッシュをクリア
nickname = ''
text = ''
timeline = ''
msg = ''
# bDanmuインスタンスを作成
bDanmu = Danmu()
while True:
# CPU使用率が高くなるのを防ぐため0.5秒停止
time.sleep(0.5)
# 弾幕を取得
bDanmu.get_danmu()