bobocup commited on
Commit
f70609b
·
verified ·
1 Parent(s): 095ceba

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +69 -26
app.py CHANGED
@@ -70,49 +70,92 @@ def get_verification_code(driver, email, max_retries=10, delay=2):
70
 
71
  def generate_random_email():
72
  """生成随机邮箱地址"""
73
- random_prefix = ''.join(random.choices(string.ascii_letters + string.digits, k=8))
74
- email = f"{random_prefix}@youxiang.dev"
75
- logger.info(f"生成随机邮箱: {email}")
76
- return {"email": email}
 
 
 
 
77
 
78
  def get_email_code(email: str):
79
  """获取指定邮箱的验证码"""
 
 
 
80
  logger.info(f"开始获取邮箱验证码: {email}")
 
 
81
  try:
82
  driver = setup_driver()
83
  code = get_verification_code(driver, email)
84
- driver.quit()
85
 
86
  if code:
87
  logger.info(f"成功获取验证码: {code}")
88
- return {"code": code}
89
  else:
90
  logger.error("未能获取验证码")
91
- return {"error": "未能获取验证码"}
92
 
93
  except Exception as e:
94
  logger.error(f"获取验证码过程出错: {str(e)}")
95
- return {"error": str(e)}
96
  finally:
97
- try:
98
- driver.quit()
99
- except:
100
- pass
 
101
 
102
- # Gradio 接口
103
- demo = gr.Interface(
104
- [generate_random_email, get_email_code],
105
- [
106
- None, # generate_random_email 不需要输入
107
- gr.Textbox(label="邮箱地址") # get_email_code 需邮箱输入
108
- ],
109
- [
110
- gr.JSON(label="生成的邮箱"), # 返回 JSON 格式的邮箱
111
- gr.JSON(label="验证码结果") # 返回 JSON 格式的验证码
112
- ],
113
- title="邮箱验证码服务",
114
- description="提供随机邮箱生成和验证码获取服务"
115
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
 
117
  # 启用队列处理请求
118
  demo.queue()
 
70
 
71
  def generate_random_email():
72
  """生成随机邮箱地址"""
73
+ try:
74
+ random_prefix = ''.join(random.choices(string.ascii_letters + string.digits, k=8))
75
+ email = f"{random_prefix}@youxiang.dev"
76
+ logger.info(f"生成随机邮箱: {email}")
77
+ return {"status": "success", "email": email}
78
+ except Exception as e:
79
+ logger.error(f"生成邮箱失败: {str(e)}")
80
+ return {"status": "error", "message": str(e)}
81
 
82
  def get_email_code(email: str):
83
  """获取指定邮箱的验证码"""
84
+ if not email:
85
+ return {"status": "error", "message": "邮箱地址不能为空"}
86
+
87
  logger.info(f"开始获取邮箱验证码: {email}")
88
+ driver = None
89
+
90
  try:
91
  driver = setup_driver()
92
  code = get_verification_code(driver, email)
 
93
 
94
  if code:
95
  logger.info(f"成功获取验证码: {code}")
96
+ return {"status": "success", "code": code}
97
  else:
98
  logger.error("未能获取验证码")
99
+ return {"status": "error", "message": "未能获取验证码"}
100
 
101
  except Exception as e:
102
  logger.error(f"获取验证码过程出错: {str(e)}")
103
+ return {"status": "error", "message": str(e)}
104
  finally:
105
+ if driver:
106
+ try:
107
+ driver.quit()
108
+ except:
109
+ pass
110
 
111
+ # 创建 Gradio 界面
112
+ with gr.Blocks(title="邮箱验证码服务") as demo:
113
+ gr.Markdown("""
114
+ # 邮箱验证码服务
115
+
116
+ 提供两个主功能:
117
+ 1. 生成随机临时邮箱
118
+ 2. 获取邮箱验证码
119
+ """)
120
+
121
+ with gr.Tab("生成随机邮箱"):
122
+ with gr.Row():
123
+ email_btn = gr.Button("生成邮箱", variant="primary")
124
+ email_output = gr.JSON(label="结果")
125
+
126
+ gr.Examples(
127
+ examples=[],
128
+ inputs=[],
129
+ outputs=[email_output],
130
+ fn=generate_random_email,
131
+ cache_examples=True,
132
+ )
133
+
134
+ with gr.Tab("获取验证码"):
135
+ with gr.Row():
136
+ email_input = gr.Textbox(
137
+ label="邮箱地址",
138
+ placeholder="请输入要获取验证码的邮箱地址",
139
+ info="支持 @youxiang.dev 域名的邮箱"
140
+ )
141
+ with gr.Row():
142
+ code_btn = gr.Button("获取验证码", variant="primary")
143
+ code_output = gr.JSON(label="结果")
144
+
145
+ # 绑定事件处理
146
+ email_btn.click(
147
+ fn=generate_random_email,
148
+ inputs=[],
149
+ outputs=email_output,
150
+ api_name="generate_email"
151
+ )
152
+
153
+ code_btn.click(
154
+ fn=get_email_code,
155
+ inputs=email_input,
156
+ outputs=code_output,
157
+ api_name="get_code"
158
+ )
159
 
160
  # 启用队列处理请求
161
  demo.queue()