main
parent
f34d33e020
commit
c2b2102384
34
login.py
34
login.py
|
|
@ -21,7 +21,34 @@ from urllib.parse import unquote
|
|||
import gzip
|
||||
from protobuf.douyin import *
|
||||
import execjs
|
||||
import execjs._external_runtime as _execjs_external_runtime
|
||||
import hashlib
|
||||
|
||||
|
||||
def _patch_execjs_popen_utf8():
|
||||
"""
|
||||
Windows 下 execjs 通过 subprocess.Popen(..., universal_newlines=True) 传 JS 源码时,
|
||||
默认会用系统区域编码(如 gbk)编码字符串;h_sign.js 若含泰文等字符会触发
|
||||
UnicodeEncodeError。对 execjs 已绑定的 Popen 做包装,强制 UTF-8。
|
||||
"""
|
||||
if getattr(_patch_execjs_popen_utf8, "_done", False):
|
||||
return
|
||||
_orig = _execjs_external_runtime.Popen
|
||||
|
||||
def _popen_utf8(*args, **kwargs):
|
||||
if kwargs.get("encoding") is None and (
|
||||
kwargs.get("universal_newlines") or kwargs.get("text")
|
||||
):
|
||||
kwargs = dict(kwargs)
|
||||
kwargs["encoding"] = "utf-8"
|
||||
kwargs.setdefault("errors", "replace")
|
||||
return _orig(*args, **kwargs)
|
||||
|
||||
_execjs_external_runtime.Popen = _popen_utf8
|
||||
_patch_execjs_popen_utf8._done = True
|
||||
|
||||
|
||||
_patch_execjs_popen_utf8()
|
||||
import urllib.parse
|
||||
from threading import Thread
|
||||
import urllib3
|
||||
|
|
@ -696,7 +723,8 @@ def zhengchang_ua(i):
|
|||
# wss链接加密 获取 signature
|
||||
def generateSignature(wss):
|
||||
"""
|
||||
出现gbk编码问题则修改 python模块subprocess.py的源码中Popen类的__init__函数参数encoding值为 "utf-8"
|
||||
若出现 gbk 无法编码 JS 源码:已在文件顶部对 execjs._external_runtime.Popen 做 UTF-8 包装,
|
||||
无需再改标准库 subprocess。
|
||||
"""
|
||||
params = (
|
||||
"live_id,aid,version_code,webcast_sdk_version,"
|
||||
|
|
@ -2265,8 +2293,8 @@ if __name__ == '__main__':
|
|||
|
||||
# window_html = os.path.join(run_path, 'index', 'main.html')
|
||||
# 在 create_window 中设置 api 对象,以便 JS 访问
|
||||
window = webview.create_window('直播管理系统', window_html, js_api=api, min_size=(800, 600))
|
||||
window = webview.create_window('直播管理系统', window_html, js_api=api, min_size=(1200, 800))
|
||||
|
||||
# 启动 webview。启动后,界面将显示。
|
||||
# live-management.html 中的 JS 代码应在 DOM 准备就绪且 pywebview api 可用后调用 get_initial_accounts()
|
||||
webview.start(debug=True)
|
||||
webview.start(debug=False)
|
||||
|
|
|
|||
Loading…
Reference in New Issue