본문 바로가기
코딩 연습

유튜브 다운로드 에러 - 파이썬 pytube 오류 조치

by good4me 2022. 1. 25.

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 모듈을 업데이트해야 한다는 생각을 했다.

 

good4me.co.kr

 

그래서 파이썬 해당 소스코드의 가상 환경에서 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

 

유튜브 영상 다운로드 (파이썬 라이브러리 pytube.YouTube)

파이썬에는 유튜브 영상을 다운로드 할 수 있는 pytube 라이브러리가 있다. 이 라이브러리를 설치한 후 코드 몇 줄로 동영상을 다운로드해본다.   유튜브(youtube) 영상 다운로드 연습 코드 ## pip inst

goodthings4me.tistory.com

위 포스팅 글 코드로 유뷰브 영상 파일이 다운로드 되는 것을 확인했다.

 

댓글