import gradio as gr from datetime import datetime, timedelta START_DATE = datetime.strptime("2024-11-11", "%Y-%m-%d") def date_to_pt(date_input): try: d = datetime.strptime(date_input.strip(), "%d/%m/%Y") except ValueError: try: raw = date_input.strip().replace("/", "").replace("-", "") if len(raw) == 8 and raw.isdigit(): d = datetime.strptime(f"{raw[:2]}/{raw[2:4]}/{raw[4:]}", "%d/%m/%Y") else: return "Formato inválido (use DD/MM/AAAA ou 8 dígitos)" except ValueError: return "Data inválida" delta_weeks = (d - START_DATE).days // 7 return f"PT{delta_weeks} e PT{delta_weeks - 1}+" # Para datas, PT+ é PT-1 def pt_to_week(pt_input): try: raw_num = pt_input.replace("PT", "").replace("+", "").strip() num = int(raw_num) # PT normal (semana atual) pt_start = START_DATE + timedelta(weeks=num) pt_end = pt_start + timedelta(days=6) # PT+ (semana seguinte) - aqui é PT+1 pt_plus_start = START_DATE + timedelta(weeks=num+1) pt_plus_end = pt_plus_start + timedelta(days=6) return ( f"PT{num} → {pt_start.strftime('%d/%m')} a {pt_end.strftime('%d/%m')}\n" f"PT{num}+ → {pt_plus_start.strftime('%d/%m')} a {pt_plus_end.strftime('%d/%m')}" ) except ValueError: return "Formato PT inválido (ex: PT30 ou 30)" with gr.Blocks(title="Conversor Data ↔ PT") as app: gr.Markdown("## 🔄 Conversor entre datas e ciclos PT") with gr.Tab("📆 PT → Semana", id="pt_to_week"): pt_input = gr.Textbox(label="PT (ex: PT30)", elem_id="pt_input") pt_output = gr.Textbox(label="Semana correspondente") pt_button = gr.Button("Converter PT → Semana", variant="primary") pt_input.submit(fn=pt_to_week, inputs=pt_input, outputs=pt_output) pt_button.click(fn=pt_to_week, inputs=pt_input, outputs=pt_output) with gr.Tab("📅 Data → PT", id="date_to_pt"): date_input = gr.Textbox(label="Data (DD/MM/AAAA ou 8 dígitos)", elem_id="date_input") date_output = gr.Textbox(label="PT correspondente") date_button = gr.Button("Converter Data → PT", variant="primary") date_input.submit(fn=date_to_pt, inputs=date_input, outputs=date_output) date_button.click(fn=date_to_pt, inputs=date_input, outputs=date_output) app.launch()