feat: Enhance calendar selection by adding URL normalization and improved error handling
This commit is contained in:
+26
-4
@@ -25,6 +25,20 @@ HEADERS = {
|
||||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Unraid-Sync/1.0"
|
||||
}
|
||||
|
||||
|
||||
def normalize_url(url):
|
||||
"""Normalize URLs to make matching robust against trailing slash differences."""
|
||||
return str(url).strip().rstrip("/")
|
||||
|
||||
|
||||
def find_calendar_by_url(calendars, target_url):
|
||||
"""Find a calendar whose URL matches the configured Baikal calendar URL."""
|
||||
normalized_target = normalize_url(target_url)
|
||||
for cal in calendars:
|
||||
if normalize_url(cal.url) == normalized_target:
|
||||
return cal
|
||||
return None
|
||||
|
||||
def delete_event(event):
|
||||
"""Helper function to delete a single event."""
|
||||
try:
|
||||
@@ -107,14 +121,22 @@ def sync():
|
||||
print(f" - {c.url}")
|
||||
return
|
||||
else:
|
||||
# Si no hay ID, usar el primero como antes
|
||||
if calendars:
|
||||
calendar = calendars[0]
|
||||
else:
|
||||
# Si no hay CALENDAR_ID, seleccionar por BAIKAL_URL
|
||||
if not calendars:
|
||||
print("!!! No se encontró ningún calendario en esa URL.")
|
||||
return
|
||||
|
||||
calendar = find_calendar_by_url(calendars, BAIKAL_URL)
|
||||
if not calendar:
|
||||
print("!!! Error: No se encontró un calendario que coincida con BAIKAL_URL.")
|
||||
print(f" BAIKAL_URL configurado: {BAIKAL_URL}")
|
||||
print(" Calendarios disponibles:")
|
||||
for c in calendars:
|
||||
print(f" - {c.url}")
|
||||
return
|
||||
|
||||
print(f"-> Calendario seleccionado: {calendar}")
|
||||
print(f"-> URL del calendario seleccionado: {calendar.url}")
|
||||
|
||||
# 3. Borrar eventos antiguos (NUEVO)
|
||||
delete_all_events(calendar)
|
||||
|
||||
Reference in New Issue
Block a user