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.