Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
youtube-dl for downloading pluralsight videos

Downloading Videos from Pluralsight

Disclaimer

Pluralsight do not permit users to download their videos.
If you are an user of pluralsight you have agreed with their ToS,
and are thusly refrained from doing so.
Use this knowledge at your own risk.

youtube-dl for Windows

youtube-dl will allow you to download entire video series just by pasting in the link to the course. This includes english subtitles where applicable.

1. Download youtube-dl

You can get it here from their official web-site.

2. Create a bat script file

We need to create bat script that will store all the information we need to quickly and easily download videos from pluralsight. Create a new file and name it 'pluralsight.bat'. Put it in the same folder as youtube-dl.exe (from step 1).

3. Paste in the script in the file

for %%a in (%*) do (
.\youtube-dl.exe ^
--username YOUR-USERNAME-HERE ^
--password YOUR-PASSWORD-HERE ^
%%a ^
-o "C:/Users/YOUR-USERNAME-HERE/Videos/Pluralsight/%%(playlist)s/%%(chapter_number)02d - %%(chapter)s/%%(playlist_index)02d - %%(title)s.%%(ext)s" ^ --sleep-interval 35 ^
--max-sleep-interval 120 ^
--sub-lang en ^
--sub-format srt ^
--write-sub
)

  1. Remember to add your own username, password and the path to where you want the videos to be stored. Replace YOUR-USERNAME-HERE, YOUR-PASSWORD-HERE and YOUR-NAME-HERE.
  2. If you wish to change the formatting of the output video files, you can learn more about it here.

4. Begin downloading videos

In order to run the scripts, you need to open up a command prompt or Windows PowerShell. Navigate to the folder you have the script and youtube-dl.exe. Hold left-shift and right mouse click in the folder, and select 'Open PowerShell Window here' or the 'Command Prompt' equivalent.

All you have to do now in order to download pluralsight videos, is to run:

.\pluralsight.bat [URL-HERE]

You can also add multiple URLs, separated by a space:

.\pluralsight.bat [URL1] [URL2] [URL3]

If you open up a text editor (for copy/paste), you can also prepare all your URL in a similar fashion:

pluralsight-dl ^
[URL1] ^
[URL2] ^
[URL3]

URL is usually formatted similar to https://app.pluralsight.com/library/courses/some-course-name


youtube-dl for Linux

youtube-dl will allow you to download entire video series just by pasting in the link to the course. This includes english subtitles where applicable.

1. Download youtube-dl

You can get it here from their official web-site.

2. Create the bash script file

We are going to create bash script that will store all the information we need to quickly and easily download videos from pluralsight. Make sure you save it inside /bin, as it will allow us to run the 'pluralsight-dl' command from anywhere.

sudo touch /usr/local/bin/pluralsight-dl
sudo chmod a+rx /usr/local/bin/pluralsight-dl
sudo nano /usr/local/bin/pluralsight-dl

3. Paste in the script

#!/bin/bash
for i in "$@";
do

youtube-dl \
--username YOUR-USERNAME-HERE \
--password YOUR-PASSWORD-HERE \
"$i" \
-o "/home/YOUR-USERNAME-HERE/Videos/%(playlist)s/%(chapter_number)02d - %(chapter)s/%(playlist_index)02d - %(title)s.%(ext)s" \
--sleep-interval 35 \
--max-sleep-interval 120 \
--sub-lang en \
--sub-format srt \
--write-sub

done

  1. Remember to add your own username, password and the path to where you want the videos to be stored. Replace YOUR-USERNAME-HERE, YOUR-PASSWORD-HERE and YOUR-NAME-HERE.
  2. If you wish to change the formatting of the output video files, you can learn more about it here.

3. Begin downloading videos

All you have to do now in order to download pluralsight videos, is to run:

pluralsight-dl [URL-HERE]

You can also add multiple URLs, separated by a space:

pluralsight-dl [URL1] [URL2] [URL3]

If you open up a text editor (for copy/paste), you can also prepare all your URL in a similar fashion:

pluralsight-dl \
[URL1] \
[URL2] \
[URL3]

URL is usually formatted similar to https://app.pluralsight.com/library/courses/some-course-name

@dangxunb

