자산 수집 (Ingest)
상류 3개 프로젝트의 산출물을 한 챕터 워크스페이스로 모은다.
사전 조건
- 챕터 번호(1 이상 정수) 가 인자로 주어져야 함
- 최소한 ScriptForge의
ch{NN}_script.json은 존재해야 함 - FlowGenie 이미지·TTS 오디오는 부분 누락 가능 (경고만 하고 진행)
처리 단계
- 소스 경로 확인: 기본 ScriptForge 경로(
D:\00work\260416-scriptforge\output\ch{NN}\) 부터 확인, 없으면 사용자에게 물어본다. 외부 스테이징 폴더 사용 시--script-path,--images-dir,--audio-dir로 분리 지정. - 워크스페이스 생성:
workspace/ch{NN}/+ 하위images/,audio/,subtitles/,draft/폴더. - script.json 복사: 원본 수정 금지, 복사본만 사용. 대상 파일명은
script.json. - 이미지 수집 (아래 우선순위로 판정):
- 허용 확장자:
.png,.jpg,.jpeg(대소문자 무시).
ch{NN}_{SS}_*.{png,jpg,jpeg}패턴이 있으면 → 원본 파일명 그대로images/로 복사.- 없고 숫자로 시작하는 파일명(
16.jpeg,16_alice_springs_1.jpeg,01.png등)만 있으면 → 앞쪽 숫자를 씬 번호로 해석해ch{NN}_prefix를 붙여 복사. 예:16_alice_springs_1.jpeg→ch01_16_alice_springs_1.jpeg,01.png→ch01_01.png. 씬 번호 자리수는script.json의scenes[].scene과 일치. - 두 방식이 혼재하면 사용자에게 어느 쪽을 쓸지 확인.
- 허용 확장자:
- 오디오 수집 (아래 우선순위로 판정):
ch{NN}_{SS}_narration.{mp3,wav}패턴이 있으면 → 그대로audio/로 복사.- 없고 소스 폴더에 순수 숫자 파일명(
1.wav,01.wav,13.mp3등)만 있으면 → 숫자를 씬 번호로 해석해ch{NN}_{SS}_narration.{원본확장자}형태로 리네이밍 복사. 씬 번호 자리수는script.json의scenes[].scene과 일치시킨다(예: scene 값이1이면ch01_1_narration.wav,01이면ch01_01_narration.wav). - 두 방식이 혼재하면 사용자에게 어느 쪽을 쓸지 확인.
- 원본 불변: 소스 폴더의 어떤 파일도 리네이밍/이동/삭제하지 않는다. 정규화는
workspace/ch{NN}/쪽 사본에만 적용. - 검증 리포트: script.json의
scenes[].scene번호와 수집된 파일들의 씬 번호를 비교해 누락 보고. 리네이밍이 일어난 경우 요약 한 줄(예:오디오: 13.wav → ch01_13_narration.wav (20건 정규화됨)) 포함.
산출물
workspace/ch{NN}/ 아래에 script.json + images/ + audio/ + 빈 subtitles/ + 빈 draft/.