irin-generator / app.py
chihsing's picture
Create app.py
dcc71b4 verified
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()