You can download video and audio files for offline viewing from a variety of websites using youtube-dl. Be sure to install ffmpeg as well for tagging.

# Grab an HD MP4 (720p or the next best LARGER size).
#
youtube-dl \
	--output "%(title)s (%(id)s).%(ext)s" \
	--format "bestvideo[width<=1280][height>540][ext=mp4]+bestaudio[ext=m4a]/bestvideo[width<=1920][height>720][ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" \
	--add-metadata "$URL"
 
# Grab the best quality video and audio. Will often get muxed into an MKV
# container rather than MP4, though sometimes you'll get something like
# WEBM.
#
youtube-dl \
	--output "%(title)s (%(id)s).%(ext)s" \
	--format "bestvideo+bestaudio" \
	--add-metadata "$URL"
 
# Grab the best single format file less than 200 MB.
#
youtube-dl \
	--output "%(title)s (%(id)s).%(ext)s" \
	--format "best[filesize<200M]" \
	--add-metadata "$URL"

Useful size specs:

Common video resolutions

NameWidth(Max) HeightNotes
480p854480DVD quality
540p960540“Quarter HD”, pretty uncommon (except on VHX)
720p1280720Often just called “HD”
1080p19201080Often called “Full HD”
Link to original

Most of the time, you’ll need a newer version of youtube-dl than is available in your distro’s repos… Or that can be installed using pip. The easiest way to get do this is to install youtube-dl at the system level (to make sure that all the dependencies are present), and then to grab the latest youtube-dl source code from GitHub and build it in a Python virtual environment.

virtualenv youtube-dl
cd youtube-dl
. bin/activate
 
# Run `pip install youtube-dl` here if you DON'T have the package
# installed at the system level. This will pull in all necessary deps
 
git clone https://github.com/ytdl-org/youtube-dl.git
cd youtube-dl
make
 
# DO NO `make install` however! Instead, just run using ./youtube-dl.