Download Egghead.io videos using Lynx Browser and youtube-dl. This method will only work for videos that do not require a pro account.
You need a Unix/Linux box with Lynx console browser and Youtube-dl installed.
Installation on Ubuntu(may require sudo)
$ apt-get install lynx
Installation on Fedora(may require sudo)
$ yum install lynx
Installation on Mac OS X(using homebrew)
$ brew install lynx
For all other Operating Systems, use your default package manager.
Official installation docs
https://rg3.github.io/youtube-dl/download.html
EDIT: Since HLS videos are segmented into many small parts and youtube-dl requires ffmpeg to convert videos, you also need ffmpeg as written on this page.
The following example should work for Linux and Mac.
- Grab course or Lesson URL from egghead.io page
Examples:
https://egghead.io/courses/leverage-new-features-of-react-16
OR
https://egghead.io/lessons/react-error-handling-using-error-boundaries-in-react-16 - Assign this value to a variable, say 'url'.
$ url=https://egghead.io/courses/leverage-new-features-of-react-16
- Use the below command to download all videos for a course or a given specific lesson depending on the URL you provided in last step.
# Old script had a lot of issues on os such as freeBSD and mac
# New script is as below :
$ lynx -source $url | grep -o -e 'https://[^"]*.m3u8' | xargs -n1 youtube-dl -o "%(title)s.%(ext)s"
# You can also use CURL instead of lynx browser as in below script
$ curl -L $url | grep -o -e 'https://[^"]*.m3u8' | xargs -n1 youtube-dl -o "%(title)s.%(ext)s"
UPDATE: Doesn't work on Mac as pointed out in the comments by @toddzebert and others. Try solutions from Nithanaroy and mutalis instead.
grep
andxargs
have different options on Mac (as it's FreeBSD not GNU based), but while this modified code worked without error, it does not download the videoslynx -source $url | grep -E -o 'https?://[^"]*\.m3u8' | xargs -0 -n1 youtube-dl -o "%(title)s.%(ext)s"