Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
download egghead videos

Download videos from egghead

Go to the egghead website, i.e. Building a React.js App

run

$.each($('h4 a'), function(index, video){
  console.log(video.href);
});

You will get the following list

https://egghead.io/lessons/react-building-a-react-js-app-notetaker-introduction
https://egghead.io/lessons/react-building-a-react-js-app-up-and-running-with-react-and-webpack
https://egghead.io/lessons/react-building-a-react-js-app-basic-routing-with-react-router
https://egghead.io/lessons/react-building-a-react-js-app-state-props-and-thinking-in-react
https://egghead.io/lessons/react-building-a-react-js-app-component-validation-with-proptypes
https://egghead.io/lessons/react-building-a-react-js-app-using-reactfire-to-add-data-persistence
https://egghead.io/lessons/react-building-a-react-js-app-managing-state-in-child-components
https://egghead.io/lessons/react-building-a-react-js-app-transitions-with-react-router
https://egghead.io/lessons/react-building-a-react-js-app-making-server-requests-in-react-with-axios
https://egghead.io/lessons/react-building-a-react-js-app-rendering-a-ui-of-dynamic-data
https://egghead.io/lessons/react-building-a-react-js-app-componentwillreceiveprops-and-react-router
https://egghead.io/lessons/react-building-a-react-js-app-es6-refactor-non-components
https://egghead.io/lessons/react-building-a-react-js-app-es6-refactor-createclass-to-javascript-classes-and-proptypes
https://egghead.io/lessons/react-building-a-react-js-app-es6-refactor-proptypes-in-es6
https://egghead.io/lessons/react-building-a-react-js-app-es6-refactor-routing-without-mixins
https://egghead.io/lessons/react-building-a-react-js-app-es6-refactor-firebase-and-react-binding-with-re-base

Steps:

  1. Save as list.txt

  2. brew install youtube-dl

  3. youtube-dl -a list.txt

Run this rename script to get rid of the Mojibake

for i in *mp4; do
   mv "$i" "`echo $i | sed "s/#.*//"`"'.mp4';
done
@BlancosWay

This comment has been minimized.

Copy link

BlancosWay commented Aug 6, 2015

Could not download the pro videos using this method.Any suggestions.I have copy pasted the video links in a file and ran that file using youtube-dl -a filename.txt

@sohilpandya

This comment has been minimized.

Copy link

sohilpandya commented Feb 28, 2016

@andyfaizan

This comment has been minimized.

Copy link

andyfaizan commented Apr 5, 2016

Doesn't work for the react redux series as well. I get the following error:

[generic] javascript-redux-the-single-immutable-state-tree?series=getting-started-with-redux: Requesting header
WARNING: Falling back on generic information extractor.
[generic] javascript-redux-the-single-immutable-state-tree?series=getting-started-with-redux: Downloading webpage
[generic] javascript-redux-the-single-immutable-state-tree?series=getting-started-with-redux: Extracting information
[Wistia] k41wmxv1eg: Downloading JSON metadata
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/local/bin/youtube-dl/main.py", line 19, in
File "/usr/local/bin/youtube-dl/youtube_dl/init.py", line 410, in main
File "/usr/local/bin/youtube-dl/youtube_dl/init.py", line 400, in _real_main
File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 1675, in download
File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 674, in extract_info
File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 732, in process_ie_result
File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 663, in extract_info
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 290, in extract
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/wistia.py", line 38, in _real_extract
AttributeError: 'list' object has no attribute 'items'

@SimonSelg

This comment has been minimized.

Copy link

SimonSelg commented May 12, 2016

You can use my little cli tool for this: https://www.npmjs.com/package/egghead-downloader
Made this some time ago because i wanted to dl the redux series too ;)

@philipkobernik

This comment has been minimized.

Copy link

philipkobernik commented May 17, 2016

thanks @SimonSelg !

@colinhoernig

This comment has been minimized.

Copy link

colinhoernig commented Jun 6, 2016

Thanks @SimonSelg. I've submitted a pull request to egghead-downloader in order to support links containing 'courses' (these are essentially 'series') as these are now used by Egghead.io.

@NeXTs

This comment has been minimized.

Copy link

NeXTs commented Jul 12, 2016

@SimonSelg @colinhoernig
You guys made my life easier today, thank you!

@syntacticsugar

This comment has been minimized.

