goodthings4me.tistory.com
다운로드해서 봐야 할 영상이 있어서 얼마 전 파이썬 모듈 pytube와 tkinter로 만든 유튜브 영상 다운로드 프로그램을 실행했는데 실행이 안되었다. 원인은 간단했지만, 다음에도 또 발생할 수 있어서 그 내용을 남기게 됐다.
유튜브 다운로드 파이썬 모듈 pytube의 에러 메시지와 조치 내역
전에 코딩한 소스코드를 찾아 실행해보니 에러 내용이 다음과 같았다.
Traceback (most recent call last):
File "d:\python\pytube\youtube_download_edit_1.py", line 57, in <module>
youtube_download(yt_url)
File "d:\python\pytube\youtube_download_edit_1.py", line 10, in youtube_download
video_streams = yt.streams
File "d:\python\pytube\venv\lib\site-packages\pytube\__main__.py", line 292, in streams
return StreamQuery(self.fmt_streams)
File "d:\python\pytube\venv\lib\site-packages\pytube\__main__.py", line 177, in fmt_streams
extract.apply_signature(stream_manifest, self.vid_info, self.js)
File "d:\python\pytube\venv\lib\site-packages\pytube\extract.py", line 409, in apply_signature
cipher = Cipher(js=js)
File "d:\python\pytube\venv\lib\site-packages\pytube\cipher.py", line 44, in __init__
self.throttling_array = get_throttling_function_array(js)
File "d:\python\pytube\venv\lib\site-packages\pytube\cipher.py", line 323, in get_throttling_function_array
str_array = throttling_array_split(array_raw)
File "d:\python\pytube\venv\lib\site-packages\pytube\parser.py", line 158, in throttling_array_split
match_start, match_end = match.span()
AttributeError: 'NoneType' object has no attribute 'span'
에러는 속성 에러인 'NoneType' object has no attribute 'span'
이런 메시지가 나온 이유에 대해 대충 추측해본 것은,
아마도 유튜브 html 소스가 변경되었고 해당 소스를 pytube 모듈에 반영하지 않았거나, 반영했다면 내 소스에 사용된 pytube 모듈을 업데이트해야 한다는 생각을 했다.
그래서 파이썬 해당 소스코드의 가상 환경에서 pytube를 삭제했다가 다시 설치했더니 정상적으로 코드가 실행되어 관련 영상을 다운로드하였다.
[국토부 그린 리모델링] 대전광역시 유성구 세동 주택 전체 인테리어 시공
문제는, pytube도 웹 크롤링 형태인 듯하고 그러다 보니 html 소스 변경 시 작동이 안 된다는 점인데, 사용하기 편하도록 tkinter로 만들어서 올려도 이런 상황이 벌어질 수 있다는 것이 영~ 찝찝하다. (나만 써야 하나~)
2022년 2월 2일,
프로그램 오류(AttributeError: 'NoneType' object has no attribute 'span')가 다시 발생하여
다시 해결 방법을 찾았다고 포스팅을 추가했으나(https://goodthings4me.tistory.com/564)
해결한 코드가 아니었다.
2022년 9월 5일
pytube 라이브러리가 정상적으로 작동하는 것 같아서 소스 코드를 일부 수정하여 실행해보았다.
https://goodthings4me.tistory.com/563
위 포스팅 글 코드로 유뷰브 영상 파일이 다운로드 되는 것을 확인했다.
'코딩 연습' 카테고리의 다른 글
엑셀 파일 병합하기 - openpyxl 활용 (0) | 2022.06.01 |
---|---|
python 가상 환경 오류 - 'activate' 용어가 cmdlet, 함수,... 조치 방법 (0) | 2022.05.26 |
내 아이피 찾아보기 [파이썬으로 공인 ip & 내부 ip 검색] (0) | 2022.05.12 |
엑셀 파일 합치기 [파이썬 openpyxl, pandas DataFrame] (0) | 2022.05.11 |
유튜브 영상 다운로드 (파이썬 라이브러리 pytube.YouTube) (1) | 2021.12.14 |
댓글