Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import hashlib | |
| from datetime import datetime | |
| import os | |
| IRIN_PREFIX = "10.25834/bibliox" | |
| COUNTER_FILE = "counter.txt" | |
| def get_next_id(): | |
| if os.path.exists(COUNTER_FILE): | |
| with open(COUNTER_FILE, 'r') as f: | |
| counter = int(f.read()) | |
| else: | |
| counter = 0 | |
| counter += 1 | |
| with open(COUNTER_FILE, 'w') as f: | |
| f.write(str(counter)) | |
| return counter | |
| def generate_irin(title): | |
| """ | |
| 輸入標題 → 生成IRIN | |
| """ | |
| if not title: | |
| return "❌ Please enter a paper title" | |
| # 算Hash | |
| fmc_hash = hashlib.sha256(title.encode('utf-8')).hexdigest()[:16] | |
| # 生成IRIN | |
| paper_id = get_next_id() | |
| year = datetime.now().year | |
| irin = f"{IRIN_PREFIX}.{year}.{paper_id:05d}" | |
| pub_date = datetime.now().strftime('%B %d, %Y') | |
| # 回傳結果 | |
| result = f""" | |
| ## ✅ IRIN Generated! | |
| **IRIN:** `{irin}` | |
| **Date:** {pub_date} | |
| **Hash:** `{fmc_hash}` | |
| **Status:** ✅ Certified | |
| --- | |
| **Copy this IRIN and paste it into your Wix blog post!** | |
| """ | |
| return result | |
| # === Gradio UI === | |
| with gr.Blocks(theme=gr.themes.Soft()) as app: | |
| gr.Markdown("# 🔬 IRIN Generator") | |
| with gr.Row(): | |
| title_input = gr.Textbox( | |
| label="Paper Title", | |
| placeholder="Enter your paper title...", | |
| scale=3 | |
| ) | |
| generate_btn = gr.Button("🚀 Generate", scale=1, variant="primary") | |
| output = gr.Markdown(value="Enter a title and click Generate") | |
| generate_btn.click( | |
| fn=generate_irin, | |
| inputs=title_input, | |
| outputs=output | |
| ) | |
| gr.Markdown("**Powered by BiblioX**") | |
| app.launch() |