YouTube Channel Mirroring with Jekyll and Python (Part 2)

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_videofinal_ext, embedsubtitlesembed_subtitles
  • convert_thumbnailsFFmpegThumbnailsConvertor 등 옵션 이름 일치 문제 해결

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_cmdtitle.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 명령어로 메타데이터 처리 가능