Copy link

syntacticsugar commented Jul 13, 2016

Hello, I tried running egghead-downloader -c https://egghead.io/courses/up-and-running-with-typescript egghead-typescript/ (the latter directory being the directory I created in which to host the egghead videos) and I got Error: unsupported url!

Has this not been fixed? So far I had to manually download all the videos 😞

@aparij

This comment has been minimized.

Copy link

aparij commented Jul 31, 2016

Thanks @SimonSelg, works great !

@syntactsugar : Try with dot in the end for the local folder wher you run the script
Try "egghead-downloader -c https://egghead.io/courses/up-and-running-with-typescript egghead-typescript/ ."

@Bogdan-Ostapchuk

This comment has been minimized.

Copy link

Bogdan-Ostapchuk commented Aug 14, 2016

Is egghead-downloader allow to download only free cources? When I tried to download PRO cource I got "Error: Failed to parse the following lesson pages".

@Karthik248

This comment has been minimized.

Copy link

Karthik248 commented Sep 3, 2016

is it possible to assign indices for videos?

@joelhooks

This comment has been minimized.

Copy link

joelhooks commented Sep 5, 2016

You could just subscribe and you get an rss feed. Way easier!

@ellerbrock

This comment has been minimized.

Copy link

ellerbrock commented Sep 6, 2016

Egghead Video Download

Quick Introduction how to Download Egghead Videos for Offline View.

Repository: https://github.com/ellerbrock/egghead-video-download/

@hhsadiq

This comment has been minimized.

Copy link

hhsadiq commented Oct 18, 2016

brilliant. Worked like anything 👍

@corysimmons

This comment has been minimized.

Copy link

corysimmons commented Oct 31, 2016

@SimonSelg so ballin. Thanks! 💃

@dantejauregui

This comment has been minimized.

Copy link

dantejauregui commented Nov 14, 2016

hello @SimonSelg

i tried: egghead-downloader -c https://egghead.io/series/getting-started-with-redux really-awesome-series

but in my console i receive this fail message:

