프로그래밍/Python

[Python] pytube에서 "KeyError('streamingData')" 오류 발생 문제

채윤아빠 2023. 5. 1. 16:11
728x90
반응형

문제점 및 증상

pytube를 이용하여 개인적인 유튜브 영상 다운로더를 만들어서 이용하고 있었는데, 얼마전부터 계속하여 "KeyError('streamingData')" 오류가 발생하며 영상 다운로드가 실패하였습니다.

KeyError: 'streamingData'

해결 과정

구글 검색을 통하여 여러 가지를 확인해 보니, pytube 패키지를 새로 설치해보라는 것들이 많아서 "pytube"를 제거하고, "pytube3"를 설치해보고 하였으나 오히려 다른 문제가 발생하였습니다.

...

  File "C:\Dev\Python\Python310\lib\urllib\request.py", line 563, in error
    return self._call_chain(*args)
  File "C:\Dev\Python\Python310\lib\urllib\request.py", line 496, in _call_chain
    result = func(*args)
  File "C:\Dev\Python\Python310\lib\urllib\request.py", line 643, in http_error_default
urllib.error.HTTPError: HTTP Error 410: Gone

다시 "pytube" 최신 버전을 새로 설치해봐도 동일한 부분에서 계속 문제가 발생하였습니다.


해결 방법

참고자료의 내용과 같이 YouTube 객체 생성자 호출할 때, "use_oauth=True, allow_oauth_cache=True" 매개변수를 추가하면, 문제가 해결됩니다.

    clip_url = f'{YOUTUBE_URL_PREFIX}{video_id}'
    yt = YouTube(clip_url, use_oauth = True, allow_oauth_cache = True)

위와 같은 매개변수를 입력하고 실행하면 다음과 같은 메시지가 출력됩니다.

Please open https://www.google.com/device and input code XXX-KHP-LTV
Press enter when you have completed this step.

위에 출력된 "XXX-KHP-LTV" 내용을 https://www.google.com/device 에 등록하고난 이후에는 위와 같은 오류가 재발되지 않고 정상적으로 다운로드가 됩니다.


2023-05-07 : 위 방법으로도 근본적으로 해결되는 것 같지는 않습니다.
됬다가 안됬다가 반복하는데, 아무래도 YouTube API 호출에 대한 제한이 걸리는 것 같습니다. 보다 근본적인 해결책을 찾으면 다시 정리하여 올리겠습니다.


참고자료