ytdl-org / youtube-dl

Command-line program to download videos from YouTube.com and other video sites
http://ytdl-org.github.io/youtube-dl/
The Unlicense
132.34k stars 10.03k forks source link

How to download the most popular playlist? #4148

Open kenorb opened 10 years ago

kenorb commented 10 years ago

So far I've tried suggestion from here, but without success. Is there any way of downloading the playlist by most popular (e.g. top 10)?

clampak commented 10 years ago

I added an answer to the stackexchange question. If you want just the top 10 from a playlist, you can just add --playlist-end 10 to the command line. Does that help, or are you asking something different?

kenorb commented 10 years ago

Thanks, it helps, but not for most popular.

The grid list of the page is sorted by popularity (e.g. here), but when you click on it, only the playlist sorted by the recent ones is loaded. In other words when clicking on the most popular video, on playlist it's shown as on xx position (not the 1st). So it seems like dynamic Popularity playlist doesn't exist at all. But it's achievable only by reading the grid from the page (videos?sort=p).

So testing from the command-line:

youtube-dl "https://www.youtube.com/user/Google/videos?sort=p" --playlist-end 5

and the first fetched video is Veterans Make Great Googlers (8ztbpW3THmI) which has around 300 view count, instead of 30m.

clampak commented 10 years ago

You're right, that's strange. I checked on that for a few different usernames, and it appears that despite returning the correct order on the webpage, dynamically it always returns the newest-to-oldest order.
You can also generate an rss playlist sorted by popularity, but youtube rss feed support youtube-dl is apparently broken at the moment. See #2491.

timss commented 9 years ago

I've been troubled with the same problem. Kind of annoying when you're trying to scrape the most popular videos from a channel and there is no ordered playlist available.

Please report back if any solution surfaces.

kenorb commented 9 years ago

Some workaround using curl:

URL="https://www.youtube.com/user/google/videos?sort=p"
videos=$(curl -s "$URL" | grep -o '/watch?v=[^"]*' | while read line; do echo "http://www.youtube.com$line"; done | uniq)
youtube-dl $videos

However it'll download the videos only from the 1st page.

AnnanFay commented 8 years ago

Is this still an issue?

I just realised I want this feature - google leads here.

I had a quick look - it seems like any simple change to the code would break the fix for #5778. If you download uploads as a playlist you can't sort them. The relevant code is near ./youtube_dl/extractor/youtube.py:2043

lord-carlos commented 5 years ago

This seems still to be an issue. Any work around? The script from @kenorb only gives the first 30 results.

Edit: A, found a workaround. In the Channel view I found a autogenerated playlist, presset "play all" and gave the link to youtube-dl with --yes-playlist parameter. It now downlaods the top 200 songs.

milahu commented 5 years ago

Edit: A, found a workaround. In the Channel view I found a autogenerated playlist, presset "play all" and gave the link to youtube-dl with --yes-playlist parameter. It now downlaods the top 200 songs.

edit, now i found it too ^^

channel ----> home ----> popular uploads ----> play all

copy the link and run

xclip -selection clipboard -o \
| xargs youtube-dl --yes-playlist --playlist-end 200

bash grammar narcissm ....

Some workaround using curl

as bash script in one pipe:

#!/bin/bash

echo "$@" \
| xargs curl -s \
| grep -o '/watch?v=[^"]*' \
| sed 's|^|https://www.youtube.com|' \
| uniq \
| xargs youtube-dl

[ i also added https ]

but yes, this will only load the first page

to get more than 200 "most popular" tracks ....

pagination for "filtered lists" is available either via google api key or by "sniff and fake" the youtube ajax traffic

.... or load more results in the browser select wanted links right click, run "copy selected links" [browser plugin] and run

#!/bin/bash

xclip -selection clipboard -o \
| xargs youtube-dl
ghost commented 4 years ago

So I need to download thumbnails for all the popular videos of a particular channel and when i try this method, youtube-dl gets stuck this is the input < youtube-dl -v --skip-download --write-thumbnail --yes-playlist --playlist-end 10 -o "/home/red/hss/kids/pinkfong/%(view_count)s-%(like_count)s-%(dislike_count)s" https://www.youtube.com/watch?v=PRSoRkM8GcM&list=PUes1EvRjcKU4sY_UEavndBw

and i get output as < [3] 6672 [red@red ~]$ [debug] System config: [] [debug] User config: [] [debug] Custom config: [] [debug] Command-line args: ['-v', '--skip-download', '--write-thumbnail', '--yes-playlist', '--playlist-end', '10', '-o', '/home/red/hss/kids/pinkfong/%(view_count)s-%(like_count)s-%(dislike_count)s', 'https://www.youtube.com/watch?v=PRSoRkM8GcM'] [debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8 [debug] youtube-dl version 2019.11.28 [debug] Python version 3.8.0 (CPython) - Linux-5.3.13-arch1-1-x86_64-with-glibc2.2.5 [debug] exe versions: ffmpeg 4.2.1, ffprobe 4.2.1, rtmpdump 2.4 [debug] Proxy map: {} [youtube] PRSoRkM8GcM: Downloading webpage [youtube] PRSoRkM8GcM: Downloading video info webpage [debug] Default format spec: bestvideo+bestaudio/best [youtube] PRSoRkM8GcM: Downloading thumbnail ... [youtube] PRSoRkM8GcM: Writing thumbnail to: /home/red/hss/kids/pinkfong/27524118-467915-19078.jpg

it gets stuck in the same position after this with no other thumbnails being downloaded Am i doing some mistake, can you please help me out?