This comment has been minimized.

Copy link

dangxunb commented Apr 11, 2017

Thank you very much, it worked!
My internet connection speed is the reason, if you want to know!

@rahul2333

This comment has been minimized.

Copy link

rahul2333 commented Dec 29, 2017

Hi ivanskodje

I have tried your trick and its giving me an error:

[pluralsight] ssis-adv-m1-0: Downloading course JSON
[pluralsight] ssis-adv-m1-0: Downloading mp4-high viewclip JSON
WARNING: Unable to download JSON metadata: HTTP Error 403: Forbidden
[pluralsight] ssis-adv-m1-0: Waiting for 3 seconds to avoid throttling
ERROR: No video formats found; please report this issue on https://yt-dl.org/bug
. Make sure you are using the latest version; type youtube-dl -U to update. B
e sure to call youtube-dl with the --verbose flag and include its complete outpu
t.

Can you pls fix this issue

@scor55

This comment has been minimized.

Copy link

scor55 commented Feb 26, 2018

@rahul2333 try to add your browser user agent into the .bat file

@tushar-mehndiratta-alt

This comment has been minimized.

Copy link

tushar-mehndiratta-alt commented Jun 28, 2018

It's showing error

D:\PluralSightDownloader>for %a in (https://www.pluralsight.com/courses/723a9c4f-79d2-467e-9b1f-71654ccaa3a2) do (.\youtube-dl.exe --username MyEmail@gmail.com--password MyPassword%a -o "D:/PluralSightDownloader/%(playlist)s/%(chapter_number)02d - %(chapter)s/%(playlist_index)02d - %(title)s.%(ext)s"  --sleep-interval 35 --max-sleep-interval 120 --sub-lang en --sub-format srt --write-sub )

D:\PluralSightDownloader>(.\youtube-dl.exe --username MyEmail@gmail.com--password MyPasswordhttps://www.pluralsight.com/courses/723a9c4f-79d2-467e-9b1f-71654ccaa3a2 -o "D:/PluralSightDownloader/%(playlist)s/%(chapter_number)02d - %(chapter)s/%(playlist_index)02d - %(title)s.%(ext)s"  --sleep-interval 35 --max-sleep-interval 120 --sub-lang en --sub-format srt --write-sub )

Here MyEmail@gmail.com and MyPassword is the email id and password of my account at pluralsight
Help Me with this

@tushar-mehndiratta-alt

This comment has been minimized.

Copy link

tushar-mehndiratta-alt commented Jul 1, 2018

Its showing this, Please help me with this

WARNING: The url doesn't specify the protocol, trying with http
Traceback (most recent call last):
  File "__main__.py", line 19, in <module>
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpkc931nsv\build\youtube_dl\__init__.py", line 472, in main
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpkc931nsv\build\youtube_dl\__init__.py", line 462, in _real_main
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpkc931nsv\build\youtube_dl\YoutubeDL.py", line 2001, in download
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpkc931nsv\build\youtube_dl\YoutubeDL.py", line 803, in extract_info
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpkc931nsv\build\youtube_dl\YoutubeDL.py", line 864, in process_ie_result
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpkc931nsv\build\youtube_dl\YoutubeDL.py", line 792, in extract_info
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpkc931nsv\build\youtube_dl\extractor\common.py", line 501, in extract
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpkc931nsv\build\youtube_dl\extractor\generic.py", line 2174, in _real_extract
  File "C:\Python\Python34\lib\urllib\parse.py", line 293, in urlparse
  File "C:\Python\Python34\lib\urllib\parse.py", line 343, in urlsplit
ValueError: Invalid IPv6 URL
@polesskiy-dev

This comment has been minimized.

Copy link

polesskiy-dev commented Jul 24, 2018

Don't forget to add "\" at the end of script lines. This works for me:

#!/bin/bash
for i in "$@";
do

youtube-dl \
--username name \
--password pass \
"$i" \
-o "/Users/apoliss/Downloads/courses/%(playlist)s/%(chapter_number)02d - %(chapter)s/%(playlist_index)02d - %(title)s.%(ext)s" \
--sleep-interval 35 \
--max-sleep-interval 120 \
--sub-lang en \
--sub-format srt \
--write-sub

done

bash pluralsight-dl

@ivanskodje

This comment has been minimized.

Copy link
Owner Author

ivanskodje commented Aug 19, 2018

Thank you @polesskiy-dev. Even though the '\' was present in the source code, it did not show up in preview. It has been fixed. 👍

@linuxbsdfreak

This comment has been minimized.

Copy link

linuxbsdfreak commented Sep 20, 2018

Hi,

Get the following error

ERROR: Unable to download JSON metadata: <urlopen error [Errno 1] _ssl.c:504: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version> (caused by URLError(SSLError(1, '_ssl.c:504: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version'),))
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 604, in _request_webpage
return self._downloader.urlopen(url_or_request)
File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 2211, in urlopen
return self._opener.open(req, timeout=self._socket_timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 404, in open
response = self._open(req, data)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 422, in _open
'_open', req)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/local/bin/youtube-dl/youtube_dl/utils.py", line 1139, in https_open
req, **kwargs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1184, in do_open
raise URLError(err)

Regards,
Kevin

@AC3

This comment has been minimized.

Copy link

AC3 commented Nov 16, 2018

Is it possible to use this script to auto download the course ie. when a course hits pluralsight the script runs and downloads the newest automatically ?

@Bakachimay

This comment has been minimized.

Copy link

Bakachimay commented Jan 16, 2019

Hi, tried the script for windows but doesn't work :

%a was unexpected

Any idea ? I'm not comfortable using batch files :/

@KamiGim

This comment has been minimized.

Copy link

KamiGim commented Feb 9, 2019

Can you help me, I got this error

ERROR: Unable to download webpage: HTTP Error 503: Service Temporarily Unavailable (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

@KamiGim

This comment has been minimized.

Copy link

KamiGim commented Feb 9, 2019

Can you help me, I got this error

ERROR: Unable to download webpage: HTTP Error 503: Service Temporarily Unavailable (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

For anyone that have the same issue, I get it work by change my vpn to America. Pretty weird solution, but it works

@lokeshsoni

This comment has been minimized.

Copy link

lokeshsoni commented Mar 14, 2019

Even I'm getting the "HTTP Error 503: Service Temporarily Unavailable" error :(

@MEasSYNCHRO

This comment has been minimized.

Copy link

MEasSYNCHRO commented Apr 6, 2019

Hi Team , Great Work Just One Concern I have Pluralsight access through my company and it didnt work for business account. Is there any suggestion for that. Its Saying invalid USERNAME password

@yashjahit-21705201

This comment has been minimized.

Copy link

yashjahit-21705201 commented Apr 7, 2020

How can I make it read multiple URL from a file?

@bintsiful

This comment has been minimized.

Copy link

bintsiful commented Apr 9, 2020

I'm getting this error after i followed the steps above
./pluralsight.sh https://app.pluralsight.com/library/courses/designing-complexity-aws

[pluralsight:course] designing-complexity-aws: Downloading JSON metadata
[download] Downloading playlist: Designing for Complexity on AWS
[pluralsight:course] playlist Designing for Complexity on AWS: Collected 28 video ids (downloading 28 of them)
[download] Downloading video 1 of 28
[pluralsight] Downloading login page
[pluralsight] Logging in
ERROR: Unable to download webpage: HTTP Error 403: Forbidden (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

@AbdElraoufSabri

This comment has been minimized.

Copy link

AbdElraoufSabri commented Apr 10, 2020

I'm getting this error after i followed the steps above
./pluralsight.sh https://app.pluralsight.com/library/courses/designing-complexity-aws

[pluralsight:course] designing-complexity-aws: Downloading JSON metadata
[download] Downloading playlist: Designing for Complexity on AWS
[pluralsight:course] playlist Designing for Complexity on AWS: Collected 28 video ids (downloading 28 of them)
[download] Downloading video 1 of 28
[pluralsight] Downloading login page
[pluralsight] Logging in
ERROR: Unable to download webpage: HTTP Error 403: Forbidden (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

Seems your account has been blocked

@SimonEast

This comment has been minimized.

Copy link

SimonEast commented Apr 18, 2020

Seems your account has been blocked

No, I think they have just tightened their security slightly. I was getting the 403 error until I added the following line to my config file:

-add-header Referer:https://app.pluralsight.com/library/courses/
@meir555

This comment has been minimized.

Copy link

meir555 commented Apr 18, 2020

for pluralsight, login to site, then use this chrome extension to extract you cookie, and use --cookie (without username ans password)

@le0li9ht

This comment has been minimized.

Copy link

le0li9ht commented Apr 19, 2020

[debug] Python version 2.7.17 (CPython) - Linux-5.3.0-46-generic-x86_64-with-Ubuntu-18.04-bionic
[debug] exe versions: none
[debug] Proxy map: {}
[pluralsight:course] threat-modeling-fundamentals: Downloading JSON metadata
[download] Downloading playlist: Threat Modeling Fundamentals
[pluralsight:course] playlist Threat Modeling Fundamentals: Collected 31 video ids (downloading 31 of them)
[download] Downloading video 1 of 31
[pluralsight] Downloading login page
ERROR: Unable to download webpage: HTTP Error 403: Forbidden (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 627, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 2238, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python2.7/urllib2.py", line 435, in open
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 548, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 473, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 556, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)

Erro coming for me i did all the above things. added header and user-agent as well.

@chdorb

This comment has been minimized.

Copy link

chdorb commented Apr 20, 2020

Same here, with the the referer and the cookie .pluralsight.com.

▶ youtube-dl --cookie /tmp/cookie.json --add-header "Referer:https://app.pluralsight.com/library/courses/" -o "./pluralsight_vue/%(playlist)s/%(chapter_number)s - %(chapter)s/%(playlist_index)s - %(title)s.%(ext)s" --min-sleep-interval 30 --max-sleep-interval 60 https://app.pluralsight.com/library/courses/vuejs-big-picture
[pluralsight:course] vuejs-big-picture: Downloading JSON metadata
[download] Downloading playlist: Vue.js: Big Picture
[pluralsight:course] playlist Vue.js: Big Picture: Collected 18 video ids (downloading 18 of them)
[download] Downloading video 1 of 18
[pluralsight] dfff6e87-87ce-4a71-a445-249cb672b6a0-0: Downloading JSON metadata
[pluralsight] dfff6e87-87ce-4a71-a445-249cb672b6a0-0: Downloading webm-high-widescreen viewclip graphql
[pluralsight] dfff6e87-87ce-4a71-a445-249cb672b6a0-0: Downloading webm-high-widescreen viewclip JSON
WARNING: Unable to download JSON metadata: HTTP Error 403: Forbidden
[pluralsight] dfff6e87-87ce-4a71-a445-249cb672b6a0-0: Waiting for 4 seconds to avoid throttling
ERROR: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
@Bam92

This comment has been minimized.

Copy link

Bam92 commented Apr 23, 2020

Seems your account has been blocked

No, I think they have just tightened their security slightly. I was getting the 403 error until I added the following line to my config file:

-add-header Referer:https://app.pluralsight.com/library/courses/

I tried this in my pluralsight-dl but I'm getting line 2: -add-header: command not found then ERROR: Unable to download webpage: HTTP Error 403: Forbidden. Do I miss something?

My pluralsight-dl looks like this:

#!/bin/bash
-add-header Referer:https://app.pluralsight.com/library/courses/\

for i in "$@";
do

youtube-dl \
--username you@pm.com \
--password pwd333 \
"$i" \
-o "/home/YOUR-USERNAME-HERE/Videos/%(playlist)s/%(chapter_number)02d - %(chapter)s/%(playlist_inde$
--sleep-interval 35 \
--max-sleep-interval 120 \
--sub-lang en \
--sub-format srt \
--write-sub
@meir555

This comment has been minimized.

Copy link

meir555 commented Apr 23, 2020

@Bam92
Change your IP.
If this happens again, change again.

@Bam92

This comment has been minimized.

Copy link

Bam92 commented Apr 24, 2020

I'll try it.

What about this error line 2: -add-header: command not found

@AbdElraoufSabri

This comment has been minimized.

Copy link

AbdElraoufSabri commented Apr 25, 2020

--add-header not -add-header

@Hagar-Ali

This comment has been minimized.

Copy link

Hagar-Ali commented Apr 28, 2020

after making the batch file in bin when i write:
cd \bin
and then:
pluralsight-dl https://app.pluralsight.com/library/courses/tensorflow-sentiment-analysis-recurrent-neural-networks/table-of-contents

nothing happen ?!

my file looks like this:
#!/bin/bash
for i in "$@";
do

youtube-dl \
--username h******@gmail.com \
--password ************* \
"$i" \
-o "/media/koki/C/Users/Koki/Downloads/Pluralsight" \
--sleep-interval 35 \
--max-sleep-interval 180 \
--sub-lang en \
--sub-format srt \
--write-sub \
--all-subs

with \ at the end of each line except the last one.

@minsc-boo

This comment has been minimized.

Copy link

minsc-boo commented May 1, 2020

thanks so much for the guide but has anyone had luck using the --download-archive command?
I'm on a dodgy connection so if the net cuts off halfway through a course download ital redownload everything again.
any ideas of a way around this? i can't figure out how to print an archive text let alone feed that back to the .bat

@minsc-boo

This comment has been minimized.

Copy link

minsc-boo commented May 2, 2020

even using a VPN I'm still getting 429: Too many requests around 10-14videos into a course?
for %%a in (%*) do (
.\youtube-dl.exe ^
--username redacted ^
--password redacted ^
%%a ^
-o "F:/PluralsightCourses2/%%(playlist)s/%%(chapter_number)02d - %%(chapter)s/%%(playlist_index)02d - %%(title)s.%%(ext)s" ^ --sleep-interval 35 ^
--max-sleep-interval 120 ^
--sub-lang en ^
--sub-format srt ^
--write-sub ^
--add-header referer:https://app.pluralsight.com/library/courses
)

@Bam92

This comment has been minimized.

Copy link

Bam92 commented May 2, 2020

@AbdElraoufSabri: I'd like to try the solution you give to @minsc-boo. I've created all files, but when I call pluralsight-dl, it is not recognized as an executable. How do you do?

@BORGESAG

This comment has been minimized.

Copy link

BORGESAG commented May 8, 2020

even using a VPN I'm still getting 429: Too many requests around 10-14videos into a course?
for %%a in (%*) do (
.\youtube-dl.exe ^
--username redacted ^
--password redacted ^
%%a ^
-o "F:/PluralsightCourses2/%%(playlist)s/%%(chapter_number)02d - %%(chapter)s/%%(playlist_index)02d - %%(title)s.%%(ext)s" ^ --sleep-interval 35 ^
--max-sleep-interval 120 ^
--sub-lang en ^
--sub-format srt ^
--write-sub ^
--add-header referer:https://app.pluralsight.com/library/courses
)

Try moving or duplicate after to password parameter. Here my script.bat is working, I have increased the interval:

@echo off
for %%a in (%*) do (
.\youtube-dl.exe ^
--add-header Referer:'https://app.pluralsight.com/library/courses/' ^
--username "email.com" ^
--password "password" ^
--max-sleep-interval 133 ^
--min-sleep-interval 90 ^
%%a ^
-o "%%(playlist)s/%%(autonumber)03d-%%(title)s.%%(ext)s" ^
--min-sleep-interval 90 ^
--max-sleep-interval 133 ^
--sub-format srt ^
--write-sub
)

@Mean-Sathyam

This comment has been minimized.

Copy link

Mean-Sathyam commented May 8, 2020

Can somebody please help me i have been trying in my mac....but my username is not recognised..thanks below is the code that i have executed...
#!/bin/bash

for i in "$@";
do

youtube-dl
--add-header Referer:https://app.pluralsight.com/library/courses/\
--username "XXXXXXXXX"
--password "XXXXXXXX"
"$i"
-o "/home/sathyamurthy/Videos/%(playlist)s/%(chapter_number)02d - %(chapter)s/%(playlist_index)02d - %(title)s.%(ext)s"
--sleep-interval 35
--max-sleep-interval 120
--sub-lang en
--sub-format srt
--write-sub

done

@NAbdulla1

This comment has been minimized.

Copy link

NAbdulla1 commented Jul 1, 2020

is there any option to download 360p or 480p videos?
this will be useful for the non-demo 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.