글쓰는 개발자
[유튜브 영상 다운로드] pytube 를 yt_dlp로 변경하기 본문
이전글에 pytube로 유튜브를 다운받고 시간별로 잘라서 다운받는 웹 서버 개발까지 진행해 보았다.
처음 pytube를 사용하는 글에 적어두었지만 pytube는 만들어진지가 오래된것인지 일단 라이브러리의 직접적인 수정이 필요할 뿐아니라 고화질의 유튜브 영상을 다운받지 못하는 문제가 있다.
따라서 이번에는 다른 라이브러리인 yt_dlp를 사용해서 유튜브 다운로드를 구현해보도록 하자.
https://github.com/yt-dlp/yt-dlp
yt_dlp는 위 사이트에서 직접 release를 다운받아 command 명령어 형태로 실행할수도 있고 pip install문을 사용해 파이썬 내부에서 사용할수도 있다. 문제는 둘다 ffmpeg를 내부에서 사용하기 때문에 ffmpeg가 환경변수에 포함되어있어야 한다.
내 PC에 마우스 우클릭 - 속성에 들어가서 고급 시스템 설정 버튼을 누르고 환경변수를 버튼을 찾아 창을 띄운다.
환경변수 창에 사용자 변수화면에 path를 더블클릭해서 환경 변수 편집창에 내 ffmpeg가 설치된 폴더에 bin 폴더를 path에 추가해서 cmd 어디에서도 ffmepg가 실행되도록 한뒤 확인을 누르고 적용해준다.
pycharm을 사용중이었다면 pycharm내부에 터미널을 끄거나 pycharm을 껏다켜서 cmd의 변경이 적용될수 있도록 하고 yt_dlp를 설치해서 유튜브를 다운받을수 있는지 테스트해본다.
pip install yt-dlp
import yt_dlp
...
if __name__ == "__main__":
ydl = yt_dlp.YoutubeDL(
{
"format": f'best[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best',
"merge_output_format": 'mp4',
"outtmpl": {"default": '<다운로드 파일 PATH ex) h:/youtube/test.mp4>'},
"overwrites": True,
})
video_url = 'https://www.youtube.com/watch?v=<유튜브영상ID>'
ydl.download([video_url])
위와 같은 샘플 코드가 잘 동작하는지 확인하고 앞의 pytube의 다운로드 부분을 교체해주면 이제 높은 화질의 영상도 끊김없이 다운받고 편집할수 있는 유튜브 영상 다운로드 프로그램이 완성된다.
유튜브 주소로 타이틀을 얻어올때는 extract_info 함수를 사용한다.
info_dict = ydl.extract_info(video_url, download=False)
video_title = info_dict.get('title', None) + '.mp4'
yt_dlp 라이브러리에는 화질옵션뿐아니라 다운로드 실패시 혹은 스트리밍시, 혹은 나눠서 다운받기 등 다양한 옵션이 존재하니 더욱 세부적인 기능이 필요한 분들은 yt_dlp github에 가서 메뉴얼을 한번씩 보고 연구해 보는것도 좋을것 같다.
'IT 서비스 제작과정 > 개발' 카테고리의 다른 글
ios / android 앱 아이콘 만들기 (14) | 2024.09.07 |
---|---|
유튜브 다운로드 프로그램 웹 서빙 (0) | 2024.04.30 |
유튜브 영상 추출 다운로드 프로그램 개발 (0) | 2024.04.30 |
[업비트/차트데이터수집] 2단계 데이터베이스 연동 (0) | 2024.04.14 |
[업비트/차트데이터수집] 1단계 데이터베이스 설계 (0) | 2024.04.14 |