Skip to content

Commit 002a5de

Browse files
Tony QiuTony Qiu
authored andcommitted
fix lint
1 parent 9bc816f commit 002a5de

File tree

6 files changed

+70
-60
lines changed

6 files changed

+70
-60
lines changed

backend/example/embedding_utils.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88

99

1010
def find_similar_events(
11-
embedding: list[float], threshold: float = 0.985, limit: int = None, min_date: str = None
11+
embedding: list[float],
12+
threshold: float = 0.985,
13+
limit: int = None,
14+
min_date: str = None,
1215
) -> list[dict]:
1316
with connection.cursor() as cursor:
1417
# Base query with date filtering first for performance
@@ -17,25 +20,25 @@ def find_similar_events(
1720
FROM events
1821
WHERE embedding IS NOT NULL
1922
"""
20-
23+
2124
params = [embedding]
22-
25+
2326
# Add date filter if provided to reduce search space
2427
if min_date:
2528
base_query += " AND date >= %s"
2629
params.append(min_date)
27-
30+
2831
# Add similarity threshold
2932
base_query += " AND 1 - (embedding <=> %s::vector) > %s"
3033
params.extend([embedding, threshold])
31-
34+
3235
# Order and limit
3336
base_query += " ORDER BY similarity DESC"
34-
37+
3538
if limit is not None:
3639
base_query += " LIMIT %s"
3740
params.append(limit)
38-
41+
3942
cursor.execute(base_query, params)
4043

4144
return [

backend/scraping/generate_static_data.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def fetch_events_for_static_data():
3636
"""Fetch all upcoming events from the database for static data generation"""
3737
conn_string = os.environ.get("SUPABASE_DB_URL")
3838
logging.info("Connecting to the database...")
39-
39+
4040
with psycopg2.connect(conn_string) as conn, conn.cursor() as cur:
4141
logging.info("Executing query...")
4242
query = """
@@ -76,14 +76,17 @@ def generate_recommended_filters(events_data):
7676
"""Generate recommended filters using OpenAI service"""
7777
try:
7878
from services.openai_service import generate_recommended_filters
79+
7980
logging.info("Generating recommended filters using OpenAI...")
8081
recommended_filters = generate_recommended_filters(events_data)
81-
82+
8283
if not recommended_filters:
8384
logging.warning("Failed to generate recommended filters")
8485
return []
85-
86-
logging.info(f"Generated {len(recommended_filters)} filters: {recommended_filters}")
86+
87+
logging.info(
88+
f"Generated {len(recommended_filters)} filters: {recommended_filters}"
89+
)
8790
return recommended_filters
8891
except Exception as e:
8992
logging.error(f"Error generating recommended filters: {e}")
@@ -98,10 +101,10 @@ def main():
98101
try:
99102
# Fetch upcoming events
100103
events = fetch_events_for_static_data()
101-
104+
102105
# Generate recommended filters
103106
recommended_filters = generate_recommended_filters(events)
104-
107+
105108
# Write to staticData.ts
106109
output_path = (
107110
Path(__file__).parent.parent.parent
@@ -116,7 +119,7 @@ def main():
116119
current_time = datetime.now().isoformat()
117120
f.write('import { Event } from "@/hooks/useEvents";\n\n')
118121
f.write(f'export const LAST_UPDATED = "{current_time}";\n\n')
119-
122+
120123
# Write static events data
121124
f.write("export const staticEventsData = new Map<string, Event>([\n")
122125
for i, event in enumerate(events):
@@ -141,7 +144,7 @@ def main():
141144
f.write(",")
142145
f.write("\n")
143146
f.write("]);\n\n")
144-
147+
145148
# Write recommended filters
146149
if recommended_filters:
147150
f.write("export const RECOMMENDED_FILTERS: string[] = [\n")
@@ -154,8 +157,10 @@ def main():
154157
f.write("];\n")
155158
else:
156159
f.write("export const RECOMMENDED_FILTERS: string[] = [];\n")
157-
158-
logging.info("Successfully updated staticData.ts with events and recommended filters")
160+
161+
logging.info(
162+
"Successfully updated staticData.ts with events and recommended filters"
163+
)
159164
except Exception:
160165
logging.exception("An error occurred")
161166
sys.exit(1)

backend/scraping/instagram_feed.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import csv
1212
import logging
1313
import random
14-
import subprocess
1514
import time
1615
import traceback
1716
from datetime import datetime, timedelta, timezone
@@ -20,10 +19,9 @@
2019
from dotenv import load_dotenv
2120
from instaloader import Instaloader
2221

23-
from example.embedding_utils import is_duplicate_event, find_similar_events
22+
from example.embedding_utils import find_similar_events
2423
from example.models import Clubs, Events
2524
from services.openai_service import extract_events_from_caption, generate_embedding
26-
from django.db import connection
2725
from services.storage_service import upload_image_from_url
2826

2927
USER_AGENTS = [
@@ -190,10 +188,13 @@ def insert_event_to_db(event_data, club_ig, post_url):
190188
)
191189
candidate_ids = [row["id"] for row in similar_events]
192190
if candidate_ids:
193-
for existing in Events.objects.filter(id__in=candidate_ids, date=event_date):
191+
for existing in Events.objects.filter(
192+
id__in=candidate_ids, date=event_date
193+
):
194194
if (
195195
(existing.location or "") == (event_location or "")
196-
and (existing.start_time or "") == (event_data.get("start_time") or "")
196+
and (existing.start_time or "")
197+
== (event_data.get("start_time") or "")
197198
and (
198199
(existing.end_time or None)
199200
== (event_data.get("end_time") or None)
@@ -403,6 +404,6 @@ def session():
403404
if L:
404405
logger.info("Session created successfully!")
405406
process_recent_feed(L)
406-
407+
407408
else:
408409
logger.critical("Failed to initialize Instagram session, stopping...")

backend/scripts/generate_recommended_filters.py

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
3. Updates the frontend staticData.ts file with the new filters
99
"""
1010

11-
import os
12-
import sys
1311
import logging
12+
import os
1413
import re
14+
import sys
1515
from datetime import date
1616
from pathlib import Path
1717

@@ -23,8 +23,8 @@
2323
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "api.settings")
2424
django.setup()
2525

26-
from example.models import Events
27-
from services.openai_service import generate_recommended_filters
26+
from example.models import Events # noqa: E402
27+
from services.openai_service import generate_recommended_filters # noqa: E402
2828

2929
# Setup logging
3030
logging.basicConfig(
@@ -38,11 +38,11 @@ def fetch_upcoming_events():
3838
"""Fetch all events with dates >= today"""
3939
today = date.today()
4040
logger.info(f"Fetching upcoming events from {today}...")
41-
41+
4242
events = Events.objects.filter(date__gte=today).values(
43-
'name', 'location', 'date', 'food', 'club_type', 'description'
43+
"name", "location", "date", "food", "club_type", "description"
4444
)
45-
45+
4646
events_list = list(events)
4747
logger.info(f"Found {len(events_list)} upcoming events")
4848
return events_list
@@ -54,7 +54,7 @@ def update_static_data_file(recommended_filters):
5454
frontend_dir = Path(__file__).resolve().parent.parent.parent / "frontend"
5555
static_events_path = frontend_dir / "src" / "data" / "staticEvents.ts"
5656
static_data_path = frontend_dir / "src" / "data" / "staticData.ts"
57-
57+
5858
# Determine which file exists
5959
if static_data_path.exists():
6060
target_file = static_data_path
@@ -65,40 +65,42 @@ def update_static_data_file(recommended_filters):
6565
else:
6666
logger.error("Could not find staticEvents.ts or staticData.ts")
6767
return False
68-
68+
6969
try:
7070
# Read the current file
71-
with open(target_file, 'r', encoding='utf-8') as f:
71+
with open(target_file, encoding="utf-8") as f:
7272
content = f.read()
73-
73+
7474
# Format the recommended filters as a TypeScript array
7575
filters_ts = "export const RECOMMENDED_FILTERS: string[] = [\n"
7676
for filter_keyword in recommended_filters:
7777
# Escape quotes in the keyword
7878
escaped = filter_keyword.replace('"', '\\"')
7979
filters_ts += f' "{escaped}",\n'
8080
filters_ts += "];\n"
81-
81+
8282
# Check if RECOMMENDED_FILTERS already exists
8383
if "export const RECOMMENDED_FILTERS" in content:
8484
# Replace existing RECOMMENDED_FILTERS
85-
pattern = r'export const RECOMMENDED_FILTERS:.*?\];'
86-
content = re.sub(pattern, filters_ts.rstrip('\n'), content, flags=re.DOTALL)
85+
pattern = r"export const RECOMMENDED_FILTERS:.*?\];"
86+
content = re.sub(pattern, filters_ts.rstrip("\n"), content, flags=re.DOTALL)
8787
logger.info("Updated existing RECOMMENDED_FILTERS")
8888
else:
8989
# Append to the end of the file
9090
content += "\n" + filters_ts
9191
logger.info("Added new RECOMMENDED_FILTERS export")
92-
92+
9393
# Write back to the file
94-
with open(target_file, 'w', encoding='utf-8') as f:
94+
with open(target_file, "w", encoding="utf-8") as f:
9595
f.write(content)
96-
97-
logger.info(f"✅ Successfully updated {target_file.name} with {len(recommended_filters)} filters")
96+
97+
logger.info(
98+
f"✅ Successfully updated {target_file.name} with {len(recommended_filters)} filters"
99+
)
98100
return True
99-
100-
except Exception as e:
101-
logger.exception(f"Error updating static data file: {e}")
101+
102+
except Exception:
103+
logger.exception("Error updating static data file")
102104
return False
103105

104106

@@ -107,27 +109,27 @@ def main():
107109
logger.info("=" * 60)
108110
logger.info("Starting recommended filters generation")
109111
logger.info("=" * 60)
110-
112+
111113
# Step 1: Fetch upcoming events
112114
events_data = fetch_upcoming_events()
113-
115+
114116
if not events_data:
115117
logger.warning("No upcoming events found, cannot generate filters")
116118
return 1
117-
119+
118120
# Step 2: Generate recommended filters using OpenAI
119121
logger.info("Generating recommended filters using OpenAI...")
120122
recommended_filters = generate_recommended_filters(events_data)
121-
123+
122124
if not recommended_filters:
123125
logger.error("Failed to generate recommended filters")
124126
return 1
125-
127+
126128
logger.info(f"Generated {len(recommended_filters)} filters: {recommended_filters}")
127-
129+
128130
# Step 3: Update the staticData.ts file
129131
success = update_static_data_file(recommended_filters)
130-
132+
131133
if success:
132134
logger.info("=" * 60)
133135
logger.info("✅ Recommended filters generation completed successfully")
@@ -140,4 +142,3 @@ def main():
140142

141143
if __name__ == "__main__":
142144
sys.exit(main())
143-

backend/services/openai_service.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,7 @@ def extract_events_from_caption(
181181
# Return default structure if API call fails
182182
return [_get_default_event_structure(image_url)]
183183

184-
def generate_recommended_filters(
185-
self, events_data: list[dict]
186-
) -> list[str]:
184+
def generate_recommended_filters(self, events_data: list[dict]) -> list[str]:
187185
"""Generate recommended filter keywords from upcoming events data using GPT"""
188186
if not events_data:
189187
logger.warning("No events data provided for filter generation")
@@ -193,9 +191,9 @@ def generate_recommended_filters(
193191
event_summaries = []
194192
for event in events_data[:200]: # Limit to 200 events to avoid token limits
195193
summary = f"- {event.get('name', 'Unnamed')} at {event.get('location', 'TBD')} on {event.get('date', 'TBD')}"
196-
if event.get('food'):
194+
if event.get("food"):
197195
summary += f" (food: {event.get('food')})"
198-
if event.get('club_type'):
196+
if event.get("club_type"):
199197
summary += f" [type: {event.get('club_type')}]"
200198
event_summaries.append(summary)
201199

@@ -219,8 +217,10 @@ def generate_recommended_filters(
219217
"""
220218

221219
try:
222-
logger.info(f"Generating recommended filters from {len(event_summaries)} events")
223-
220+
logger.info(
221+
f"Generating recommended filters from {len(event_summaries)} events"
222+
)
223+
224224
response = self.client.chat.completions.create(
225225
model="gpt-4o-mini",
226226
messages=[

frontend/tsconfig.tsbuildinfo

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/components/clubsgrid.tsx","./src/components/eventlegend.tsx","./src/components/eventscalendar.tsx","./src/components/eventsgrid.tsx","./src/components/floatingeventexportbar.tsx","./src/components/footer.tsx","./src/components/githublink.tsx","./src/components/navbar.tsx","./src/components/quickfilters.tsx","./src/components/searchinput.tsx","./src/components/ui/badge.tsx","./src/components/ui/button.tsx","./src/components/ui/card.tsx","./src/components/ui/icon-button.tsx","./src/components/ui/input.tsx","./src/components/ui/select.tsx","./src/components/ui/tabs.tsx","./src/components/ui/tooltip.tsx","./src/data/staticevents.ts","./src/hooks/index.ts","./src/hooks/usecategoryparam.ts","./src/hooks/useclubs.ts","./src/hooks/usedocumenttitle.ts","./src/hooks/useeventselection.ts","./src/hooks/useevents.ts","./src/hooks/usenavbar.ts","./src/hooks/usenewslettersubscribe.ts","./src/hooks/usequickfilters.ts","./src/hooks/usesearchstate.ts","./src/hooks/usetheme.ts","./src/lib/clubtypecolors.ts","./src/lib/dateutils.ts","./src/lib/eventutils.ts","./src/lib/theme.tsx","./src/lib/utils.ts","./src/pages/aboutpage.tsx","./src/pages/clubspage.tsx","./src/pages/eventspage.tsx"],"version":"5.8.3"}
1+
{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/components/clubsgrid.tsx","./src/components/eventlegend.tsx","./src/components/eventscalendar.tsx","./src/components/eventsgrid.tsx","./src/components/floatingeventexportbar.tsx","./src/components/footer.tsx","./src/components/githublink.tsx","./src/components/navbar.tsx","./src/components/quickfilters.tsx","./src/components/searchinput.tsx","./src/components/ui/badge.tsx","./src/components/ui/button.tsx","./src/components/ui/card.tsx","./src/components/ui/icon-button.tsx","./src/components/ui/input.tsx","./src/components/ui/select.tsx","./src/components/ui/tabs.tsx","./src/components/ui/tooltip.tsx","./src/data/staticdata.ts","./src/hooks/index.ts","./src/hooks/usecategoryparam.ts","./src/hooks/useclubs.ts","./src/hooks/usedocumenttitle.ts","./src/hooks/useeventselection.ts","./src/hooks/useevents.ts","./src/hooks/usenavbar.ts","./src/hooks/usenewslettersubscribe.ts","./src/hooks/usequickfilters.ts","./src/hooks/usesearchstate.ts","./src/hooks/usetheme.ts","./src/lib/clubtypecolors.ts","./src/lib/dateutils.ts","./src/lib/eventutils.ts","./src/lib/theme.tsx","./src/lib/utils.ts","./src/pages/aboutpage.tsx","./src/pages/clubspage.tsx","./src/pages/contactpage.tsx","./src/pages/eventspage.tsx"],"version":"5.8.3"}

0 commit comments

Comments
 (0)