YouTube 채널 미러링을 위한 Jekyll 스크립트 개선 (2부)
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
Python 및 yt-dlp를 사용한 동영상 다운로드 자동화가 필요한 개발자 (중간 이상의 기술 수준)
핵심 요약
- yt-dlp API를 활용한 shell 스크립트 → Python 스크립트 전환:
--recode webm
,--embed-subs
등의 옵션을 Python의recode_video
,embed_subtitles
로 변환하여 사용 - 메타데이터 처리:
progress_hook
함수로 영상 다운로드 완료 후title.txt
,description.txt
생성 - cli_to_api.py 사용 권장:
--verbose
,--output
등의 CLI 옵션을 Python API 옵션으로 정확히 변환 가능
섹션별 세부 요약
1. 원본 shell 명령어 분석
yt-dlp
명령어를 Python API로 재구성--recode webm
,--embed-subs
등 주요 옵션 정리--exec
명령어로title.txt
,description.txt
생성
2. Python 스크립트 구현
YoutubeDL
클래스를 사용한 옵션 설정:
```python
ydl_opts = {
'verbose': True,
'subtitleslangs': ['en', 'it'],
'writesubtitles': True,
...
}
```
progress_hooks
함수로 메타데이터 처리:
```python
def write_meta_hook(d):
if d['status'] == 'finished':
# 파일 생성 로직
```
3. 옵션 이름 오류 수정
recode_video
→final_ext
,embedsubtitles
→embed_subtitles
convert_thumbnails
→FFmpegThumbnailsConvertor
등 옵션 이름 일치 문제 해결
4. `cli_to_api.py` 활용 방법
- 명령어를 Python API 옵션으로 변환:
```bash
python -m cli_to_api "--verbose"
```
- 결과:
```python
{'verbose': True, 'extract_flat': 'discard_in_playlist', ...}
```
5. 최종 스크립트 개선
pathlib
사용으로 경로 관리 강화exec_cmd
로title.txt
,description.txt
생성 로직 통합- 예시 실행:
```bash
python -m mirror_yt "https://www.youtube.com/channel/..."
```
결론
cli_to_api.py
를 사용해 CLI 옵션을 Python API로 정확히 변환할 것recode_video
,embed_subtitles
등 옵션 이름 확인 필수pathlib
사용을 통해 경로 관리 효율성 향상- 스크립트 실행 시
--exec
명령어로 메타데이터 처리 가능