2017-05-25 96 views
1

我试图从youtube-dl的youtube播放列表中获取一些信息。我已经编写了这段代码,但它所需要的不是视频的信息,而是播放列表信息(例如,播放列表标题,而不是播放列表中的视频标题)。我不明白为什么。从youtube-dl播放列表中获取视频信息

input_file = open("url") 
for video in input_file: 
    print(video) 
ydl_opts = { 
    'ignoreerrors': True 
} 
    with youtube_dl.YoutubeDL(ydl_opts) as ydl: 
       info_dict = ydl.extract_info(video, download=False) 
       for i in info_dict: 
        video_thumbnail = info_dict.get("thumbnail"), 
        video_id = info_dict.get("id"), 
        video_title = info_dict.get("title"), 
        video_description = info_dict.get("description"), 
        video_duration = info_dict.get("duration") 

任何帮助将不胜感激。

+0

首先,'video'在你的代码是指整个播放列表,而不是任何个人的视频。 – xjcl

回答

2

您调用video的变量实际上保存着播放列表信息,而不是视频信息。您可以在播放列表的entries属性中找到单个视频信息的列表。

请参阅下面的可能修复方法。我改名为你video变量playlist并采取了自由改写了一下,加上输出:

所有的
ydl_opts = { 
    'ignoreerrors': True, 
    'quiet': True 
} 

input_file = open("url") 

for playlist in input_file: 

    with youtube_dl.YoutubeDL(ydl_opts) as ydl: 

     playlist_dict = ydl.extract_info(playlist, download=False) 

     for video in playlist_dict['entries']: 

      print() 

      if not video: 
       print('ERROR: Unable to get info. Continuing...') 
       continue 

      for property in ['thumbnail', 'id', 'title', 'description', 'duration']: 
       print(property, '--', video.get(property)) 
+0

谢谢!我不明白'playlist_dict ['entries']中的视频:print()'。它打印什么? –

+0

它只是打印一个空行,以便更轻松地将各个视频分开。如果描述很长,它看起来并不漂亮。 – xjcl

相关问题