LAJILAODEEAIQ's picture
Update app.py
44b321e verified
import gradio as gr
# Hardcoded credentials
VALID_CREDENTIALS = {
"admin": "officechat888",
"vip": "vip888",
"user": "user888"
}
# Models loading code remains the same
model1 = gr.load("models/Jonny001/NSFW_master")
model2 = gr.load("models/Jonny001/Alita-v1")
model3 = gr.load("models/Jonny001/WBMH-v1.1")
model5 = gr.load("models/prashanth970/flux-lora-uncensored")
def check_login(username, password):
if username in VALID_CREDENTIALS and VALID_CREDENTIALS[username] == password:
return True
return False
def generate_images(text, selected_model):
if selected_model == "模型1 (NSFW Master)":
model = model1
elif selected_model == "模型2 (Alita)":
model = model2
elif selected_model == "模型3 (WBMH-v1.1)":
model = model3
elif selected_model == "模型5 (Lora Uncensored)":
model = model5
else:
return "无效的模型选择。"
results = []
for i in range(3):
modified_text = f"{text} 变体 {i+1}"
result = model(modified_text)
results.append(result)
return results
custom_css = """
/* Login page styles */
.login-container {
max-width: 400px !important;
margin: 100px auto !important;
padding: 30px !important;
background: #ffffff !important;
border-radius: 15px !important;
box-shadow: 0 4px 20px rgba(0,0,0,0.1) !important;
}
.login-title {
text-align: center !important;
font-size: 24px !important;
color: #333 !important;
margin-bottom: 30px !important;
}
.login-button {
background: #4a90e2 !important;
width: 100% !important;
margin-top: 20px !important;
}
/* Main interface styles */
.gradio-container {
max-width: 1200px !important;
margin: 0 auto !important;
padding: 20px !important;
}
.control-panel {
background: #ffffff !important;
padding: 30px;
border-radius: 15px;
box-shadow: 0 2px 10px rgba(0,0,0,0.05);
margin-bottom: 30px;
border: 1px solid #e1e4e8 !important;
}
.title {
font-size: 18px !important;
margin-bottom: 25px !important;
text-align: center !important;
font-weight: bold !important;
color: #24292e !important;
background: #ffffff !important;
padding: 15px !important;
border-radius: 10px !important;
border: 1px solid #e1e4e8 !important;
}
.input-area {
display: flex;
gap: 20px;
align-items: flex-start;
}
.gradio-button {
background: #4a90e2 !important;
color: white !important;
padding: 12px 30px !important;
border-radius: 8px !important;
border: none !important;
cursor: pointer !important;
transition: all 0.3s !important;
font-size: 16px !important;
}
.results-panel {
display: flex;
flex-direction: column;
gap: 30px;
}
.gradio-image {
background: #ffffff !important;
padding: 15px !important;
border-radius: 15px !important;
box-shadow: 0 3px 15px rgba(0,0,0,0.1) !important;
min-height: 400px !important;
width: 100% !important;
border: 1px solid #e1e4e8 !important;
}
.gradio-image img {
width: 100% !important;
height: auto !important;
min-height: 400px !important;
object-fit: contain !important;
}
/* Dark mode styles */
@media (prefers-color-scheme: dark) {
body {
background: #0d1117 !important;
}
.login-container, .control-panel, .gradio-image {
background: #161b22 !important;
border: 1px solid #30363d !important;
}
.login-title, .title {
color: #c9d1d9 !important;
background: #161b22 !important;
border: 1px solid #30363d !important;
}
label, input, textarea {
color: #c9d1d9 !important;
}
input, textarea {
background: #0d1117 !important;
border: 1px solid #30363d !important;
}
}
"""
with gr.Blocks(css=custom_css) as interface:
# Login state
logged_in = gr.State(False)
# Login page
with gr.Column(visible=True) as login_page:
with gr.Column(elem_classes=["login-container"]):
gr.Markdown("### Office Chat VIP登录", elem_classes=["login-title"])
username = gr.Textbox(label="用户名", placeholder="请输入用户名...")
password = gr.Textbox(label="密码", placeholder="请输入密码...", type="password")
login_button = gr.Button("登录", elem_classes=["login-button"])
login_status = gr.Markdown("")
# Main interface
with gr.Column(visible=False) as main_interface:
with gr.Column(elem_classes=["control-panel"]):
gr.Markdown(
"### 本程序专为Office chat 超级VIP使用用户免费使用。因为免费,可能会比较慢,感谢您的理解。感谢您选择Office chat。",
elem_classes=["title"]
)
with gr.Row(elem_classes=["input-area"]):
text_input = gr.Textbox(
label="在这里输入你的想象(英文):",
placeholder="输入你的提示...",
scale=1
)
model_selection = gr.Radio(
["模型1 (NSFW Master)", "模型2 (Alita)", "模型3 (WBMH-v1.1)",
"模型5 (Lora Uncensored)"],
label="选择模型(尝试所有模型并获得不同结果)",
value="模型1 (NSFW Master)",
scale=2
)
generate_button = gr.Button("生成图片")
with gr.Column(elem_classes=["results-panel"]):
image1 = gr.Image(label="生成的图片1")
image2 = gr.Image(label="生成的图片2")
image3 = gr.Image(label="生成的图片3")
def login(username, password):
if check_login(username, password):
return {
login_page: gr.update(visible=False),
main_interface: gr.update(visible=True),
login_status: ""
}
else:
return {
login_page: gr.update(visible=True),
main_interface: gr.update(visible=False),
login_status: "用户名或密码错误!"
}
login_button.click(
login,
inputs=[username, password],
outputs=[login_page, main_interface, login_status]
)
generate_button.click(
fn=generate_images,
inputs=[text_input, model_selection],
outputs=[image1, image2, image3]
)
interface.launch()