|
|
|
|
|
import config |
|
import gradio as gr |
|
from channel import channel_factory |
|
from common.log import logger |
|
from io import BytesIO |
|
from PIL import Image |
|
from concurrent.futures import ThreadPoolExecutor |
|
thread_pool = ThreadPoolExecutor(max_workers=8) |
|
|
|
def getImage(bytes): |
|
bytes_stream = BytesIO(bytes) |
|
image = Image.open(bytes_stream) |
|
return image |
|
|
|
def getLoginUrl(): |
|
|
|
config.load_config() |
|
|
|
|
|
bot = channel_factory.create_channel("wx") |
|
thread_pool.submit(bot.startup) |
|
|
|
while (True): |
|
if bot.getQrCode(): |
|
return getImage(bot.getQrCode()) |
|
|
|
if __name__ == '__main__': |
|
try: |
|
|
|
with gr.Blocks() as demo: |
|
with gr.Row(): |
|
with gr.Column(): |
|
btn = gr.Button(value="生成二维码") |
|
with gr.Column(): |
|
outputs=[gr.Pil()] |
|
btn.click(getLoginUrl, outputs=outputs) |
|
|
|
demo.launch() |
|
|
|
|
|
except Exception as e: |
|
logger.error("App startup failed!") |
|
logger.exception(e) |
|
|