Download an entire YouTube channel with youtube-dl and automatically resume if interrupted
Solution 1:
This answer won't work on older versions of youtube-dl. You need to update youtube-dl to the latest version. If you have Python installed on your system, you can install the latest version of youtube-dl locally inside a Python virtual environment, or you can download the latest version of youtube-dl and install it globally.
In Ubuntu 14.04 and later youtube-dl is also a snap package. To install it type:
sudo snap install youtube-dl # launch it with snap run youtube-dl
Open the terminal and type:
youtube-dl -f best -ciw -o "%(title)s.%(ext)s" -v <url-of-channel>
...where <url-of-channel>
is replaced by the URL of the channel.
Note: If you are downloading a lot of videos, you should change directories to the directory where you want to save the videos before you start downloading them.
Explanation
-f, --format FORMAT
video format code. The special name "best" will pick the best quality.
-c, --continue
force resume of partially downloaded files
-i, --ignore-errors
continue on download errors, for example to skip unavailable videos in a channel
-w, --no-overwrites
do not overwrite files
-v, --verbose
print various debugging information
Solution 2:
If you look youtube-dl man page you will see option to resume partial downloads.
-c, --continue
Resume partially downloaded files.
Man Page Link
Solution 3:
Perhaps this argument didn't exist when the question was asked, but using
--ignore-errors
will cause youtube-dl to continue downloading regardless of any errors. Use with caution, since a catch-all solution like this has the potential to cause problems if you miss an important error, although with a channel with 10k videos, you probably don't mind if a handful of them don't download properly.
In addition, using
--download-archive archive.log
will keep track of what's already been downloaded and will skip videos that you've already got, so if the script stops due to something like a power failure, when you run it again it won't try to re-download everything from the beginning.