YouTube 채널 미러링 구현 - 파트3
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

YouTube 채널 미러링 구현 - 파트3

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

- Python 기반 자동화 스크립트 개발자

- YouTube 콘텐츠 로컬 백업/동기화 필요자

- Jekyll 기반 웹사이트 운영자

- 중간 수준의 CLI 도구 사용자

핵심 요약

  • RSS 피드 파싱을 위해 feedparser>=6,<7yt-dlp 라이브러리 사용
  • 비디오 ID 기반 중복 체크로 기존 다운로드 파일 재처리 방지
  • argparse를 이용한 --ignore-existing/--whole-channel 명령어 옵션 구현

섹션별 세부 요약

1. 의존성 설정

  • requirements.txtyt-dlpfeedparser 버전 명시
  • feedparser>=6,<7 버전 요구사항 강조

2. URL 추출 기능

  • extract_feed_youtube_urls() 함수로 RSS 피드에서 비디오 URL 추출
  • feedparser.parse()를 사용한 데이터 파싱 후 link 필드만 필터링

3. 중복 비디오 필터링

  • filter_missing_videos() 함수로 기존 로컬 디렉터리와 URL ID 비교
  • pathlib.Path.rglob()로 디렉터리 내 비디오 ID 추출
  • set(url_video_ids) - set(directory_video_ids)를 통해 다운로드 대상 선별

4. CLI 명령어 처리

  • argparse를 사용한 --ignore-existing/--whole-channel 옵션 구현
  • --ignore-existing: RSS 피드 전체 다운로드
  • --whole-channel: 채널 전체 동기화(제목/설명 업데이트)

5. systemd 서비스 설정

  • mirror-yt 서비스 유닛 파일 생성 예시 포함
  • OnCalendar=Daily 타이머 설정으로 매일 자동 실행 가능

6. yt-dlp 설정

  • ydl_opts에서 no_overwrites, writesubtitles, writethumbnail 등 옵션 설정
  • %(id)s 변수를 활용한 출력 파일 경로 동적 생성

결론

  • 로컬 백업 시 기존 파일 재처리 방지 위해 비디오 ID 기반 필터링 필수
  • systemd 타이머를 통해 자동화된 매일 백업 실행 권장
  • Jekyll 연동 부분은 다음 포스팅에서 자세히 다룰 예정