PlotPath의 데이터베이스를 구축하고 최신으로 유지하기 위해, 각기 다른 역할을 수행하는 4개의 Python 스크립트로 구성된 데이터 파이프라인을 구축했다. 이 파이프라인은 1차적인 대량 데이터 수집부터, 2차 전문 데이터 수집 및 교정, 3/4차 LLM을 이용한 지능적인 데이터 분류 및 보강까지, 체계적인 4단계로 구성된다.
tmdb_collector.py : 1차 대량 수집 (영화 & 실사 작품)python tmdb_collector.py --type movie --pages 5 와 같이 명령줄 인수를 통해 수집 대상(movie/tv)과 규모(pages)를 지정하여 스크립트를 실행한다.media_type='tv' & 장르='애니메이션'), anilist_collector에서 더 전문적으로 처리하도록 건너뛴다(Skip).work_identifier 테이블을 통해 DB에 이미 존재하는 작품인지 확인하고, 신규일 경우 INSERT, 기존 작품일 경우 UPDATE를 수행한다.work_type_mapping 테이블에 저장한다. (예: 영화 + 애니메이션 장르 → 'Movie', 'Animation' 타입 모두 저장)anilist_collector.py : 2차 전문 수집 및 정제 (애니메이션)python anilist_collector.py --pages 3 과 같이 실행하여 처리할 페이지 수를 지정한다.data_reconciler.py의 메인 함수(process_series_from_entry_point)를 호출한다.relations 정보를 분석하여, 관련된 모든 시즌(속편) 정보를 한 번에 파악한다.series 테이블을 조회하여 기존 시리즈를 찾거나, 없으면 새로 생성한다.work_identifier 확인) 검사한다.work 정보를 더 정확한 AniList의 데이터(줄거리, 에피소드 수 등)로 덮어쓰고, 올바른 seriesId를 다시 연결해준다.work로 DB에 추가하고, seriesId를 연결한다.format(MOVIE, TV 등) 정보를 바탕으로 한 규칙 기반으로 결정된다.type_fixer.py : 3차 데이터 클린업 (드라마 타입 교정)python type_fixer.py 를 실행한다. (내부적으로 처리량 조절 가능)work_type_mapping 테이블에 'Drama' 타입을 추가하여 데이터의 깊이를 더한다.llm_enricher.py : 4차 데이터 보강 (정보 채우기)python llm_enricher.py 를 실행한다. (내부적으로 처리량 조절 가능)titleKr = titleOriginal), 썸네일 또는 줄거리가 비어있는 작품을 찾는다.work 테이블의 해당 필드들을 UPDATE한다.모든 스크립트는 외부 API의 과도한 사용으로 인한 차단을 방지하기 위해 안전장치를 포함하고 있다.
time.sleep(0.5))을 주어, TMDB의 공식 요청 제한을 준수한다.anilist_collector는 각 시리즈를 처리하는 사이에 2초의 지연을 준다.data_reconciler는 한 시리즈 내의 여러 시즌 상세 정보를 조회할 때, 각 시즌 사이에 1초의 추가 지연을 주어, 짧은 순간에 요청이 몰려 429 Too Many Requests 오류가 발생하는 문제를 해결했다.