Skip to content

Commit 70717c3

Browse files
authored
Merge pull request #14 from LeafCreeper/copilot/update-lecture-deduplication-logic
Fix lecture deduplication to apply on full lecture list, not just pending ones
2 parents 02d0ff9 + 73b8798 commit 70717c3

1 file changed

Lines changed: 16 additions & 12 deletions

File tree

main.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -182,25 +182,29 @@ def run():
182182

183183
db.upsert_course(course_id, course_title, teacher)
184184

185+
# Deduplicate by sub_title on the full lecture list first
186+
# (school system sometimes lists duplicates; doing this on the raw list
187+
# ensures consistent dedup across runs, not just for pending lectures)
188+
seen_sub_titles: set[str] = set()
189+
deduped_lectures = []
190+
for lec in lectures:
191+
title = lec.get("sub_title", "")
192+
if title and title in seen_sub_titles:
193+
print(f" [Dedup] Skipping duplicate: {title}"
194+
f" (sub_id={lec['sub_id']})")
195+
continue
196+
if title:
197+
seen_sub_titles.add(title)
198+
deduped_lectures.append(lec)
199+
lectures = deduped_lectures
200+
185201
# Find new lectures with playback + previously failed (unprocessed) ones
186202
known_processed = db.get_processed_sub_ids(course_id)
187203
new_lectures = [
188204
lec for lec in lectures
189205
if lec.get("has_playback")
190206
and str(lec["sub_id"]) not in known_processed
191207
]
192-
# Deduplicate by sub_title (school system sometimes lists duplicates)
193-
seen_titles = set()
194-
deduped = []
195-
for lec in new_lectures:
196-
title = lec.get("sub_title", "")
197-
if title in seen_titles:
198-
print(f" [Dedup] Skipping duplicate: {title}"
199-
f" (sub_id={lec['sub_id']})")
200-
continue
201-
seen_titles.add(title)
202-
deduped.append(lec)
203-
new_lectures = deduped
204208
# Also retry any previously inserted but unprocessed
205209
unprocessed = db.get_unprocessed_lectures(course_id)
206210
new_ids = {str(lec["sub_id"]) for lec in new_lectures}

0 commit comments

Comments
 (0)