bnews3 / app.py
seawolf2357's picture
Update app.py
5b51aa1 verified
raw
history blame
8.54 kB
import gradio as gr
import requests
import logging
import threading
import time
# ๋กœ๊น… ์„ค์ •
logging.basicConfig(level=logging.INFO)
css = """
footer { visibility: hidden; }
.status-button {
display: inline-block;
padding: 5px 10px;
margin: 5px;
border-radius: 5px;
font-size: 12px;
}
.status-normal { background-color: green; color: white; }
.status-abnormal { background-color: red; color: white; }
"""
# ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์ƒ ๋ชฉ๋ก
TARGETS = [
{"name": "[MON]๊ด€๋ฆฌ-HOME", "url": "https://seawolf2357-bnews1.hf.space"},
{"name": "[MON]๊ด€๋ฆฌ-H100 LIST", "url": "https://seawolf2357-bnews2.hf.space"},
{"name": "[MON]๊ด€๋ฆฌ-MONITOR Origin", "url": "https://seawolf2357-bnews3.hf.space"},
{"name": "[MON]ํƒ€์ด๋จธ1-1 ", "url": "https://seawolf2357-timer.hf.space"},
{"name": "[MON]ํƒ€์ด๋จธ1-2 ", "url": "https://seawolf2357-timer2.hf.space"},
{"name": "[MON]ํƒ€์ด๋จธ1-3 ", "url": "https://seawolf2357-timer3.hf.space"},
{"name": "[MON]ํƒ€์ด๋จธ1-4 ", "url": "https://seawolf2357-timer4.hf.space"},
{"name": "[MON]ํƒ€์ด๋จธ2-1 ", "url": "https://fantaxy-timer1.hf.space"},
{"name": "[MON]ํƒ€์ด๋จธ2-2 ", "url": "https://fantaxy-timer2.hf.space"},
{"name": "[H100]AI ๊ฐœ์ธ๋น„์„œ JinJAVIS", "url": "http://hugpu.ai:8000"},
{"name": "[H100]์•„๋ฐ”ํƒ€ ์ŠคํŠœ๋””์˜ค ํ”Œ๋žซํผ ", "url": "http://hugpu.ai:7899"},
{"name": "[H100]์ˆํผ ์ŠคํŠœ๋””์˜ค ํ”Œ๋žซ", "url": "http://211.233.58.202:7960"},
{"name": "[H100]ํ†ตํ•ฉ Medim ๋ธ”๋กœ๊ทธ ์‹œ์Šคํ…œ ", "url": "http://hugpu.ai:7917"},
{"name": "[H100]์ดˆ๊ณ ์†/ํ…์ŠคํŠธ ๋ฐ˜์˜ ๋กœ๊ณ  ์ƒ์„ฑ", "url": "http://hugpu.ai:7897"},
{"name": "[H100]์‚ฌ์ง„+์Œ์„ฑ to ๋งํ•˜๋Š” ์˜์ƒ", "url": "http://hugpu.ai:7895"},
{"name": "[H100]I+T2I ์บ๋ฆญํ„ฐ ํ”„๋กœํ•„", "url": "http://hugpu.ai:7889"},
{"name": "[H100]๋ชจ์…˜ ๋”ฐ๋ผํ•˜๊ธฐ", "url": "http://hugpu.ai:7894"},
{"name": "[H100]์•Œ๋ฆฌ๋ฐ”๋ฐ” 'AnyText'", "url": "http://hugpu.ai:7913"},
{"name": "[@ H100]๋ฉ”ํƒ€ ์Šค๋ ˆ๋“œ AUTO", "url": "http://hugpu.ai:7915"},
{"name": "[@ H100]ํŒจ์…˜", "url": "http://hugpu.ai:7896"},
{"name": "[@ H100]Image + Text to Image(IP-ADAPT)", "url": "http://hugpu.ai:7890"},
{"name": "[@ H100]FaceFusion", "url": "http://hugpu.ai:7880"},
{"name": "[HUGPU]FLUX ํ™•์žฅ ์ด๋ฏธ์ง€ ์ƒ์„ฑ", "url": "https://fantaxy-ofai-flx-expl-store.hf.space"},
{"name": "[HUGPU]FLUX GIF ์ƒ์„ฑ", "url": "https://aiqtech-flxgif.hf.space"},
{"name": "[HUGPU]LOGO ๋””์ž์ธ ์ƒ์„ฑ ", "url": "https://fantaxy-ofai-flx-logo.hf.space"},
{"name": "[HUGPU]FLUX ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ ", "url": "https://ginipick-flux-prompt-generator.hf.space"},
{"name": "[HUGPU]LoRA: ๊ธฐ๋ธ”๋ฆฌ ์Šคํƒ€์ผ ", "url": "https://aiqtech-flux-ghibli-studio-lora.hf.space"},
{"name": "[HUGPU]LoRA: ์นดํˆฐ ์Šคํƒ€์ผ ", "url": "https://aiqtech-flxani.hf.space"},
{"name": "[HUGPU]FLUX 8step LoRA ์ด๋ฏธ์ง€ ์ƒ์„ฑ ", "url": "https://fantos-flx8lora.hf.space"},
{"name": "[HUGPU]FLUX ํ…์ŠคํŠธ TO ๋น„๋””์˜ค ์ƒ์„ฑ ", "url": "https://fantos-cogvidx.hf.space"},
{"name": "[HUGPU]FLUX ํŒจ์…˜๋ชจ๋ธ ์ƒ์„ฑ ", "url": "https://fantos-flxfashmodel.hf.space"},
{"name": "[HUGPU]FLUX Controlnet ", "url": "https://fantos-flxcontrol.hf.space"},
{"name": "[HUGPU]FLUX NF4 ์ด๋ฏธ์ง€ ์ƒ์„ฑ ", "url": "https://ginipick-ofai-flxnf4.hf.space"},
{"name": "[HUGPU]์ด๋ฏธ์ง€์™€ ํ•œ๊ธ€ ํ”„๋กฌํ”„ํŠธ๋กœ ์˜์ƒ ์ƒ์„ฑ I ", "url": "https://fantaxy-ofai-it2v2.hf.space"},
{"name": "[HUGPU]์ด๋ฏธ์ง€์™€ ํ•œ๊ธ€ ํ”„๋กฌํ”„ํŠธ๋กœ ์˜์ƒ ์ƒ์„ฑ II ", "url": "https://aiqtech-cinevid.hf.space"},
{"name": "[HUGPU]์ƒํ’ˆ ์‚ฌ์ง„ ์—…๋กœ๋“œ+ํ”„๋กฌํ”„ํŠธ๋กœ ๋ฐฐ๊ฒฝ์„ ํ•ฉ์„ฑ ", "url": "https://aiqtech-producbrmg.hf.space"},
{"name": "[HUGPU]ํ…์ŠคํŠธ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ: Accracy ๋ชจ๋ธ ", "url": "https://ginipick-accdiffusion.hf.space"},
{"name": "[HUGPU]ํ…์ŠคํŠธ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ: Playground ๋ชจ๋ธ ", "url": "https://fantaxy-playground25.hf.space"},
{"name": "[HUGPU]ํ…์ŠคํŠธ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ: AuraFlow ๋ชจ๋ธ ", "url": "https://fantaxy-auroflow-v3.hf.space"},
{"name": "[HUGPU]EveryText: ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ์ด๋ฏธ์ง€ ์ƒ์„ฑ์— ๋ฐ˜์˜ ", "url": "https://fantos-EveryText.hf.space"},
{"name": "[HUGPU]๋‚ด ์–ผ๊ตด ์‚ฌ์ง„์œผ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ", "url": "https://aiqtech-kofaceid.hf.space"},
{"name": "[HUGPU]๋น„๋””์˜ค ์ธ์‹ QnA ์ฑ—๋ด‡ ", "url": "https://ginipick-vidiqa.hf.space"},
{"name": "[HUGPU]์ด๋ฏธ์ง€ ์Šค์ผ€์ผ์—…(ํ™”์งˆ๊ฐœ์„ ) ", "url": "https://ginipick-finegrain-image-enhancer.hf.space"},
{"name": "[HUGPU]์ด๋ฏธ์ง€ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ ", "url": "https://ginipick-background-removal.hf.space"},
{"name": "[HUGPU]๋น„๋””์˜ค ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ ", "url": "https://fantaxy-remove-video-background.hf.space"},
{"name": "[HUGPU]ํ…์ŠคํŠธ ์ž…๋ ฅ์œผ๋กœ ์Œ์•… ์ƒ์„ฑ ", "url": "https://fantaxy-stable-audio-open-zero.hf.space"},
{"name": "[HUGPU]MS PHI 3.5 Vision ", "url": "https://aiqtech-phi35-vision.hf.space"},
{"name": "[HUGPU]NSFW kAI ", "url": "https://fantaxy-ofai-kai.hf.space"},
{"name": "[HUGPU]๋ฉ”ํƒ€ LLAMA 3.1 405B ", "url": "https://seawolf2357-ofai-405.hf.space"},
{"name": "[HUGPU]๋ฉ”ํƒ€ LLAMA 3.1 70B ", "url": "https://fantaxy-ofai-70.hf.space"},
{"name": "[HUGPU]๋ฉ”ํƒ€ LLAMA 3.1 8B ", "url": "https://seawolf2357-ofai-8.hf.space"},
{"name": "[HUGPU]๋ฏธ์ŠคํŠธ๋ž„ 7B Instruct v0.3 ", "url": "https://fantaxy-ofai-mis7b.hf.space"},
{"name": "[HUGPU]MS Phi 3 mini 4k-instruct ", "url": "https://fantaxy-ofai-phi.hf.space"},
{"name": "[HUGPU]์ค‘๊ตญ Yi 1.5 34B ", "url": "https://fantaxy-ofai-yi.hf.space"},
{"name": "[HUGPU]๋ฏธ์ŠคํŠธ๋ž„ Mixtral 8X7B ", "url": "https://fantaxy-ofai-8x7b.hf.space"},
{"name": "[HUGPU]๋ฏธ์ŠคํŠธ๋ž„ Nemo Instruct 2407 ", "url": "https://seawolf2357-ofai-mistral-nemo.hf.space"},
{"name": "[HUGPU]๋ธ”๋กœ๊ทธ ์ž๋™(์ปจํŽŒ/๋‹จ์ˆ˜) ์ƒ์„ฑ ", "url": "https://fantaxy-blogger-send-webhook-confirm-image.hf.space"},
{"name": "[HUGPU]๋ธ”๋กœ๊ทธ ์ž๋™(๋ฌด์ธ/๋ณต์ˆ˜) ์ƒ์„ฑ ", "url": "https://fantaxy-blogger-send-webhook-auto-image.hf.space"},
{"name": "[HUGPU]์ „๋ฌธ ๋ธ”๋กœ๊ทธ ์ƒ์„ฑ ", "url": "https://seawolf2357-ofai-jinjavis-blog.hf.space"},
{"name": "[HUGPU]์˜ํ•™ ์ „๋ฌธ ๋ธ”๋กœ๊ทธ ์ƒ์„ฑ ", "url": "https://seawolf2357-ofai-jinjavis-blog-medi.hf.space"},
{"name": "[HUGPU]์•ฝ๋ฆฌํ•™ ์ „๋ฌธ ๋ธ”๋กœ๊ทธ ์ƒ์„ฑ ", "url": "https://seawolf2357-ofai-jinjavis-blog-pharm.hf.space"},
]
# URL ์ƒํƒœ ํ™•์ธ ํ•จ์ˆ˜
def check_url_status(url):
try:
response = requests.get(url, timeout=5)
if response.status_code == 200:
logging.info(f"URL ์ ‘์† ์„ฑ๊ณต: {url}")
return "์ •์ƒ", "normal"
else:
logging.error(f"URL ์ ‘์† ์˜ค๋ฅ˜: {url}, ์ƒํƒœ ์ฝ”๋“œ {response.status_code}")
return "๋น„์ •์ƒ", "abnormal"
except requests.exceptions.RequestException as e:
logging.exception(f"์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค: {url}")
return "๋น„์ •์ƒ", "abnormal"
# ์ƒํƒœ ์—…๋ฐ์ดํŠธ ํ•จ์ˆ˜
def update_status():
status_html = ""
for target in TARGETS:
status, status_class = check_url_status(target["url"])
status_html += f'<span class="status-button status-{status_class}">{target["name"]}: {status}</span>'
return status_html
# ์ฃผ๊ธฐ์  ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•œ ํ•จ์ˆ˜
def periodic_update(status_html):
while True:
time.sleep(60) # 10์ดˆ ๋Œ€๊ธฐ
new_status = update_status()
status_html.update(value=new_status)
# Gradio ์ธํ„ฐํŽ˜์ด์Šค ์„ค์ •
def create_dashboard():
with gr.Blocks(theme="Nymbo/Nymbo_Theme", css=css) as app:
gr.Image("banner.png", show_label=False)
gr.Markdown("# 24์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ")
gr.Markdown("## \n")
status_html = gr.HTML()
refresh_button = gr.Button("์ƒํƒœ ์ƒˆ๋กœ๊ณ ์นจ")
refresh_button.click(fn=update_status, outputs=status_html)
# ์ดˆ๊ธฐ ์ƒํƒœ ์—…๋ฐ์ดํŠธ
app.load(fn=update_status, outputs=status_html)
# ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ฃผ๊ธฐ์  ์—…๋ฐ์ดํŠธ ์‹œ์ž‘
threading.Thread(target=periodic_update, args=(status_html,), daemon=True).start()
return app
if __name__ == "__main__":
dashboard = create_dashboard()
dashboard.launch()