이번 포스트에서는 파이썬을 이용하여 유튜브 영상을 다운로드하는 방법에 대해 알아보려고 합니다. 요즘은 TV를 안 보는 사람은 있어도 유튜브를 안 보는 사람은 거의 없을 정도로 유튜브는 세계 규모의 동영상 스트리밍 서비스이기도 합니다. 유튜브 동영상 다운로드 방법 유튜브에서 동영상을 다운로드하는 방법에는 직접 유튜브를 크롤링하여 영상 파일의 주소를 파악하고 주소를 파악하면 해당 주소로 동영상을 요청하여 유튜브 서버에서 직접 동영상을 다운로드하는 방법이 있습니다.출처 : 남 박사의 파이썬 알슬파잡 강좌그러나 이렇게 유튜브를 직접 분석하고 다운로드하는 방법은 초심자의 입장에서는 생각보다 조금 복잡한 내용이 많습니다. 상기의 화상은, 프레온에서 제공되는 남 박사 파이썬 강좌의 유튜브 동영상 다운로드 작성 화면입니다. 인 프레온에서 제공되는 유료 강좌에서도 유튜브 사이트를 분석하면 동영상 강좌에서 약 25분의 영상 2개로 이야기를 하고 있는데, 이 내용을 블로그에서 다루기에는 양이 너무 많아 문장만으로 이를 설명하면 그 양은 더욱 많아지므로, 여기에서는 이 방법에 대해서는 다루지 않습니다. 파이썬 유튜브 다운로드 Pytube물론 사이트를 직접 분석하고 동영상을 다운로드하는 방법은 크롤링 분석 능력과 공부를 위한 목적이지 그것이 편하는 방법은 아니에요. 단순히 어떻게 동작하는지는 관심이 없고 단지 유튜브 동영상 다운로드만 하는 것이 목적이라면 굳이 어려운 내용을 이해할 필요는 없습니다.출처:Pytube공식 문서파이썬에는 이미 유튜브 동영상 다운로드를 위한 몇 개의 라이브러리가 있습니다. 여기서는 가장 손쉽게 사용할 수 있는 Pytube라고 하는 라이브러리를 사용해 보겠습니다.핍 인스톨 파이튜브Pyton에서 YouTube 동영상을 다운로드하기 위한 Pytube 라이브러리는 위의 pip 명령을 통해 설치할 수 있습니다. 유튜브 동영상 분석pytubeimportyoutubeurl=”https://www.youtube.com/watch?v=x6wAMzjeIjo”yt=YouTube(url)print(yt.title)print(yt.length)print(yt.views)print(yt.yt.作成者)print(yt.thumbnail_url)상기 파이썬 코드는 pytube를 이용하여 url에 저장된 유튜브 주소의 동영상에서 제목, 길이, 조회수, 업로드자, 썸네일 주소의 정보를 출력하는 코드입니다. 기본적으로 유튜브 동영상을 다운로드하는 라이브러리는 동영상을 다운로드하기 위해서는 크롤링을 통해 다운로드 주소를 분석하는데, 이 과정에서 이러한 정보를 얻게 됩니다. 따라서 상기 코드와 같이 pytube 뿐만 아니라 대부분의 YouTube 동영상 다운로드 라이브러리는 상기와 같은 동영상 정보를 얻을 수 있습니다.코드를 실행해보면 위의 결과 이미지와 같이 해당 유튜브 동영상의 제목, 길이, 조회수, 작성자, 썸네일 정보가 출력되는 것을 확인할 수 있습니다. Python YouTube 동영상 화질유튜브는 기본적으로 144p 화질부터 작성자가 업로드한 동영상의 원본 화질까지 어떤 화질로 시청할지 설정할 수 있습니다. 유튜브와 같은 스트리밍 동영상 서비스는 기본적으로 각 화질에 대한 동영상 파일을 모두 따로 관리하여 사용자가 선택한 화질에 대한 파일을 대상으로 재생할 수 있도록 동작합니다.pytubeimportyoutubeurl=”https://www.youtube.com/watch?v=x6wAMzjeIjo”yt=youtube(url)forsinyt.pytube:print(s)파이썬 유튜브 동영상 다운로드 라이브러리인 pytube에서 위 코드와 같이 유튜브(url) 객체를 통해 url을 전달하면 이미 해당 url에 대한 분석이 끝나는데 이때 streams 객체에 이러한 화질 정보가 저장됩니다. 따라서 위 코드와 같이 리스트 형식으로 제공되는 streams 객체를 화면에 출력해보면위 이미지와 같이 해당 유튜브 url에 대한 화질 정보가 저장되어 있습니다. 물론 이런 내용은 어느 정도 상급 사용자를 위한 내용일 뿐 단순히 유튜브 동영상이 최고 화질로 내려받는 것이 목적이라면 몰라도 되는 내용이긴 합니다. 파이썬 pytube 유튜브 동영상 다운로드frompytubeimportyoutubeurl=”https://www.youtube.com/watch?v=x6wAMzjeIjo”yt=YouTube(url)data=yt.php。get_higest_resolution「data.download」단순히 유튜브 동영상을 다운로드하는 것이 목적의 전부라면, 상기의 코드처럼 쉽게 작성할 수 있습니다. 하면 get_highest_resolution()함수에 의해서 이용 가능한 최고 화질로 유튜브 동영상을 다운 받게 됩니다. 다운로드(“패스”)함수는 동영상이 보존되는 대상 폴더를 설정할 수 있지만, 만약 상기 코드처럼 “패스”가 생략되면 현재의 파이썬 파일이 실행된 현재의 패스에 저장됩니다. 그러나!!!!!파이썬 코드를 실행하면 동영상 다운로드는 못하고 상기의 화상처럼 pytube에 불확실한 에러가 발생합니다. 현재 pytube 12.1.0버전에는 독자적인 에러가 있습니다. 그러나 이 에러는 생각보다 단순한 내용이어서 직접 pytube소스 코드를 수정하고 사용하면 됩니다. 위의 화상을 보면”파이썬 설치 경로\lib\site-packages\pytube\cipher.py”파일의 34행에서 정규식 에러가 발생했다고 합니다. 우선 이 파일을 열 필요가 있는데, 그 패스를 찾기가 귀찮아서, 비주얼 스튜디오 코드의 링크 기능을 활용하고 pytube이 오류 지점에 링크를 통해서 이동하도록 하겠습니다.비주얼 스튜디오 코드 터미널 창에서 오류가 발생한 파일을 대상으로 키보드 컨트롤 키를 누른 상태에서 마우스를 오버시키면 위 이미지와 같이 링크 기능이 동작합니다. 이렇게 컨트롤+클릭하면 해당 파일의 해당 라인으로 이동합니다.오류는 34라인에서 발생했다고 했지만 오류의 원인이 되는 정규식은 30라인에 작성되어 있습니다. 이 코드를 수정하면 되는데요.#var_regex=re.compile(r”^\w+\W”)<==기존코드var_regex=re.compile(r”^\$*\w+\W”)<==수정된코드상기의 코드처럼 기존의 “^\w+\W”내용을 “.\$*\w+\W”로 변경하고 보존하면 됩니다. 그러자 pytube를 통해서 유튜브 동영상을 다운로드하는 데 아무 문제 없이 정상적으로 동작합니다. 유튜브 동영상 다운로드 후 콜라주 이미지 생성 완성 코드 개인적으로 프로그래밍은 응용력이 중요하다고 생각합니다. 그리고 초심자의 입장에선 이 응용력을 기르는 것은 쉽지 않아요. 문법적으로는 나타나는데 이를 활용하거나 다른 것을 만들어 보려는면 맨 인 블랙의 뉴 라 라이저에 노출된 것처럼 머릿속이 갑자기 깨끗하기도 합니다. 거기서 마무리 의미에서 유튜브 동영상 다운로드 후 이전 포스트에서 다룬 “파이썬과 fmpeg에서 동영상 썸네일 콜라주 마련”을 응용하고 코드를 작성하고자 합니다.위 코드와 같이 기존의 “^\w+\W” 내용을 “^\$*\w+\W”로 변경하여 저장하시면 됩니다. 그러면 pytube를 통해 유튜브 동영상을 다운받는데 아무 문제 없이 정상적으로 작동합니다. 유튜브 영상 다운로드 후 콜라주 이미지 생성 완성 코드 개인적으로 프로그래밍은 응용력이 중요하다고 생각합니다. 그리고 초보자 입장에서는 이 응용력을 키우기가 쉽지 않습니다. 문법적으로는 알겠지만 이걸 활용하거나 다른 걸 만들어보려고 하면 맨인 블랙의 뉴럴라이저에 노출된 것처럼 머릿속이 갑자기 깨끗해지기도 합니다. 그래서 마무리하는 의미에서 유튜브 동영상 다운로드 후 이전 포스트에서 다룬 파이썬과 fmpeg로 동영상 썸네일 콜라주 만들기를 응용하여 코드를 작성해보도록 하겠습니다.위 코드는 pytube 라이브러리를 사용하여 Pyton YouTube 동영상을 다운로드하는 코드와 이전 포스트에서 다룬 “Pyton과 fmpeg로 동영상 썸네일 콜라주 만들기” 코드를 혼합하여 작성한 코드입니다. 이전 코드와 크게 달라진 부분은 없지만, 이전 코드에서는 썸네일 크기를 thumb_width와 thumb_height 변수에 값을 고정하여 사용하였는데, 여기서는 thumb_width만 고정하고 유튜브 오리지널 영상 크기에 비례하여 thumb_height 값을 직접 계산하여 적용하도록 수정되었습니다.thumb_width=200module_height=int(height*(module_width/float(width))부분 코드로 보면 thumb_width는 200px로 고정했는데 유튜브 원본 영상의 비율이 어떻게 될지 모르기 때문에 thumb_height 값까지 고정하면 이미지가 찌그러지는 결과가 나올 수도 있기 때문에 다운로드한 유튜브 원본 영상에서 width, height 값을 구하고 원본 영상의 width 값이 thumb_width 값만큼 축소될 때 비율을 계산해서 높이에도 적용하는 방식입니다. 이 방식은 프로그래밍에서 이미지를 축소하고 확대할 때 매우 자주 사용되는 코드이기 때문에 한 번쯤은 이해하고 진행해야 하는 내용입니다.어쨌든 코드를 실행해보니 위 결과 이미지처럼 파이썬으로 유튜브 동영상을 다운받아 다운로드한 영상에서 9장의 이미지를 추출해 1장의 콜라주 이미지를 얻게 되었습니다.남 박사의 파이썬 기초부터 실전 100% 활용, 총 84개 수업, 24시간 40분 코딩을 모르는 입문자를 대상으로 파이썬 문법부터 실제 프로그래밍을 할 수 있는 수준까지를 다룹니다.남 박사의 파이썬 기초부터 실전 100% 활용, 총 84개 수업, 24시간 40분 코딩을 모르는 입문자를 대상으로 파이썬 문법부터 실제 프로그래밍을 할 수 있는 수준까지를 다룹니다.남 박사 파이썬으로 실전 웹사이트 만들기 총 38수업, 12시간 11분 파이썬을 활용하여 웹사이트를 제작하고 실제 운영 가능한 상태까지의 설정을 배우는 것을 목적으로 합니다.남 박사 파이썬으로 실전 웹사이트 만들기 총 38수업, 12시간 11분 파이썬을 활용하여 웹사이트를 제작하고 실제 운영 가능한 상태까지의 설정을 배우는 것을 목적으로 합니다.남 박사의 알찬 파잡! 파이썬 실용 프로젝트 총 68개 수업, 26시간 1분 파이썬을 통해 데이터베이스, 크롤링, 음성인식, 해킹툴 등을 만들면서 흥미로운 공부를 시작합니다!남 박사의 알찬 파잡! 파이썬 실용 프로젝트 총 68개 수업, 26시간 1분 파이썬을 통해 데이터베이스, 크롤링, 음성인식, 해킹툴 등을 만들면서 흥미로운 공부를 시작합니다!남 박사의 알찬 파잡! 파이썬 실용 프로젝트 총 68개 수업, 26시간 1분 파이썬을 통해 데이터베이스, 크롤링, 음성인식, 해킹툴 등을 만들면서 흥미로운 공부를 시작합니다!