프로젝트 소개

이 프로젝트는 평가된 시리즈 에피소드를 Sdílej.cz에서 Přehraj.to로 전송하는 작업을 처리합니다. 프로덕션 CR 데이터베이스에서 시리즈 및 에피소드 카탈로그를 읽기만 하며, 각 에피소드에 대해 소스를 찾고 SxxExx 레이블 일치, 화질, 언어를 검증한 뒤, 사용 가능한 최고 화질 등급에서 적합한 가장 작은 파일을 선택해 대상으로 직접 전송합니다. 러너에 영상이 저장되지 않습니다. 보안 경계: 데이터베이스 연결은 읽기 전용으로 열리고 매 내보내기 전에 SHOW transaction_read_only로 검증됩니다. 프로젝트에는 쓰기 SQL이 없습니다. 자격 증명은 오직 CI 비밀(DATABASE_URL, SDILEJ_EMAIL, SDILEJ_PASSWORD, PREHRAJTO_EMAIL, PREHRAJTO_PASSWORD)에만 속합니다. 대상 계정은 PREHRAJTO_EMAIL과 대조 확인되며 반드시 share.series@email.cz여야 합니다. 안정 매니페스트는 임시 인증 다운로드 URL을 저장하지 않으며 파일럿 업로드에는 생성된 계획의 SHA가 필요합니다. 연속 업로드는 첫 배포에 포함되지 않습니다. 이식 가능한 매니페스트: 검증된 각 소스는 에피소드당 JSON 한 줄로 manifests/selected-episodes.jsonl에 지속적으로 저장되며, 식별 정보, 메타데이터, 선택된 화질과 언어, 대상 display_name, selected.url(전송 중 현재 인증 스트림 주소를 다시 얻는 Sdílej.cz의 영상 상세 페이지)이 포함됩니다. 임시 CDN, 다운로드 또는 샘플 URL은 저장되지 않습니다. 매니페스트는 대상 계정과 독립적이며 업로드 후에도 레코드가 삭제되지 않으므로 다른 세션이나 허용된 다른 대상에 사용할 수 있습니다. 업로드 상태와 원자적 워커 예약은 state/episodes.json에 별도로 보관됩니다. 다른 대상에는 별도의 상태 파일이 필요합니다. 첫 안전 실행: 비밀을 설정하고 series_limit=1, episode_limit=1로 pilot-plan을 실행한 뒤 plans/pilot-plan.json을 검토하고, 동일한 SHA와 단일 에피소드로 pilot-upload를 실행하여 대상 영상을 확인한 다음에만 배치를 늘립니다. 로컬 검증: python -m venv .venv, .[test] 설치, pytest. 실제 소스 준비에는 FFmpeg, faster-whisper 및 CI 비밀과 일치하는 환경 변수가 필요합니다. 카탈로그 내보내기는 Whisper 없이도 작동합니다.