Get video information from a list of playlist with youtube-dl
10,113
Solution 1
The variable you call video
actually holds the playlist information, not the video information. You can find a list of the individual video information in the playlist's entries
attribute.
See below for a possible fix. I renamed your video
variable to playlist
and took the freedom to rewrite it a bit and add output:
import textwrap
import youtube_dl
playlists = [
"https://www.youtube.com/playlist?list=PLRQGRBgN_EnrPrgmMGvrouKn7VlGGCx8m"
]
for playlist in playlists:
with youtube_dl.YoutubeDL({"ignoreerrors": True, "quiet": True}) as ydl:
playlist_dict = ydl.extract_info(playlist, download=False)
# Pretty-printing the video information (optional)
for video in playlist_dict["entries"]:
print("\n" + "*" * 60 + "\n")
if not video:
print("ERROR: Unable to get info. Continuing...")
continue
for prop in ["thumbnail", "id", "title", "description", "duration"]:
print(prop + "\n" +
textwrap.indent(str(video.get(prop)), " | ", lambda _: True)
)
Solution 2
run the command
youtube-dl --print-json https://www.youtube.com/playlist?list=<playlist_id> > example.json
you can also uses the --get
for retriving specific items for example
youtube-dl --get-title https://www.youtube.com/playlist?list=<playlist_id> > example.txt
Author by
Lara M.
Updated on June 07, 2022Comments
-
Lara M. about 2 years
I'm tryng to get some informations from a list of playlists in youtube with youtube-dl. I've written this code but what it takes is not the video's informations but the playlist informations (e.g. the playlist title instead of the video title in the playlist). I can't understand why.
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")
Any help will be appreciated.
-
Lara M. about 7 yearsThanks! I don't understand what
for video in playlist_dict['entries']: print()
does. What does it prints? -
xjcl about 7 yearsIt just prints an empty line to make it easier to tell the individual videos apart. It doesn't look that pretty if the description is long tho.
-
TipVisor over 4 yearshow to save it to text file?
-
xjcl over 4 years@TipVisor There's many ways to save it in a text file, just google for "Redirect stdout Python" =)