█████████ ██████████ ██████ ██████ █████ ██████ █████ █████ ███░░░░░███░░███░░░░░█░░██████ ██████ ░░███ ░░██████ ░░███ ░░███ ███ ░░░ ░███ █ ░ ░███░█████░███ ░███ ░███░███ ░███ ░███ ░███ ░██████ ░███░░███ ░███ ░███ ░███░░███░███ ░███ ░███ █████ ░███░░█ ░███ ░░░ ░███ ░███ ░███ ░░██████ ░███ ░░███ ░░███ ░███ ░ █ ░███ ░███ ░███ ░███ ░░█████ ░███ ░░█████████ ██████████ █████ █████ █████ █████ ░░█████ █████ ░░░░░░░░░ ░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░
이 쥬피터 노트북은 Google Colab에서 작동하여 유저가 광고 없이 유튜브 영상을 yt-dlp를 기반으로 간단히 다운로드할 수 있게 하는 웹 GUI 대용 코랩 노트북입니다. ipywidgets로 URL 입력과 모드 선택, 포맷 미리보기 표를 제공하며, 선택한 포맷을 downloads/ 폴더로 저장합니다.
- URL 검사 및 메타데이터 수집:
yt_dlp.YoutubeDL(..., simulate=True)로 포맷 목록을 파싱 - 5가지 다운로드 모드 지원
- 비디오 전용 (VIDEO_ONLY)
- 오디오 전용 (AUDIO_ONLY)
- 비디오·오디오 각각 다운로드(고급) (SEPARATE_VIDEO_N_AUDIO, FFmpeg 병합 사용)
- 비디오·오디오 병합 파일 다운로드(간단) (PRE_MERGED_VIDEO_N_AUDIO)
- 썸네일 · 스토리보드 다운로드 (THUMBNAILS_N_STORYBOARDS, 미리보기 링크 제공)
- 포맷 목록을 pandas DataFrame → HTML 테이블로 렌더링하여 해상도·비트레이트·코덱·파일 크기 등을 확인
- 결과물은
downloads/폴더에 저장. 일부 모드에서는 영상 ID와 포맷이 포함된 규칙적 파일명으로 자동 변경
- 실행 환경: Google Colab
- 필수 패키지:
yt-dlp(노트북 셀에서 자동 설치),ipywidgets,pandas,natsort,beautifulsoup4 - FFmpeg: Colab에 기본 포함. 고급 병합 모드에서 사용(
FFmpegMerger)
- Colab에서 노트북을 열고 상단부터 셀을 순서대로 실행합니다. 첫 실행 시
yt-dlp가 설치됩니다. - 첫 위젯 영역에서 URL을 입력하고 CHECK! 버튼을 누릅니다. URL이 유효하면 포맷 메타데이터를 수집하고 download type 드롭다운이 나타납니다.
- download type에서 모드를 선택하면 해당 모드용 드롭다운과 포맷 표가 표시됩니다.
- 원하는 포맷을 드롭다운에서 선택하고 DOWNLOAD! 버튼을 클릭합니다.
- 결과 파일은 노트북 작업 디렉터리의 downloads/ 폴더에 생성됩니다.
노트북은 다운로드 직후 파일을 다음과 같은 규칙으로 이름을 바꿉니다.
- video only: downloads/{vid}_f{video_format}.{video_ext}
- audio only: downloads/{vid}_f{audio_format}.{audio_ext}
- video+audio(고급): downloads/{vid}_f{video_format}+{audio_format}.{final_ext}
- video+audio(간단): downloads/{vid}_f{media_format}.{media_ext}
모든 결과물은 downloads/ 폴더에 저장됩니다.
- 기본 템플릿은
downloads/%(title)s.%(ext)s이며, 후처리 단계에서 영상 ID(id)와 선택 포맷을 붙여 중복·혼동을 줄이는 형태로 변경합니다. - Colab 왼쪽 파일 패널에서 다운로드하거나
files.download(...)로 내려받을 수 있습니다.
연령 제한, 비공개 재생목록, 멤버십 전용 등 로그인이 필요한 컨텐츠는 일반적으로 실패합니다. 노트북에는 유저들로 하여금 다음 옵션을 이용 가능하게 합니다.
- 좌측 파일 패널에 cookies.txt를 업로드
- URL 체크 시
YouTubeURLMemory.set_url_with_cookie(URL, cookie_fpath="./cookies.txt")로 인증 쿠키 전달 - 노트북 내
warn_cookie_use()는 쿠키 사용 위험성과 브라우저 확장(예: EditThisCookie, GetCookies.txt)로 내보내는 방법을 안내 - 유저들에게는 기본적으로 비밀번호 로그인은 지원하지 않으며, 쿠키 사용은 본인 책임 하에 진행하고 YouTube/콘텐츠 제공자의 이용약관을 준수해야 한다고 안내합니다.
Gemini는 이 프로젝트의 AI 코딩 어시스턴트로서 다음 역할을 수행합니다.
- 토큰 절약을 위해, 어시스턴트는
my_youtube_download.ipynb에 대한 조회 권한이 주어지지 않으며, 해당 파일의 스크립트 형태 복사본인my_youtube_download.py상에서 작업합니다. - 파일 처리 로직, 상태 관리 등 프로젝트에 필요한 Python 코드를 작성합니다.
yt-dlp를 이용한 API 호출 및 파일 처리, 위젯 업데이트, 상태 관리를 위한 효율적인 앱 구조를 제안합니다.- 코드 오류, 플랫폼별 호환성 문제, 변환 로직의 버그를 찾아내고 해결책을 제시합니다.
- 위에 명시된 세부 기능 또는 개발자가 추가로 요구하는 기능을를 정확하게 구현하는 코드를 작성합니다.
이 문서를 바탕으로 프로젝트의 목표와 기술적 요구사항을 숙지하고, 성공적인 앱 개발을 위해 적극적으로 협력해 주시기 바랍니다.