aiqtech's picture
Update app.py
cc35a93 verified
raw
history blame contribute delete
No virus
12.3 kB
import streamlit as st
# CSS styles
css = """
body {
background-color: #000000;
color: #FFFFFF;
}
.main {
background-color: #000000;
}
.main .block-container {
padding: 0rem;
background-color: #000000;
}
.sidebar .sidebar-content {
background-color: #050505 !important;
padding: 0.5rem 0 0 0;
}
header, #MainMenu, footer {visibility: hidden;}
.category-button {
background-color: #0A0A0A;
color: #FFFFFF;
border: none;
text-align: left;
font-size: 0.77rem;
font-weight: bold;
padding: 10px 10px 10px 15px;
width: 100%;
margin: 0;
transition: background-color 0.3s;
}
.category-button:hover {
background-color: #0F0F0F;
}
.category-button:focus {
outline: none;
}
.selected-category {
background-color: #151515 !important;
color: #FFFFFF !important;
}
.submenu-button {
background-color: #0C0C0C;
color: #FFFFFF;
border: none;
text-align: left;
font-size: 0.7rem;
padding: 6px 6px 6px 25px;
width: 100%;
margin: 0;
transition: background-color 0.3s;
}
.submenu-button:hover {
background-color: #111111;
}
.submenu-button:focus {
outline: none;
}
.selected-submenu {
background-color: #181818 !important;
color: #FFFFFF !important;
font-weight: bold;
}
.sidebar .sidebar-content {
width: 100%;
margin-left: 0;
}
"""
# Set page config
st.set_page_config(
layout="wide",
page_title="Web UI",
page_icon=":ghost:",
initial_sidebar_state="expanded"
)
# Apply CSS
st.markdown(f"<style>{css}</style>", unsafe_allow_html=True)
# Menu structure (can be easily extended for multi-language support)
menu_structure = {
"๋ฒ ์ŠคํŠธ TOP 10": ["FLUX LoRA ์ŠคํŠœ๋””์˜ค", "[์„œ์น˜+VisionLLM] ํ•œ๊ตญ์–ด JinJavis","FLUX ํ™•์žฅ ์ด๋ฏธ์ง€ ์ƒ์„ฑ","์ด๋ฏธ์ง€์™€ ํ•œ๊ธ€ ํ”„๋กฌํ”„ํŠธ๋กœ ์ด๋ฏธ์ง€ ๋ณ€ํ˜•","LOGO ๋””์ž์ธ ์ƒ์„ฑ","FLUX GIF ์ƒ์„ฑ","์ด๋ฏธ์ง€์™€ ํ”„๋กฌํ”„ํŠธ๋กœ ์˜์ƒ ์ƒ์„ฑ","ํ…์ŠคํŠธ๋กœ ๊ฐ์ฒด๋งŒ ์ž˜๋ผ๋‚ด๊ณ  ๋ฐฐ๊ฒฝ ํˆฌ๋ช…ํ™”","์ƒํ’ˆ ์‚ฌ์ง„ ์—…๋กœ๋“œ+ํ”„๋กฌํ”„ํŠธ๋กœ ๋ฐฐ๊ฒฝ์„ ํ•ฉ์„ฑ","EveryText: ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ์ด๋ฏธ์ง€ ์ƒ์„ฑ์— ๋ฐ˜์˜"],
"FLUXLoRA์ŠคํŠœ๋””์˜ค ์ŠคํŽ˜์…œ": ["FLUXLoRA์ŠคํŠœ๋””์˜ค ์„œ๋ฒ„#1", "FLUXLoRA์ŠคํŠœ๋””์˜ค ์„œ๋ฒ„#2", "FLUXLoRA์ŠคํŠœ๋””์˜ค ์„œ๋ฒ„#3", "FLUXLoRA์ŠคํŠœ๋””์˜ค ์„œ๋ฒ„#4"],
"FLUX ์ŠคํŽ˜์…œ": ["FLUX LoRA ์ŠคํŠœ๋””์˜ค", "FLUX ํ™•์žฅ ์ด๋ฏธ์ง€ ์ƒ์„ฑ", "FLUX GIF ์ƒ์„ฑ", "LOGO ๋””์ž์ธ ์ƒ์„ฑ","FLUX ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ", "FLUX LoRA: ๊ธฐ๋ธ”๋ฆฌ ์Šคํƒ€์ผ","FLUX LoRA: ์นดํˆฐ ์Šคํƒ€์ผ", "FLUX 8step LoRA ์ด๋ฏธ์ง€ ์ƒ์„ฑ","FLUX ํ…์ŠคํŠธ TO ๋น„๋””์˜ค ์ƒ์„ฑ","FLUX ํŒจ์…˜๋ชจ๋ธ ์ƒ์„ฑ", "FLUX Controlnet", "FLUX NF4 ์ด๋ฏธ์ง€ ์ƒ์„ฑ"],
"์ด๋ฏธ์ง€/์˜์ƒ ์ƒ์„ฑ": ["์ด๋ฏธ์ง€์™€ ํ•œ๊ธ€ ํ”„๋กฌํ”„ํŠธ๋กœ ์˜์ƒ ์ƒ์„ฑ I","์ด๋ฏธ์ง€์™€ ํ•œ๊ธ€ ํ”„๋กฌํ”„ํŠธ๋กœ ์˜์ƒ ์ƒ์„ฑ II","์ด๋ฏธ์ง€์™€ ํ•œ๊ธ€ ํ”„๋กฌํ”„ํŠธ๋กœ ์ด๋ฏธ์ง€ ๋ณ€ํ˜•","์ƒํ’ˆ ์‚ฌ์ง„ ์—…๋กœ๋“œ+ํ”„๋กฌํ”„ํŠธ๋กœ ๋ฐฐ๊ฒฝ์„ ํ•ฉ์„ฑ","ํ…์ŠคํŠธ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ: Accracy ๋ชจ๋ธ","ํ…์ŠคํŠธ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ: Playground ๋ชจ๋ธ","ํ…์ŠคํŠธ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ: AuraFlow ๋ชจ๋ธ", "EveryText: ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ์ด๋ฏธ์ง€ ์ƒ์„ฑ์— ๋ฐ˜์˜", "๋‚ด ์–ผ๊ตด ์‚ฌ์ง„์œผ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ I","๋‚ด ์–ผ๊ตด ์‚ฌ์ง„์œผ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ II","๊ณ ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€ ์ƒ์„ฑ REALVISXL V5"],
"๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ": ["ํ…์ŠคํŠธ๋กœ ๊ฐ์ฒด๋งŒ ์ž˜๋ผ๋‚ด๊ณ  ๋ฐฐ๊ฒฝ ํˆฌ๋ช…ํ™”","๋น„๋””์˜ค ์ธ์‹ QnA ์ฑ—๋ด‡","์ด๋ฏธ์ง€ ์Šค์ผ€์ผ์—…(ํ™”์งˆ๊ฐœ์„ )","์ด๋ฏธ์ง€ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ","๋น„๋””์˜ค ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ","ํ…์ŠคํŠธ ์ž…๋ ฅ์œผ๋กœ ์Œ์•… ์ƒ์„ฑ" ],
"LLM(๋น„๊ต ์ฒดํ—˜)": ["[์„œ์น˜+VisionLLM] ํ•œ๊ตญ์–ด JinJavis","MS PHI 3.5 Vision","NSFW kAI","๋ฉ”ํƒ€ LLAMA 3.1 405B","๋ฉ”ํƒ€ LLAMA 3.1 70B","๋ฉ”ํƒ€ LLAMA 3.1 8B","๋ฏธ์ŠคํŠธ๋ž„ 7B Instruct v0.3","MS Phi 3 mini 4k-instruct","์ค‘๊ตญ Yi 1.5 34B", "๋ฏธ์ŠคํŠธ๋ž„ Mixtral 8X7B ","๋ฏธ์ŠคํŠธ๋ž„ Nemo Instruct 2407" ],
"์ „๋ฌธ๊ฐ€ ๋ชจ๋ธ": ["์ „๋ฌธ ๋ธ”๋กœ๊ทธ ์ƒ์„ฑ","์˜ํ•™ ์ „๋ฌธ ๋ธ”๋กœ๊ทธ ์ƒ์„ฑ","์•ฝ๋ฆฌํ•™ ์ „๋ฌธ ๋ธ”๋กœ๊ทธ ์ƒ์„ฑ"],
"๋งˆ์ผ€ํŒ… ์ŠคํŽ˜์…œ": ["๋ธ”๋กœ๊ทธ ์ž๋™(์ปจํŽŒ/๋‹จ์ˆ˜) ์ƒ์„ฑ","๋ธ”๋กœ๊ทธ ์ž๋™(๋ฌด์ธ/๋ณต์ˆ˜) ์ƒ์„ฑ" ],
"[๊ด€๋ฆฌ ๋ชจ๋‹ˆํ„ฐ๋ง]": ["24X7 ๋ชจ๋‹ˆํ„ฐ๋ง"]
}
# Initialize session state
if 'expanded_category' not in st.session_state:
st.session_state.expanded_category = None
if 'selected_item' not in st.session_state:
st.session_state.selected_item = None
# Functions
def toggle_category(category):
if st.session_state.expanded_category == category:
st.session_state.expanded_category = None
else:
st.session_state.expanded_category = category
def select_item(item):
st.session_state.selected_item = item
# Sidebar menu
st.sidebar.markdown('<h1 style="font-size: 1.4rem; margin-left: 15px;">๋ฉ”๋‰ด</h1>', unsafe_allow_html=True)
for category, items in menu_structure.items():
is_expanded = st.session_state.expanded_category == category
category_label = f"{'โ–ผ' if is_expanded else 'โ–ถ'} {category}"
if st.sidebar.button(category_label, key=f"category_{category}", on_click=toggle_category, args=(category,)):
pass
if is_expanded:
for item in items:
is_selected = st.session_state.selected_item == item
if st.sidebar.button(item, key=f"submenu_{item}", on_click=select_item, args=(item,)):
pass
# Main content
main_content = st.empty()
# Content mapping
content_map = {
"FLUX LoRA ์ŠคํŠœ๋””์˜ค": "https://ginipick-flxloraexp.hf.space",
"[์„œ์น˜+VisionLLM] ํ•œ๊ตญ์–ด JinJavis": "https://fantos-jinjavis.hf.space",
"FLUX ํ™•์žฅ ์ด๋ฏธ์ง€ ์ƒ์„ฑ": "https://fantaxy-ofai-flx-expl-store.hf.space",
"์ด๋ฏธ์ง€์™€ ํ•œ๊ธ€ ํ”„๋กฌํ”„ํŠธ๋กœ ์ด๋ฏธ์ง€ ๋ณ€ํ˜•": "https://fantos-kolcontrl.hf.space",
"LOGO ๋””์ž์ธ ์ƒ์„ฑ": "https://fantaxy-ofai-flx-logo.hf.space",
"FLUX GIF ์ƒ์„ฑ": "https://aiqtech-flxgif.hf.space",
"์ด๋ฏธ์ง€์™€ ํ”„๋กฌํ”„ํŠธ๋กœ ์˜์ƒ ์ƒ์„ฑ": "https://fantaxy-ofai-it2v2.hf.space",
"ํ…์ŠคํŠธ๋กœ ๊ฐ์ฒด๋งŒ ์ž˜๋ผ๋‚ด๊ณ  ๋ฐฐ๊ฒฝ ํˆฌ๋ช…ํ™”": "https://fantos-textcutobject.hf.space",
"์ƒํ’ˆ ์‚ฌ์ง„ ์—…๋กœ๋“œ+ํ”„๋กฌํ”„ํŠธ๋กœ ๋ฐฐ๊ฒฝ์„ ํ•ฉ์„ฑ": "https://aiqtech-producbrmg.hf.space",
"EveryText: ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ์ด๋ฏธ์ง€ ์ƒ์„ฑ์— ๋ฐ˜์˜": "https://fantos-EveryText.hf.space",
"FLUXLoRA์ŠคํŠœ๋””์˜ค ์„œ๋ฒ„#1": "https://seawolf2357-flxloraexp.hf.space",
"FLUXLoRA์ŠคํŠœ๋””์˜ค ์„œ๋ฒ„#2": "https://fantaxy-flxloraexp.hf.space",
"FLUXLoRA์ŠคํŠœ๋””์˜ค ์„œ๋ฒ„#3": "https://fantos-flxloraexp.hf.space",
"FLUXLoRA์ŠคํŠœ๋””์˜ค ์„œ๋ฒ„#4": "https://ginipick-flxloraexp.hf.space",
"FLUX LoRA ์ŠคํŠœ๋””์˜ค": "https://fantos-flxloraexp.hf.space",
"FLUX ํ™•์žฅ ์ด๋ฏธ์ง€ ์ƒ์„ฑ": "https://fantaxy-ofai-flx-expl-store.hf.space",
"FLUX GIF ์ƒ์„ฑ": "https://aiqtech-flxgif.hf.space",
"LOGO ๋””์ž์ธ ์ƒ์„ฑ": "https://fantaxy-ofai-flx-logo.hf.space",
"FLUX ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ": "https://ginipick-flux-prompt-generator.hf.space",
"FLUX LoRA: ๊ธฐ๋ธ”๋ฆฌ ์Šคํƒ€์ผ": "https://aiqtech-flux-ghibli-studio-lora.hf.space",
"FLUX LoRA: ์นดํˆฐ ์Šคํƒ€์ผ": "https://aiqtech-flxani.hf.space",
"FLUX 8step LoRA ์ด๋ฏธ์ง€ ์ƒ์„ฑ": "https://fantos-flx8lora.hf.space",
"FLUX ํ…์ŠคํŠธ TO ๋น„๋””์˜ค ์ƒ์„ฑ": "https://fantos-cogvidx.hf.space",
"FLUX ํŒจ์…˜๋ชจ๋ธ ์ƒ์„ฑ": "https://fantos-flxfashmodel.hf.space",
"FLUX Controlnet": "https://fantos-flxcontrol.hf.space",
"FLUX NF4 ์ด๋ฏธ์ง€ ์ƒ์„ฑ": "https://ginipick-ofai-flxnf4.hf.space",
"์ด๋ฏธ์ง€์™€ ํ•œ๊ธ€ ํ”„๋กฌํ”„ํŠธ๋กœ ์˜์ƒ ์ƒ์„ฑ I": "https://fantaxy-ofai-it2v2.hf.space",
"์ด๋ฏธ์ง€์™€ ํ•œ๊ธ€ ํ”„๋กฌํ”„ํŠธ๋กœ ์˜์ƒ ์ƒ์„ฑ II": "https://aiqtech-cinevid.hf.space",
"์ด๋ฏธ์ง€์™€ ํ•œ๊ธ€ ํ”„๋กฌํ”„ํŠธ๋กœ ์ด๋ฏธ์ง€ ๋ณ€ํ˜•": "https://fantos-kolcontrl.hf.space",
"์ƒํ’ˆ ์‚ฌ์ง„ ์—…๋กœ๋“œ+ํ”„๋กฌํ”„ํŠธ๋กœ ๋ฐฐ๊ฒฝ์„ ํ•ฉ์„ฑ": "https://aiqtech-producbrmg.hf.space",
"ํ…์ŠคํŠธ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ: Accracy ๋ชจ๋ธ": "https://ginipick-accdiffusion.hf.space",
"ํ…์ŠคํŠธ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ: Playground ๋ชจ๋ธ": "https://fantaxy-playground25.hf.space",
"ํ…์ŠคํŠธ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ: AuraFlow ๋ชจ๋ธ": "https://fantaxy-auroflow-v3.hf.space",
"EveryText: ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ์ด๋ฏธ์ง€ ์ƒ์„ฑ์— ๋ฐ˜์˜": "https://fantos-EveryText.hf.space",
"๋‚ด ์–ผ๊ตด ์‚ฌ์ง„์œผ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ I": "https://aiqtech-kofaceid.hf.space",
"๋‚ด ์–ผ๊ตด ์‚ฌ์ง„์œผ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ II": "https://aiqtech-sdfacid.hf.space",
"๊ณ ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€ ์ƒ์„ฑ REALVISXL V5": "https://seawolf2357-REALVISXL-V5.hf.space",
"ํ…์ŠคํŠธ๋กœ ๊ฐ์ฒด๋งŒ ์ž˜๋ผ๋‚ด๊ณ  ๋ฐฐ๊ฒฝ ํˆฌ๋ช…ํ™”": "https://fantos-textcutobject.hf.space",
"๋น„๋””์˜ค ์ธ์‹ QnA ์ฑ—๋ด‡": "https://ginipick-vidiqa.hf.space",
"์ด๋ฏธ์ง€ ์Šค์ผ€์ผ์—…(ํ™”์งˆ๊ฐœ์„ )": "https://ginipick-finegrain-image-enhancer.hf.space",
"์ด๋ฏธ์ง€ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ": "https://ginipick-background-removal.hf.space",
"๋น„๋””์˜ค ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ": "https://fantaxy-remove-video-background.hf.space",
"ํ…์ŠคํŠธ ์ž…๋ ฅ์œผ๋กœ ์Œ์•… ์ƒ์„ฑ": "https://fantaxy-stable-audio-open-zero.hf.space",
"[์„œ์น˜+VisionLLM] ํ•œ๊ตญ์–ด JinJavis": "https://fantos-jinjavis.hf.space",
"MS PHI 3.5 Vision": "https://aiqtech-phi35-vision.hf.space",
"NSFW kAI": "https://fantaxy-ofai-kai.hf.space",
"๋ฉ”ํƒ€ LLAMA 3.1 405B": "https://seawolf2357-ofai-405.hf.space",
"๋ฉ”ํƒ€ LLAMA 3.1 70B": "https://fantaxy-ofai-70.hf.space",
"๋ฉ”ํƒ€ LLAMA 3.1 8B": "https://seawolf2357-ofai-8.hf.space",
"๋ฏธ์ŠคํŠธ๋ž„ 7B Instruct v0.3": "https://fantaxy-ofai-mis7b.hf.space",
"MS Phi 3 mini 4k-instruct": "https://fantaxy-ofai-phi.hf.space",
"์ค‘๊ตญ Yi 1.5 34B": "https://fantaxy-ofai-yi.hf.space",
"๋ฏธ์ŠคํŠธ๋ž„ Mixtral 8X7B ": "https://fantaxy-ofai-8x7b.hf.space",
"๋ฏธ์ŠคํŠธ๋ž„ Nemo Instruct 2407": "https://seawolf2357-ofai-mistral-nemo.hf.space" ,
"์ „๋ฌธ ๋ธ”๋กœ๊ทธ ์ƒ์„ฑ": "https://seawolf2357-ofai-jinjavis-blog.hf.space",
"์˜ํ•™ ์ „๋ฌธ ๋ธ”๋กœ๊ทธ ์ƒ์„ฑ": "https://seawolf2357-ofai-jinjavis-blog-medi.hf.space",
"์•ฝ๋ฆฌํ•™ ์ „๋ฌธ ๋ธ”๋กœ๊ทธ ์ƒ์„ฑ": "https://seawolf2357-ofai-jinjavis-blog-pharm.hf.space" ,
"๋ธ”๋กœ๊ทธ ์ž๋™(์ปจํŽŒ/๋‹จ์ˆ˜) ์ƒ์„ฑ": "https://fantaxy-blogger-send-webhook-confirm-image.hf.space",
"๋ธ”๋กœ๊ทธ ์ž๋™(๋ฌด์ธ/๋ณต์ˆ˜) ์ƒ์„ฑ": "https://fantaxy-blogger-send-webhook-auto-image.hf.space" ,
"24X7 ๋ชจ๋‹ˆํ„ฐ๋ง": "https://seawolf2357-bnews3.hf.space"
}
if st.session_state.selected_item in content_map:
iframe_url = content_map[st.session_state.selected_item]
main_content.markdown(
f'''
<iframe src="{iframe_url}"
width="100%"
height="800"
frameborder="0"
allow="microphone *; camera *; fullscreen *; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen>
</iframe>
''',
unsafe_allow_html=True
)
else:
main_content.markdown("<h2>๋ฉ”๋‰ด์—์„œ ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜์„ธ์š”.</h2>")
# Add JavaScript for dynamic iframe resizing, microphone permission, and enhanced iframe communication
st.markdown("""
<script>
function resizeIframe() {
var iframe = document.querySelector('iframe');
if (iframe) {
iframe.style.height = window.innerHeight + 'px';
}
}
async function requestMicrophonePermission() {
try {
await navigator.mediaDevices.getUserMedia({ audio: true });
console.log("Microphone permission granted");
} catch (err) {
console.error("Error requesting microphone permission:", err);
}
}
function postMessageToIframe(message) {
var iframe = document.querySelector('iframe');
if (iframe) {
iframe.contentWindow.postMessage(message, '*');
}
}
window.addEventListener('message', function(event) {
if (event.data === 'requestMicrophoneAccess') {
requestMicrophonePermission();
}
});
window.addEventListener('resize', resizeIframe);
resizeIframe();
requestMicrophonePermission();
// Attempt to enable microphone access after a short delay
setTimeout(() => {
postMessageToIframe('enableMicrophone');
}, 2000);
</script>
""", unsafe_allow_html=True)