import os import time import shutil import requests import gradio as gr EN_US = os.getenv("LANG") != "zh_CN.UTF-8" API_QR = os.getenv("api_qr") if not API_QR: print("请检查环境变量") exit() TMP_DIR = "./__pycache__" ZH2EN = { "二维码输出尺寸": "Image size", "输入文本": "Input text", "输出二维码": "QR code", "输入文字在线生成二维码": "Enter text to generate a QR code.", "状态栏": "Status", "二维码生成器": "QR Code Generator", } def _L(zh_txt: str): return ZH2EN[zh_txt] if EN_US else zh_txt def clean_dir(dir_path: str): if os.path.exists(dir_path): shutil.rmtree(dir_path) os.makedirs(dir_path) def download_file(url, local_filename): clean_dir(os.path.dirname(local_filename)) response = requests.get(url, stream=True) response.raise_for_status() with open(local_filename, "wb") as f: for chunk in response.iter_content(chunk_size=8192): f.write(chunk) return local_filename def infer(img_size: int, input_txt: str): status = "Success" img = None try: if (not input_txt) or input_txt == "0": raise ValueError("Please input valid text!") img = download_file( f"{API_QR}/?size={img_size}x{img_size}&data={input_txt}" if EN_US else f"{API_QR}/?text={input_txt}&size={img_size}", f"{TMP_DIR}/qrcode.jpg", ) time.sleep(0.1) except Exception as e: status = f"{e}" return status, img if __name__ == "__main__": gr.Interface( fn=infer, inputs=[ gr.Slider(35, 1000, 217, label=_L("二维码输出尺寸")), gr.Textbox(label=_L("输入文本"), placeholder=_L("输入文字在线生成二维码")), ], outputs=[ gr.Textbox(label=_L("状态栏"), show_copy_button=True), gr.Image(label=_L("输出二维码"), show_share_button=False), ], flagging_mode="never", title=_L("二维码生成器") ).launch()