YouTube 채널 미러링 구현 - 파트3
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- Python 기반 자동화 스크립트 개발자
- YouTube 콘텐츠 로컬 백업/동기화 필요자
- Jekyll 기반 웹사이트 운영자
- 중간 수준의 CLI 도구 사용자
핵심 요약
- RSS 피드 파싱을 위해
feedparser>=6,<7
과yt-dlp
라이브러리 사용 - 비디오 ID 기반 중복 체크로 기존 다운로드 파일 재처리 방지
argparse
를 이용한--ignore-existing
/--whole-channel
명령어 옵션 구현
섹션별 세부 요약
1. 의존성 설정
requirements.txt
에yt-dlp
및feedparser
버전 명시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 연동 부분은 다음 포스팅에서 자세히 다룰 예정