python tkinterを使ってB駅の生放送用の弾幕ツールを開発しました。


プロジェクトのアドレス
https://github.com/jonssonyan...
開発ツールpython 3.7.9
pycharm 209.3.5コード

import threading
import time
import tkinter.simpledialog
from tkinter import END, simpledialog, messagebox

import requests


class Danmu():
 def __init__(self, room_id):
  #   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 = {
   'roomid': room_id,
   '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):
  #   0.5  cpu    
  time.sleep(1)
  #        
  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 + '
' not in self.log: # listb.insert(END, msg) listb.see(END) # self.log_file_write.write(msg + '
') # self.log.append(msg + '
') # nickname = '' text = '' timeline = '' msg = '' def bilibili(delay, room_id): # bDanmu bDanmu = Danmu(room_id) while True: # cpu time.sleep(delay) # bDanmu.get_danmu() def author(): # messagebox.showinfo(title=' ', message=' : Jonson
:2021 2 4
: ') # tkinter GUI window = tkinter.Tk() window.title('BiliBli ') window.minsize(300, 500) window.geometry('400x600+250+100') # menubar = tkinter.Menu(window) # Open , menubar.add_command(label=' ', command=author) # , menubar window.config(menu=menubar) # sc = tkinter.Scrollbar(window) sc.pack(side=tkinter.RIGHT, fill=tkinter.Y) # Listbox listb = tkinter.Listbox(window, yscrollcommand=sc.set) # listb.pack(side=tkinter.LEFT, fill=tkinter.BOTH, expand=True) # , sc.config(command=listb.yview) # ( , , ) room_id = simpledialog.askstring(title=' ', prompt=' :' , initialvalue='21089733') if room_id is not None: # try: t = threading.Thread(target=bilibili, args=(0.5, str(room_id),)) t.setDaemon(True) t.start() except: print("Error: ! ") # window.mainloop()
コンパイル
第三者パッケージを使用する:pyinstaller
コマンド

pyinstaller -F -w bilibli-danmu.py
パラメータ解釈
-F,-one fileは、単一の実行可能ファイルを生成します。
-w,--windowed,--noconsonic指定プログラムの実行時にコマンドラインウィンドウを表示しない(Windowsのみに有効)PyInstallerサポートの共通オプション

追加
命令を実行したらプロジェクトディレクトリの下にdistフォルダが多くなります。コンパイルしたファイルはこのフォルダの下にあります。pyinstallerはプラットフォームを越えてコンパイルできません。windowsプラットフォームの下ではwindowsの下の実行ファイル(.exe)にコンパイルするしかありません。同じmac linuxも同じです。
ここでは、python tkinterを使ってB駅で弾幕を生放送するツールを開発した記事を紹介します。これに関連して、python tkinterがB駅で弾幕を生放送するツールの内容を開発します。以前の文章を検索してください。または、下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。