좋아, 난 pafy
을 사용하여 YouTube 동영상을 다운로드하는 간단한 스크립트를 만들려고했다. 현재 video
전역 변수에 문제가있어 pafy.new('url')
이 반환하는 값을 저장하는 데 사용합니다. 여기에 두 가지 기능은 내가 사용하는 것 :파이썬 pafy 글로벌 함수 호출 경계를 통해 작동하지 않습니다
video = {};
def downloadVideo():
options = {};
options['initialdir'] = 'C:\\';
options['mustexist'] = False;
options['title'] = 'Download folder';
dir_path = tkinter.filedialog.askdirectory(**options);
global video;
video.getbest(preftype="mp4").download(quiet=True, filepath=dir_path);
def get():
url = url_entry.get();
if url == '':
return
global video;
video = pafy.new(url);
# Some code to display video info
먼저 나는 Tkinter를 항목 위젯입니다 url_entry
에서 비디오를 얻을 수 get()
기능을 사용하십시오. 지금까지 너무 좋아,하지만 난 downloadVideo()
를 호출 할 때이 오류가 얻을 :
video.getbest(preftype="mp4").download(quiet=True, filepath=dir_path);
이 :
video.getbest(preftype="mp4")
실제로
NoneType
객체를 반환
AttributeError: 'NoneType' object has no attribute 'download'
파이썬 2 또는 3? 전역 변수를 사용하는 대신 마지막에'get video'를'return video '로 변경하고'downloadVideo'를 매개 변수로 사용하도록 변경하십시오 :'downloadVideo (video)'. 그렇게하면 지역 대 글로벌에 대해 걱정할 필요가 없으며 다른 문제를 발견 할 수 있습니다. 나는'get'을 호출하는 코드를 추측하고 있으며'downloadbideo'는'video'를 수정하여 getbest (...)가 None을 반환하도록합니다. – cxw
@cxw Python 3. Btw,'get()'과'downloadVideo()'를 호출하는 코드는'video'를 수정하지 않습니다. – DimChtz
좋습니다, 감사합니다. 나는 나의 첫 번째 논평을지지한다 : 전역을 사용하지 말라. 그 외에는 명백한 문제가 보이지 않습니다. 전역 변수를 끄고 여전히 문제가있는 경우 새 코드로 질문을 업데이트하고 큰 소리로 말하십시오. – cxw