2017-05-25 253 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