gpt4 book ai didi

python - 在 youtube_dl 进度 Hook 中获取下载视频的 URL

转载 作者:行者123 更新时间:2023-12-05 04:56:33 38 4
gpt4 key购买 nike

如何获取我正在使用 youtube_dl 下载的视频的 URL?

我可以使用进度 Hook 获取下载的其他特征,例如文件路径:

def progress_hook(response):
if response["status"] == "finished":
file_name = response["filename"]

ydl_opts = {
'progress_hooks': [progress_hook]
}

我还想获取文件的来源 URL。我不知道该怎么做。像 url = response["url"] 这样的东西会很好,但是 there aren't very many options带有进度 Hook 。

最佳答案

因为似乎没有办法做到这一点,所以我重组了我的程序,一次只下载一个,所以我很清楚正在下载哪个。

要使用它,您需要创建它的一个实例,将您要下载的 URL 列表传递给构造函数。

然后,当您准备就绪时,您可以对该对象调用 start_download_process。它将等到当前轨道完成并且 progress_hook 在下载另一个轨道之前完全完成。

class YoutubeManager:
def __init__(self, url_list):
self.base_url = "https://www.youtube.com"
self.current_download_url = ""
self.url_list = url_list

self.currently_downloading = False
self.current_download_count = 0

ydl_opts = {
'format': 'bestaudio/best',
'noplaylist': True,
'continue_dl': True,
'progress_hooks': [self.progress_hook],
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192', }]
}

self.youtube_dl_manager = youtube_dl.YoutubeDL(ydl_opts)


def start_download_process(self):
self.currently_downloading = True
self.current_download_count += 1

with self.youtube_dl_manager as youtube_dl_manager:
self.current_download_url = self.url_list.pop()
youtube_dl_manager.download([self.base_url + self.current_download_url])

def continue_download_process(self):
self.current_download_count += 1
with self.youtube_dl_manager as youtube_dl_manager:
self.current_download_url = self.url_list.pop()
youtube_dl_manager.download([self.base_url + self.current_download_url])

def progress_hook(self, response):
if response["status"] == "finished":
file_name = response["filename"]
print("Downloaded " + file_name)

# You can do something with self.current_download_url and file_name here

if len(self.url_list) != 0:
self.continue_download_process()
else:
self.currently_downloading = False

关于python - 在 youtube_dl 进度 Hook 中获取下载视频的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64884105/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com