我的 python youtube 视频下载器的问题

时间:2021-04-14 02:28:37

标签: python download youtube

大家好,我是 Python 新手,我正在尝试制作 YouTube 视频下载器,代码正在运行,但视频下载完成后未显示完成消息,我不知道为什么

代码:

from pytube import YouTube
link = input("VIDEO URL: ")

video = YouTube(link)

def done():
    print("Download Complete")

High_Quality_720p = video.streams.get_highest_resolution().download(output_path="/Users/tahaw/OneDrive/Desktop/download_path")
def highQ_vid_comp():
    print(video.register_on_complete_callback("Download Complete 720p"))

Low_Quality_360p = video.streams.get_lowest_resolution().download(output_path="/Users/tahaw/OneDrive/Desktop/download_path")
def lowQ_vid_comp():
    print(video.register_on_complete_callback("Download Complete 360p"))



for video in video.streams.filter(progressive=True):
    print(video)

res=input("Resolution(720p/360p): ")

if res == ("720p"):
    print(High_Quality_720p)
    highQ_vid_comp()
elif res == ("360p"):
    print(Low_Quality_360p)
    lowQ_vid_comp()

1 个答案:

答案 0 :(得分:0)

你的代码乱七八糟。

您在选择分辨率之前运行了两次 download() - 因此您下载了两种分辨率。

register_on_complete_callback 不需要字符串而是函数名,它将在完成时执行。

from pytube import YouTube

# --- functions ---

def on_progress(stream, chunk, bytes_remaining):
    print(' progress:', bytes_remaining, "           ", end='\r', flush=True)

def on_complete(stream, filename):
    print()
    print('--- Completed ---')
    print('stream:', stream)
    print('filename:', filename)
    
# --- main ---

# variables and CONSTANTS
OUTPUT_PATH = "/Users/tahaw/OneDrive/Desktop/download_path"
#OUTPUT_PATH = ""

# questions
link = input("VIDEO URL: ")
if not link:
    link = 'https://www.youtube.com/watch?v=aqz-KE-bpKQ'

video = YouTube(link)
video.register_on_progress_callback(on_progress)
video.register_on_complete_callback(on_complete)

#for item in video.streams.filter(progressive=True):
#    print('resolution:', item)

res = input("Resolution(720p/360p): ")

# getting stream

if res == "720p":
    selected_stream = video.streams.get_highest_resolution()
elif res == "360p":
    selected_stream = video.streams.get_lowest_resolution()
else:
    selected_stream = None
    
# downloading

if selected_stream:    
    filename = selected_stream.download(output_path=OUTPUT_PATH)
else:
    filename = '???'
    
print('--- After ---')    
print('filename:', filename)