Skip to content

Commit c4e8a53

Browse files
committed
convert date string in instagram feed to date object
1 parent f29411c commit c4e8a53

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

backend/scraping/instagram_feed.py

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,14 @@
5858
SUPABASE_DB_URL = os.getenv("SUPABASE_DB_URL")
5959

6060

61+
def parse_datetime(dt_str):
62+
"""Parse a datetime string to a timezone-aware datetime object."""
63+
dt = parser.parse(dt_str)
64+
if timezone.is_naive(dt):
65+
dt = timezone.make_aware(dt)
66+
return dt
67+
68+
6169
def is_duplicate_event(event_data):
6270
"""Check for duplicate events using title, occurrences, location, and description."""
6371

@@ -69,11 +77,13 @@ def is_duplicate_event(event_data):
6977
if not occurrences:
7078
return False
7179

72-
target_start = occurrences[0].get("start_utc")
80+
target_start_str = occurrences[0].get("start_utc")
81+
target_start = parse_datetime(target_start_str)
7382
if not target_start:
7483
return False
7584

7685
try:
86+
7787
candidates = (
7888
EventDates.objects.select_related("event")
7989
.filter(dtstart_utc__date=target_start.date())
@@ -266,16 +276,26 @@ def insert_event_to_db(event_data, ig_handle, source_url):
266276

267277
try:
268278
event = Events.objects.create(**create_kwargs)
269-
event_dates = [
270-
EventDates(
271-
event=event,
272-
dtstart_utc=occ["start_utc"],
273-
dtend_utc=occ.get("end_utc"),
274-
duration=occ.get("duration"),
275-
tz=occ.get("tz"),
279+
event_dates = []
280+
281+
for occ in occurrences:
282+
# Parse start_utc
283+
dtstart_utc = parse_datetime(occ.get("start_utc"))
284+
if not dtstart_utc:
285+
continue # Skip occurrences without start time
286+
287+
# Parse end_utc (can be empty string or None)
288+
dtend_utc = parse_datetime(occ.get("end_utc"))
289+
290+
event_dates.append(
291+
EventDates(
292+
event=event,
293+
dtstart_utc=dtstart_utc,
294+
dtend_utc=dtend_utc,
295+
duration=occ.get("duration") or None,
296+
tz=occ.get("tz") or None,
297+
)
276298
)
277-
for occ in occurrences
278-
]
279299

280300
EventDates.objects.bulk_create(event_dates)
281301
logger.debug(

0 commit comments

Comments
 (0)