본문 바로가기
Python

pytube "AttributeError: 'NoneType' object has no attribute 'span'" 에러 해결방법

by 호빵맨 2022. 2. 9.

유튜브의 JS 가 업데이트 되면서 Pytube에 다음과 같은 에러가 발생하게 되었습니다.

AttributeError: 'NoneType' object has no attribute 'span'

한동안 해결이 안되었는데, 이번에 공식 깃헙에 해결 bug fix가 올라와 적용해 보니 잘 동잡합니다.

아직 공식적으로 업데이트가 되지 않아 임시로 해결 방안을 올립니다.

반응형

먼저 pytube 설치 디렉토리를 찾아야 합니다.

가상환경(venv)을 설치해서 사용하는 경우는

{vnev 경로}\lib\site-packages\pytube

가상환경(venv) 미설치 사용의 경우는

C:\Users\{사용자ID}\AppData\Local\Programs\Python\Python38\Lib\site-packages\pytube

리눅스의 경우 가상환경 사용시는 같습니다. 가상환경 미설치시의 경우는

{자신의 홈디렉토리}/.local/lib/python2.7/site-packages/pytube

해당 디렉토리로 이동하여 phaser.py와 chiper.py 두 파일을 다음과 같이 수정합니다.

 

chiper.py의 268번 라인을 다음과 같이 수정합니다.

        # r'a\.[A-Z]&&\(b=a\.get\("n"\)\)&&\(b=([^(]+)\(b\)', // 268번라인 주석처리
        r'([A-Za-z]{3})=function\(a\){var b=a\.split\(""\)\,'  // 새로 입력

 

phaser.py

    #func_regex = re.compile(r"function\([^)]*\)") //152번 라인 주석처리 
    func_regex = re.compile(r"function\(.*?\)")  //새로 입력

 

위와 같이 수정하면 정상 동작 합니다.

 

이글은 pytube가 업데이트 되면 닫습니다.

댓글