/usr/lib/node_modules/egghead-downloader/dist/app.js:4
let doTheMagic = (() => {
^^^
SyntaxError: Unexpected strict mode reserved word
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3

how can we do to run it correctly

@bastijns-jeroen

This comment has been minimized.

Copy link

bastijns-jeroen commented Nov 22, 2016

@dantejauregui your version of NodeJs is probably to low. It doesn't support ES6 syntax. Try to update your version of NodeJs to at least 6.x

@chanakasan

This comment has been minimized.

Copy link

chanakasan commented Jan 26, 2017

Pro users can use iTunes to download a series or single episodes

  1. Copy the PRO RSS Feed url from course's landing page.
  2. Open iTunes. File -> subscribe to podcast. Paste RSS feed url and press ok.
  3. The series will appear in Podcasts. You may right click and select Download all or click download icon near any lesson.
@chasen-bettinger

This comment has been minimized.

Copy link

chasen-bettinger commented Jan 30, 2017

egghead-downloader does not work for me. After I have downloaded the videos, I click on them to play; but, when the media player attempts to play them, a pop-up informs me that the file isn't playable.

@charlienewman

This comment has been minimized.

Copy link

charlienewman commented Jan 31, 2017

@bastijns-jeroen yes you're right - I had to upgrade my Node version from 5.5 to get this to work! Thanks @SimonSelg great app

@mysiar

This comment has been minimized.

Copy link

mysiar commented Feb 12, 2017

Does work for Getting Started with Redux
list below:

https://egghead.io/lessons/javascript-redux-describing-state-changes-with-actions?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-pure-and-impure-functions?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-the-reducer-function?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-writing-a-counter-reducer-with-tests?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-store-methods-getstate-dispatch-and-subscribe?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-implementing-store-from-scratch?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-react-counter-example?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-avoiding-array-mutations-with-concat-slice-and-spread?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-avoiding-object-mutations-with-object-assign-and-spread?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-writing-a-todo-list-reducer-adding-a-todo?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-writing-a-todo-list-reducer-toggling-a-todo?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-reducer-composition-with-arrays?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-reducer-composition-with-objects?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-reducer-composition-with-combinereducers?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-implementing-combinereducers-from-scratch?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-react-todo-list-example-adding-a-todo?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-react-todo-list-example-toggling-a-todo?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-react-todo-list-example-filtering-todos?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-extracting-presentational-components-todo-todolist?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-extracting-presentational-components-addtodo-footer-filterlink?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-extracting-container-components-filterlink?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-extracting-container-components-visibletodolist-addtodo?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-passing-the-store-down-explicitly-via-props?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-passing-the-store-down-implicitly-via-context?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-passing-the-store-down-with-provider-from-react-redux?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-generating-containers-with-connect-from-react-redux-visibletodolist?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-generating-containers-with-connect-from-react-redux-addtodo?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-generating-containers-with-connect-from-react-redux-footerlink?course=getting-started-with-redux
https://egghead.io/lessons/javascript-redux-extracting-action-creators?course=getting-started-with-redux
@santanu123456

This comment has been minimized.

Copy link

santanu123456 commented Feb 15, 2017

Hi, I am trying to download the Express Tutorial from egghead.io using your script. But Every time I get the error:

/usr/local/lib/node_modules/egghead-downloader/dist/app.js:4
let getCSRFToken = (() => {
^^^
SyntaxError: Unexpected strict mode reserved word
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:945:3

I have checked my node and npm versions also.

$ nodejs -v && npm -v
v0.10.48
2.15.1

Not able to resolved the problem. Please Help, if anyone have the tutorial plz share it with me. Thanks.

@ishanjain28

This comment has been minimized.

Copy link

ishanjain28 commented Mar 16, 2017

@santanu123456 upgrade nodejs to 6.xx, download new version from nodejs.org

@stevenirby

This comment has been minimized.

Copy link

stevenirby commented Apr 30, 2017

FYI - they recently changed things so you can no longer download their videos like this. They actually added a personal RSS feed, that you can use, to download all the videos.

See here how to generate an RSS URL: https://egghead.helpscoutdocs.com/article/38-watching-lesson-video-offline

OR just go to your membership page: https://egghead.io/membership

This is how I downloaded all the videos I wanted:

youtube-dl -i -o "~/<DIR>/%(title)s-%(timestamp)s.%(ext)s" "https://egghead.io/lessons/pro_feed?tech=angular2,css,js,node,react,rx,typescript,vue&user_email=<EMAIL>&user_token=<TOKEN>"

Moved all the videos into folders based on subject:

for f in *.mp4; do DIR="$( echo $f | sed 's/ -.*//')"; echo "$DIR"; mkdir -p "$DIR"; mv "$f" "$DIR"; done

Renamed all the videos filenames so they're sequentially named:

i=1; IFS=$'\n'; for f in $(ls -1tr *.mp4); do mv "$f" "$((i++))_-_$(echo ${f%-*}.${f##*.} | tr ' ' '_')"; done
@makslevental

This comment has been minimized.

Copy link

makslevental commented May 6, 2017

no membership necessary.

introducing react example:

in the console

vids = $.makeArray($(".up-next-list-item")).map(b=>b.href)

using python, selenium, chromedriver, beautifulsoup, requests

vids = ["https://egghead.io/lessons/javascript-redux-the-single-immutable-state-tree", "https://egghead.io/lessons/javascript-redux-describing-state-changes-with-actions", "https://egghead.io/lessons/javascript-redux-pure-and-impure-functions", "https://egghead.io/lessons/javascript-redux-the-reducer-function", "https://egghead.io/lessons/javascript-redux-writing-a-counter-reducer-with-tests", "https://egghead.io/lessons/javascript-redux-store-methods-getstate-dispatch-and-subscribe", "https://egghead.io/lessons/javascript-redux-implementing-store-from-scratch", "https://egghead.io/lessons/javascript-redux-react-counter-example", "https://egghead.io/lessons/javascript-redux-avoiding-array-mutations-with-concat-slice-and-spread", "https://egghead.io/lessons/javascript-redux-avoiding-object-mutations-with-object-assign-and-spread", "https://egghead.io/lessons/javascript-redux-writing-a-todo-list-reducer-adding-a-todo", "https://egghead.io/lessons/javascript-redux-writing-a-todo-list-reducer-toggling-a-todo", "https://egghead.io/lessons/javascript-redux-reducer-composition-with-arrays", "https://egghead.io/lessons/javascript-redux-reducer-composition-with-objects", "https://egghead.io/lessons/javascript-redux-reducer-composition-with-combinereducers", "https://egghead.io/lessons/javascript-redux-implementing-combinereducers-from-scratch", "https://egghead.io/lessons/javascript-redux-react-todo-list-example-adding-a-todo", "https://egghead.io/lessons/javascript-redux-react-todo-list-example-toggling-a-todo", "https://egghead.io/lessons/javascript-redux-react-todo-list-example-filtering-todos", "https://egghead.io/lessons/javascript-redux-extracting-presentational-components-todo-todolist", "https://egghead.io/lessons/javascript-redux-extracting-presentational-components-addtodo-footer-filterlink", "https://egghead.io/lessons/javascript-redux-extracting-container-components-filterlink", "https://egghead.io/lessons/javascript-redux-extracting-container-components-visibletodolist-addtodo", "https://egghead.io/lessons/javascript-redux-passing-the-store-down-explicitly-via-props", "https://egghead.io/lessons/javascript-redux-passing-the-store-down-implicitly-via-context", "https://egghead.io/lessons/javascript-redux-passing-the-store-down-with-provider-from-react-redux", "https://egghead.io/lessons/javascript-redux-generating-containers-with-connect-from-react-redux-visibletodolist", "https://egghead.io/lessons/javascript-redux-generating-containers-with-connect-from-react-redux-addtodo", "https://egghead.io/lessons/javascript-redux-generating-containers-with-connect-from-react-redux-footerlink", "https://egghead.io/lessons/javascript-redux-extracting-action-creators"]

from selenium import webdriver
from bs4 import BeautifulSoup
import requests

driver = webdriver.Chrome(executable_path='/home/maksim/chromedriver')
embeds = []
for v in vids:
    driver.get(v)
    src = driver.page_source
    soup = BeautifulSoup(src)
    embed = soup.find('source')['src']
    embeds.append(embed)
driver.close()
for i,e in enumerate(embeds):
    response = requests.get(e)
    with open("/home/maksim/Videos/"+vids[i].split('/')[-1], "wb") as handle:
        for data in response.iter_content():
            handle.write(data)
@rohmanhm

This comment has been minimized.

Copy link

rohmanhm commented May 8, 2017

@krokofant

This comment has been minimized.

Copy link

krokofant commented Jun 14, 2017

Download series

Browser console

copy(Array.from(document.querySelectorAll('.playlist-lessons-list a')).map(a => a.href).join('\n'))

Terminal (pbpaste is for macOS) - pipe clipboard to youtube-dl

pbpaste | youtube-dl -o "%(autonumber)s-%(title)s.%(ext)s" -a -

Source @krokofant

@tucq88

This comment has been minimized.

Copy link

tucq88 commented Jun 16, 2017

@krokofant it works. thanks mate.

Updated on July 21, It's not working anymore

@iezepov

This comment has been minimized.

Copy link

iezepov commented Jul 21, 2017

It seems that right now pure youtube-dl can do the trick:
youtube-dl https://egghead.io/courses/build-your-first-production-quality-react-app

@mcsheffrey

This comment has been minimized.

Copy link

mcsheffrey commented Jul 30, 2017

@iezepov Thanks! 👍

@larry27

This comment has been minimized.

Copy link

larry27 commented Aug 15, 2017

Hi everyone. I created package for downloading videos from egghead. Welcome https://www.npmjs.com/package/egghead-crawler

@vasilesmartup

This comment has been minimized.

Copy link

vasilesmartup commented Aug 16, 2017

Using this JS works:
$.each($('ul.scroller li a'), function(index, video){ console.log(video.href); });
Tried it with https://egghead.io/lessons/react-bootstrap-a-react-application-with-yarn-create-react-app

@nabeelaxr

This comment has been minimized.

Copy link

nabeelaxr commented Aug 16, 2017

@iezepov youtube-dl does the work, thanks 👍

@glukki

This comment has been minimized.

Copy link

glukki commented Aug 17, 2017

./download.sh "course-name"

#!/bin/sh
youtube-dl --download-archive "$1/archive.txt" -o "$1/%(playlist_index)s_%(title)s" "https://egghead.io/courses/$1"
@jasonzhouu

This comment has been minimized.

Copy link

jasonzhouu commented Oct 2, 2017

@iezepov youtube-dl does not work now.

@shivamkr19

This comment has been minimized.

Copy link

shivamkr19 commented Oct 2, 2017

@iezepov youtube-dl didn't work for me either.
But using it with Lynx worked for free videos.

# set course or lesson url in url variable
url=https://egghead.io/courses/leverage-new-features-of-react-16

# Downloads source from URL, finds playlist links and uses youtube-dl to download them.
lynx -source $url | grep -P -o 'https?://[^"]*\.m3u8' | xargs -d '\n' -n1 youtube-dl -o "%(title)s.%(ext)s"

https://gist.github.com/shivamkrjha/1b964f64bfe04d9d54e0668c6223b765

@npasparuhov

This comment has been minimized.

Copy link

npasparuhov commented Oct 3, 2017

youtube-dl doesn't work anymore, about a month ago i could download every video but now they change the game, someone with a proper solution?

@shivamkr19

This comment has been minimized.

Copy link

shivamkr19 commented Oct 5, 2017

@jasonzhouu @npasparuhov
In order to download videos using youtube-dl, this method currently works as of october 2017.

"hls_url":"https://d2c5owlt6rorc3.cloudfront.net/.../javascript-install-development-tools-for-preact-289981dbcb.m3u8"

m3u8_find

m3u8 is a playlist format which you can download using youtube-dl or FFMPEG. It is like a text file you can open in any text editor.

  • Copy the url and run the following command in terminal.
youtube-dl "https://d2c5owlt6rorc3.cloudfront.net/.../javascript-install-development-tools-for-preact-289981dbcb.m3u8"

If you are a Console/Linux/Mac Poweruser, You can take a look at my gist to make this process simple.
Gist: https://gist.github.com/shivamkr19/1b964f64bfe04d9d54e0668c6223b765

@Y-Taras

This comment has been minimized.

Copy link

Y-Taras commented Oct 7, 2017

@shivamkrjha
Here's a screenshot with error from that particular video that you've mentioned:
screenshot from 2017-10-07 08 37 15
What am I doing wrong?..

@Nithanaroy

This comment has been minimized.

Copy link

Nithanaroy commented Oct 10, 2017

@npasparuhov

This comment has been minimized.

Copy link

npasparuhov commented Oct 11, 2017

@shivamkrjha this method works for free videos so what about the PRO contect any idea how to get them?

@azdanov

This comment has been minimized.

Copy link

azdanov commented Dec 4, 2017

youtube-dl -cio '%(autonumber)s-%(title)s.%(ext)s' -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' https://egghead.io/courses/the-beginner-s-guide-to-reactjs --restrict-filenames

To download a course with best video/audio quality and a format of 00001-Introduction_to_The_Beginner_s_Guide_to_ReactJS.mp4

@gopiborra

This comment has been minimized.

Copy link

gopiborra commented Dec 4, 2017

@azdanov, Thanks!

@janaka120

This comment has been minimized.

Copy link

janaka120 commented Dec 4, 2017

Downloaded separate audio file & video file. So, would you please tell me how to resolve this issue.

Thanks.

@abhishek-nigam

This comment has been minimized.

Copy link

abhishek-nigam commented Dec 4, 2017

@azdanov, Thanks, buddy!

@zeenfaizpy

This comment has been minimized.

Copy link

zeenfaizpy commented Dec 4, 2017

@janaka120 install ffmpeg and then try it agian.

In mac, brew install ffmpeg

@corysimmons

This comment has been minimized.

Copy link

corysimmons commented Dec 5, 2017

Thank you @azdanov 🏄

@tuanluu-agilityio

This comment has been minimized.

Copy link

tuanluu-agilityio commented Dec 5, 2017

On MacOS:

brew install youtube-dl
youtube-dl https://egghead.io/courses/the-beginner-s-guide-to-reactjs

Note: youtube-dl just download courses FREE not PRO.

It's work fine for me. Thanks!

@ufthelp

This comment has been minimized.

Copy link

ufthelp commented Dec 5, 2017

3 easy steps for MacOS:

1. brew install youtube-dl

2. brew install ffmpeg

Note: Without installing ffmpeg, youtube-dl will download separate audio file & video file.

3. youtube-dl <video-url>

@uiyuvi

This comment has been minimized.

Copy link

uiyuvi commented Dec 8, 2017

How to download https://d2c5owlt6rorc3.cloudfront.net/build-a-toggle-component-294eac7226/build-a-toggle-component-294eac7226.m3u8 with audio.. I have tried may attempts stills getting only vieo or only audio... i couldn't get to download audio+video together

@kevinsmithwebdev

This comment has been minimized.

Copy link

kevinsmithwebdev commented Dec 9, 2017

@shivamkr19 - thank you. It's inelegant, but it works. Maybe it's the best we can do for now.

@amrdraz

This comment has been minimized.

Copy link

amrdraz commented Jan 9, 2018

I noticed that you can download the entire series by visiting while loggedin

`https://egghead.io/api/v1/series/${series_name}`

Example: https://egghead.io/api/v1/series/advanced-react-component-patterns

You should get something like this

{
  "id":166,
  "duration":4306,
  "title":"Advanced React Component Patterns",
  "slug":"advanced-react-component-patterns",
  "state":"published",
  ...,
  "lessons_url":"https://egghead.io/api/v1/series/advanced-react-component-patterns/lessons",
  "download_url":"https://egghead.io/api/v1/series/advanced-react-component-patterns/download?key=[token_is_here]",
  ...
  }

Copy the value of the download_url key and open it in the browser.
This will download the entire series as a zip file.

the zip file tends to be pretty big though, but then you could always go through each lesson and call the download_url for that lesson

or write a script that does that XD

@Leyart

This comment has been minimized.

Copy link

Leyart commented May 15, 2018

using the APIs to download the zip is definitely working for me and it is an elegant and quick solution, thanks

@eaorak

This comment has been minimized.

Copy link

eaorak commented Jun 19, 2018

@amrdraz, it works, thanks 👍

@eaorak

This comment has been minimized.

Copy link

eaorak commented Jun 20, 2018

I've created a simple project to download egghead videos by using the approach suggested by @amrdraz. It works fine atm. It uses Puppeteer to log in and call the egghead api. Comments and contributions are more than welcome.

https://github.com/eaorak/egghead-downloader

@salembeats

This comment has been minimized.

Copy link

salembeats commented Jul 2, 2018

I wrote a short userscript a couple months ago which allows Pro users to download videos or courses from the browser by appending #dl to the end of the URL.

It uses the API routes that @amrdraz found.

To install it, you need to have a userscript management extension added to your browser (I recommend Tampermonkey), then you click the Raw button in the Gist. The extension will recognize the URL pattern and prompt you to install:

https://gist.github.com/salembeats/4044adc4eeb708b25c705444e45dc55b

@goldnetonline

This comment has been minimized.

Copy link

goldnetonline commented Aug 4, 2018

I use this to get the video links, August 2018

console.clear()
var links = ""
$("a[data-click-handler=true]").each(function(ind , elem) {
    if(elem.href.match(/^https:\/\/egghead.io\/lessons/) ) 
		links += elem.href + "\n"; 
})
console.clear()
links
@cumibulat

This comment has been minimized.

Copy link

cumibulat commented Sep 19, 2018

@goldnetonline how to use your script ?

@Akshay090

This comment has been minimized.

Copy link

Akshay090 commented Oct 8, 2018

Just go to the Course page and paste the link in console
@cumibulat

@Gyvastis

This comment has been minimized.

Copy link

Gyvastis commented Oct 8, 2018

Should this suppose to work for premium content as well?

@a-eid

This comment has been minimized.

Copy link

a-eid commented Oct 26, 2018

this is a programatic way of doing what is described above, it's very basic
I might add to it later

https://github.com/a-eid/egghead-basic-downloader

@peebeebee

This comment has been minimized.

Copy link

peebeebee commented Mar 27, 2019

copy([...new Set(Array.from(document.querySelectorAll('[href^="/lessons"]')).map(a => a.href))].join('\n'))

@ijasxyz

This comment has been minimized.

Copy link

ijasxyz commented Apr 1, 2019

copy([...new Set(Array.from(document.querySelectorAll('[href^="/lessons"]')).map(a => a.href))].join('\n'))

Add a '/' after lessons to ignore /lessons link,

copy([...new Set(Array.from(document.querySelectorAll('[href^="/lessons/"]')).map(a => a.href))].join('\n'))

@saeedafroozi

This comment has been minimized.

Copy link

saeedafroozi commented Aug 8, 2019

I have read all the comments but still I could not download anythings.I will appreciate if some helps me to download some videos

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.