Reputation: 6122
I am trying to download all the videos from the playlist:
I am using youtube-dl for this and the command is:
youtube-dl -citk –format mp4 –yes-playlist https://www.youtube.com/watch?v=7Vy8970q0Xc&list=PLwJ2VKmefmxpUJEGB1ff6yUZ5Zd7Gegn2
But this only downloads the first video. Not sure what I am doing wrong.
Upvotes: 213
Views: 473893
Reputation: 1995
I found the best solution after many attempts at solving this problem.
Installation and usage;
For Windows users:
Script:
youtube-dl --ignore-errors --format bestaudio --extract-audio --audio-format mp3 --audio-quality 160K --output "%(title)s.%(ext)s" --yes-playlist https://www.youtube.com/playlist?list={your-youtube-playlist-id}
{your-youtube-playlist-id}
parameter with your YouTube playlist id.For macOS/Linux users:
Script:
youtube-dl --ignore-errors --format bestaudio --extract-audio --audio-format mp3 --audio-quality 160K --output "%(title)s.%(ext)s" --yes-playlist 'https://www.youtube.com/playlist?list={your-youtube-playlist-id}'
brew install youtube-dl ffmpeg
and install youtube-dl and ffmpeg for convert WebM to MP3. (Installation may take longer to install other dependencies.) (For Linux users: install youtube-dl ffmpeg
){your-youtube-playlist-id}
parameter with your YouTube playlist id.Upvotes: 44
Reputation: 4512
Basically, workaround for this problem could be simple replacing &
symbol with it's encoded version %26
For those who are struggling with this problem while doing it through PHP (e.g. shell_exec()
) , solution could be
str_replace("&", "%26", $shell_command);
Upvotes: 0
Reputation: 2267
youtube-dl <playlist link>
youtube-dl -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>
This command will download videos in 1080p resolution if 1080p is available otherwise it will download the next best (less than 1080p) resolution. Here, You can use 480 or 720, etc instead of 1080.
Note: Make sure that ‘FFmpeg’ is installed, otherwise video and audio will not be merged.
youtube-dl -o "[%(upload_date)s] %(title)s.%(ext)s" -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>
youtube-dl -o "[%(upload_date)s] %(title)s [%(uploader)s].%(ext)s" -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>
Subtitle
youtube-dl --write-auto-sub -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>
youtube-dl --write-sub -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>
youtube-dl --write-sub --sub-lang en -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>
Upvotes: 16
Reputation: 117
The easiest thing to do is to create a file.txt
file and pass the link url link so:
https://www.youtube.com/watch?v=5Lj1BF0Kn8c&list=PL9YFoJnn53xyf9GNZrtiraspAIKc80s1i
make sure to include the -a
parameter in terminal:
youtube-dl -a file.txt
Upvotes: 1
Reputation: 618
Your link is not a playlist.
A proper playlist URL looks like this:
https://www.youtube.com/playlist?list=PLHSdFJ8BDqEyvUUzm6R0HxawSWniP2c9K
Your URL is just the first video OF a certain playlist. It contains https://www.youtube.com/watch?
instead of https://www.youtube.com/playlist?
.
Pick the playlist by clicking on the title of the playlist on the right side in the list of videos and use this URL.
Upvotes: 10
Reputation: 197
I have tried everything above, but none could solve my problem. I fixed it by updating the old version of youtube-dl to download playlist. To update it
sudo youtube-dl -U
or
youtube-dl -U
after you have successfully updated using the above command
youtube-dl -cit https://www.youtube.com/playlist?list=PLttJ4RON7sleuL8wDpxbKHbSJ7BH4vvCk
Upvotes: 16
Reputation: 23174
Removing the v=...&
part from the url, and only keep the list=...
part. The main problem being the special character &
, interpreted by the shell.
You can also quote your 'url' in your command.
More information here (for instance) :
https://askubuntu.com/questions/564567/how-to-download-playlist-from-youtube-dl
Upvotes: 3
Reputation:
In a shell, &
is a special character, advising the shell to start everything up to the & as a process in the background. To avoid this behavior, you can put the URL in quotes. See the youtube-dl FAQ for more information.
Also beware of -citk
. With the exception of -i
, these options make little sense. See the youtube-dl FAQ for more information. Even -f mp4
looks very strange.
So what you want is:
youtube-dl -i -f mp4 --yes-playlist 'https://www.youtube.com/watch?v=7Vy8970q0Xc&list=PLwJ2VKmefmxpUJEGB1ff6yUZ5Zd7Gegn2'
Alternatively, you can just use the playlist ID:
youtube-dl -i PLwJ2VKmefmxpUJEGB1ff6yUZ5Zd7Gegn2
Upvotes: 347