우리 아이를 위한 유튜브 동요 다운로더 제작기
육아 속에서 발견한 프로그래밍의 필요성
아이를 키우다 보면 예상치 못한 곳에서 프로그래밍의 필요성을 발견하게 됩니다. 제 경우는 아이에게 들려주는 유튜브 동요가 그런 계기가 되었어요. 매일 아침 홈팟에서 흘러나오는 동요는 우리 집의 일상이 되었는데, 문제는 그 과정이 생각보다 순탄치 않았다는 겁니다.
보통 동요 영상들이 1-2시간 길이로 되어있어서, 아이폰이나 맥북에서 유튜브 앱으로 틀고 홈팟으로 에어플레이를 하곤 했죠. 처음엔 잘 되는 것 같았지만, 시간이 지날수록 집 전체의 인터넷이 묘하게 느려지는 걸 느꼈습니다. 고화질 영상을 계속 스트리밍하다 보니 그런 것 같더라고요. 게다가 가끔 버퍼링이 걸리면 아이가 답답해하는 모습을 보며 '이건 뭔가 다른 방법이 필요하다'는 생각이 들었습니다.
유튜브 다운로더 검토
온라인에서 유튜브 다운로더를 찾아보니 광고가 너무 많고, 고화질 다운로드는 결제를 유도하더군요. '이거 그냥 내가 만들면 되겠는데?' 하는 생각이 들었습니다. GPT를 통해 파이썬의 yt-dlp 라이브러리를 소개 받았습니다.
코드는 생각보다 간단했습니다. 파이썬의 강력한 라이브러리 덕분에 50줄도 안 되는 코드로 원하는 기능을 모두 구현할 수 있었죠. 최고 화질의 MP4 포맷으로 다운받고, 진행률도 보여주고, 심지어 영상 정보까지 깔끔하게 표시해줍니다. 에러 처리도 해놓아서 URL이 잘못되더라도 친절하게 알려주도록 했습니다.
개발 과정과 육아의 시너지
GPT와 개발하면서 재미있었던 건, 이게 단순한 자동화 프로젝트가 아니라 육아의 한 부분이 되었다는 거예요. 아이가 좋아하는 동요를 골라서 다운받아두면, 이제는 인터넷 연결이 불안정해도 걱정 없습니다. 애플 디바이스에 넣어두고 필요할 때마다 재생하면 되니까요.
사실 이런 게 GPT개발의 매력이 아닐까요? 일상의 작은 불편함을 발견하고, 그것을 해결하기 위해 코드를 작성하고, 결과물이 실제로 도움이 되는 걸 보는 과정이 참 즐겁습니다. 특히 이번 프로젝트는 우리 아이의 일상과 직접 연결되어 있어서 더욱 의미가 있었죠.
코드 실행을 위한 준비
코드는 정말 간단합니다. 가상환경을 만들고 yt-dlp를 설치한 후, 제가 작성한 스크립트를 실행하기만 하면 됩니다. URL만 넣어주면 알아서 최고 품질로 다운받아주죠. 진행률도 보여주니 얼마나 남았는지 확인할 수 있고, 완료되면 친절하게 알려줍니다.
가상환경 실행 코드 샘플:
# 가상환경 생성 및 활성화
python3 -m venv youtube-dl-env
source youtube-dl-env/bin/activate
# 필요한 라이브러리 설치
pip install yt-dlp
유튜브 동요 다운로더 코드 샘플:
import yt_dlp
def download_youtube_video(url):
# 다운로드 옵션 설정
ydl_opts = {
'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best',
'outtmpl': '%(title)s.%(ext)s',
'progress_hooks': [lambda d: print(f'진행률: {d["_percent_str"]}' if d["status"] == "downloading" else "완료" if d["status"] == "finished" else "")],
}
try:
print("다운로드를 시작합니다...")
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
# 비디오 정보 출력
info = ydl.extract_info(url, download=False)
print(f"\n제목: {info['title']}")
print(f"길이: {info['duration']} 초")
# 다운로드 실행
ydl.download([url])
print("\n다운로드가 완료되었습니다!")
except Exception as e:
print(f"\n오류 발생: {str(e)}")
print("다운로드에 실패했습니다. URL을 확인하고 다시 시도해주세요.")
# 다운로드 받을 유튜브 영상 주소
video_url = "https://youtu.be/mSsWLnpN7k8?si=BdHpzhLR2vuLG9xn"
download_youtube_video(video_url)
결론: 육아와 프로그래밍의 만남
이제는 매일 아침 아이와 함께 동요를 들으며 하루를 시작하는 게 한결 수월해졌습니다. 버퍼링 걱정도 없고, 인터넷이 느려질 걱정도 없죠. 심지어 외출할 때도 다운받아둔 동요를 들고 다닐 수 있으니 일석이조입니다.
가끔은 이렇게 일상의 작은 문제를 해결하는 것에서 프로그래밍의 진정한 재미를 찾게 되는 것 같습니다. 육아와 프로그래밍이라는 전혀 다른 두 영역이 만나서 시너지를 내는 모습을 보면서, 앞으로도 이런 실용적인 문제 해결에 프로그래밍을 활용해볼 생각입니다. 여러분도 일상에서 마주치는 작은 불편함들, 한 번 코드로 해결해보는 건 어떨까요?