如何使用Python更改youtube_dl的输出位置

4
我编写了一个Python脚本来下载一系列YouTube URL,我想通过我正在下载的主题更改输出文件夹。
例如,当我下载播放列表时,我希望该播放列表中的视频被下载到以当前播放列表命名的文件夹中。但是如果它是一个频道,则其中的视频应该放在以其上传者命名的文件夹中。
我如何知道我正在下载的URL是播放列表还是频道?由于选项在下载开始之前传递,因此我找不到一种方法来做到这一点。
以下是我的代码:
import sys
import yt_dlp

URLS = [
  'playlist_url',
  'channel_url',
]

dl_ops = {
  'outtmpl': 'd:/YouTube/%(uploader)s/%(title)s.%(ext)s'
}

retry_count = 0

def download_video(urls):
  try:
    with yt_dlp.YoutubeDL(dl_ops) as ydl:
      ydl.download(urls)
  except KeyboardInterrupt:
    print('Interruptted by user')
    sys.exit()
  except Exception as e:
    print(e)
    global retry_count
    if retry_count == 50:
      print('Retry count exceeded')
      sys.exit()
    retry_count += 1
    download_video(urls)

if __name__ == '__main__':
  download_video(URLS)

1
你可以先使用 download=False, process=False 调用 extract_info 方法来获取有关 URL 的一些信息,但是频道和播放列表的 _type 似乎都是 playlist - D Malan
嘿 @D-Malan,感谢你的帮助,你说得对。在 yt-dlp 中似乎不可能区分 playlistchannel,因为它们都被视为 playlist。我在 Reddit 上找到了一种替代方法,使用 playlist_title,它会输出当前的 channelplaylist 名称,这可能是最好的方法适合我。 - LaurenceY
1个回答

3
dl_ops = {
      'outtmpl': 'd:/YouTube/%(uploader)s/%(title)s.%(ext)s'
    }

你可以看到,在这一行中,你指定了一个路径为D:/YouTube/{上传者名称}/{视频标题}.{指定的扩展名}。为了让所有的视频都进入同一个文件夹,你只需要删除上传者后面的“/”,这样你的视频就不会有每个上传者各自的文件夹。
所以如果你想要文件名与视频名相同,你可以像这样做:
'outtmpl': 'D:/YouTube/%(title)s.%(ext)s'

因此,对于名为“Youtube vlog part 321”的视频,文件路径将是:

D:/YouTube/Youtube vlog part 321.mp4

或者任何你选择的格式(mp3,wav,avi,mkv等)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接