관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

컴퓨터 비전 4 - pafy로 유튜브 영상 연동 및 pytube로 유튜브 영상 다운로드하기 본문

인공지능/컴퓨터 비전

컴퓨터 비전 4 - pafy로 유튜브 영상 연동 및 pytube로 유튜브 영상 다운로드하기

huenuri 2024. 11. 8. 23:56

이어서 동영상을 실습하는 예제를 진행해 보겠다. 오늘은 낮잠을 많이 잔 관계로 밤늦게까지 공부를 이어갈 생각이다.


 

 

 

 

 

설치는 잘 되었는데 코드에 빨간줄이 떠서 제대로 된 코드인지 의심이 가기도 했다.

 

 

 

하지만 코드를 수행하면 이러한 오류가 뜬다.

 

 

 


 

 

 

코드 수정해보기

 

 

Jupyter Notebook 환경에서는 %pip install을 사용하는 것이 더 안정적이라고 한다. !로 하면 설치가 잘 되지 않을 수 있으니 %로 바꾸어서 다시 설치를 해주었다.

 

 

 

 

설치 후 제대로 설치되었는지 확인하는 코드를 하나 추가해 주었다.

 

 

 

 

이 코드는 youtube-dl을 최신 버전으로 설치하거나 다시 설치하기 위해 사용하는 명령어이다. 여기서는 git을 통해 youtube-dl의 최신 소스를 직접 가져와 설치하므로, 최신 버전이 아닌 경우 발생할 수 있는 문제를 해결하는 데 유용하다.


 

 

 

 

 

 

이 코드를 수없이 변경하여 실행해 보았지만 잘 되지 않았다. 마지막으로 한 번만 더 하고 안 되면 그냥 넘어가려고 한다.

AttributeError: module 'pafy' has no attribute 'set_backend' 오류가 발생하는 이유는 pafy 버전에 따라 set_backend 기능이 지원되지 않기 때문이다. 최신 버전의 pafy 라이브러리에서는 set_backend를 사용할 수 없는 경우가 있다.

이 문제를 해결하기 위해서는 pafy를 pafy의 최신 저장소에서 직접 설치하거나 pafy-backend-ytdlp라는 별도 모듈을 설치하여 yt-dlp와 함께 작동하도록 설정할 수 있다.


 

 

코드 다시 한번 수정하기

 

드디어 되었다. 영상 제목, 별점, 조회수, 제작자를 불러올 수 있었다.

 

 

뉴진스 유튜브 동영상

 


 

 

 

 

 

 

 

하지만 오류가 잔뜩 떴다. 이 오류는 pytube 라이브러리가 YouTube의 최신 업데이트에 의해 영향을 받아 제대로 동작하지 않을 때 발생할 수 있다. YouTube는 자주 변경되므로, pytube가 이를 반영하지 못할 경우 이런 HTTPError와 같은 문제가 발생한다.

pytube의 최신 버전을 업데이트하고, YouTube 영상을 다운로드하는 함수를 다시 작성해 보겠다. pytube의 apply_descrambler 문제는 최신 패치에서 해결되었으므로, 최신 버전으로 업데이트하는 것이 첫 번째 단계이다.


 

 

코드를 이처럼 수정했으나 오류가 발생했다. HTTP Error 400: Bad Request 오류는 YouTube API의 변경으로 인해 pytube가 영상을 가져오는 데 실패하는 경우 발생한다. YouTube는 자주 업데이트되기 때문에 pytube가 이를 따라가지 못하는 경우가 있다.

이 경우, YouTube 다운로드 라이브러리로 yt-dlp를 사용하는 것이 더 나은 대안일 수 있다. 


 

 

 

 

 

여기에 유튜브에서 받은 동영상이 저장되었다. 드디어 실행되다니 정말 뿌듯하다. 사실 이 코드는 수업 시간에 선생님도 헤매며 해결을 못해서 그냥 넘어갔던 예제였다. 하지만 스스로 해결할 수 있어서 정말 기쁘다.

 

 

 

실행해보니 동영상 화질은 원본에 비해 좋지는 않았다.


 

 

 

학습을 마치고

이번 단원은 정말 어려웠다. 하지만 해결되지 않는 문제를 끝까지 잡고 놓치지 않았더니 마침내 해결되었다. 나중에 필요한 동영상이 있을 때 이런 식으로 다운을 받으면 좋을 것 같다. 물론 외부 유출은 안 되고 개인 소장용으로 저장하고 싶을 때 사용해 볼 것이다.