Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Using youtube-dl to download courses from Pluralsight

Download courses from learning sites with youtube-dl

You can download whole courses from an array of tutorial sites with the CLI tool youtube-dl. In the example further down I'm using my Pluralsight account to get videos from a course at their site. Here is a list of all supported sites that you can download from with this tool

The flags you have to supply may vary depending on which site you make a request to.

You can get a free 3 month trial to Pluralsight by signing up for free to Visual Studio Dev Essentials

Installation

For macOS/UNIX

With brew for macOS:

brew install youtube-dl

With npm:

npm install youtube-dl

Or you can curl/wget the thing:

sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
For Windows

Download with npm as above or just download the exe-file from the link below and put the exe in your PATH.

Or download with npm like above.

Source: youtube-dl download

Usage

Example: download from Pluralsight

Run the following command in your terminal to download all the videos to the folder you are currently in. Substitute the example credentials with your own and supply a link to the course.

youtube-dl --username "youremail@example.com" --password "yourPassword" --verbose --sleep-interval 120 "link to course"

Example:

youtube-dl --username "youremail@example.com" --password "yourPassword" --verbose --sleep-interval 120 "https://app.pluralsight.com/library/courses/javascript-fundamentals/"

Add --all-subs if you want subtitles downloaded and --restrict-filenames if you have a problem with failing filenames on download.

UPDATE 2019-04-17

I haven't used this in a while and not tested it lately. But according to comments below by @mercxry (thank you!) this should work on atleast MacOS where you replace the username, password and path to your folder to your own credentials. This will also let you format the output better and categorize the files.

youtube-dl --username "username" --password "password" -o "~/path/to/course/folder/%(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/python-big-picture/ --playlist-start 1

I do not know which length of sleep-interval to use anymore, you have to try for yourself. Higher value -> safer but also slower.

IMPORTANT

The argument --sleep-interval 120 is important. It means that the program will wait 120s (2 minutes) before it downloads the next video. If you don't use this flag Pluralsight will ban you because you are doing too many requests under a short period of time. This interval was the sleep interval that was suggested 2 years ago when I first wrote this based on issues in the youtube-dl-repository. I have no idea how the interval holds up, it can probably be shorter.

We have blocked your account because our security systems have flagged your Pluralsight account for an unusual amount activity. This does mean a high volume of requests that are in the realm of a request every 10-30 seconds for a prolonged period of time. Please note that this high volume of activity is in violation of our terms of service [https://www.pluralsight.com/terms].

@indefinitelee

This comment has been minimized.

Copy link

commented Sep 21, 2017

Thanks for this - is there a way to set the path the download goes to?
currently getting this error on p1uralsit3:

Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by HTTPError())

none of the issues on the actual repo seemed to solve this. wondering if you've encountered it.

@troynall

This comment has been minimized.

Copy link

commented Oct 4, 2017

@indefinitelee I usually make a directory/folder. then cd to that folder via cli. then type youtube-dl blah blah blah....
NOW all your downloads will goto that newly created folder/directory.

@jesperorb

This comment has been minimized.

Copy link
Owner Author

commented Oct 24, 2017

@indefinitelee sorry, totally missed your comment. I usually just cd into a new folder and run the command there.

Haven't encountered that problem, make sure you have the latest version. I didn't just now and got some errors. Update fixed it.

@nafisfaysal

This comment has been minimized.

Copy link

commented Nov 11, 2017

@jesperorb after run the command I got --sleep-interval 120 not working

@chvvrajesh

This comment has been minimized.

Copy link

commented Nov 15, 2017

Unable to download the files from PluralSight using the utility. The below error is reported

Unable to download JSON metadata: HTTP Error 403: Forbidden

ERROR: No video formats found; please report this issue on https://yt-dl.org/bug

Any solution to this problem ?

@Shouting

This comment has been minimized.

Copy link

commented Nov 23, 2017

@chvvrajesh Reading the error output indicates you should report the issue on the given URL, rather than posting it here.

@ghost

This comment has been minimized.

Copy link

commented Nov 27, 2017

Is it compatible with Windows x64? Because the application doesn't run on my system

@dawsmac

This comment has been minimized.

Copy link

commented Nov 29, 2017

@chvvrajesh did you get this sorted in the end?

@awasum

This comment has been minimized.

Copy link

commented Dec 31, 2017

AM still having same problem here:

Unable to download JSON metadata: HTTP Error 403: Forbidden

ERROR: No video formats found; please report this issue on https://yt-dl.org/bug

Anyone with a solution?

@skippyV

This comment has been minimized.

Copy link

commented Jan 2, 2018

@awasum, yeah I just tried this last night (1/1/218) and got the same error: No video formats found.

A search of the issues at yt-dl.org shows this same issues was opened back in April of 2017. And it is still open.
ytdl-org/youtube-dl#12763
bummer.

@prodigy6630

This comment has been minimized.

Copy link

commented Jan 11, 2018

Is the minimum --sleep-interval 120 for PluralSight to avoid being banned or can I reduce this. If so, what is the minimum I can set. It's taking a long time to down the course/s I need.

@Anon-Exploiter

This comment has been minimized.

Copy link

commented Jan 26, 2018

Try This Out:

youtube-dl --username "username" --password "password" -o "%(playlist_index)s - %(title)s.%(ext)s" --min-sleep-interval 30 --max-sleep-interval 60 https://app.pluralsight.com/library/courses/ssh-telnet-protocol-deep-dive/ --playlist-start 1

Hope That Helps!

@milanmitric

This comment has been minimized.

Copy link

commented Jan 28, 2018

Is there a way to select (and download) videos with higher resolution?
As far as i can see, the resolution is 1280x720.

@strygul

This comment has been minimized.

Copy link

commented Jan 29, 2018

@jesperorb Thank you for the app! Totally cool! I was wondering if there s there a possibility to look under the hood? I am curious how you made it.
Cheers!

@strygul

This comment has been minimized.

Copy link

commented Jan 29, 2018

NVM, Google helped =)

@jesperorb

This comment has been minimized.

Copy link
Owner Author

commented Feb 7, 2018

I haven't used this in a while so might be some problems with it. If you got problems with the tool you should consult the github repo of the tool: https://github.com/rg3/youtube-dl/issues

Search the issues for your problem. This is just a guide of how I used it.

@strygul
It is not my app, I just put together instructions on how to use it :)

@prodigy6630
you have to check the issues page, I just took the interval from the official github repo. I do not know what the limit is actually.

@divya369

This comment has been minimized.

Copy link

commented Feb 24, 2018

I was downloading pluralsight courses, but now I don't know why the download speed of videos is reduced to approximately 20 kb/s even if the speed of the internet is in MB/s .

Please help me with this problem.

@nag5324

This comment has been minimized.

Copy link

commented Feb 28, 2018

I have also having same issue in download speed. Internet speed is 100Mbps but it is downloading in 15kbps. Please help to set the download speed. I have used command -r, --limit-rate 1000M, but no luck.

@pachako

This comment has been minimized.

Copy link

commented Mar 2, 2018

Hi,
I've checked the list of supported learning sites and unfortunately GNS3 academy is not amongst.
To make matters even difficult, one gets redirected to the actual server where the files are located after authenticating to another domain:
Log on server = https://sso.teachable.com/
Site with content: http://academy.gns3.com/courses

Is there any chance to have this/these sites included in the list ? as a one by one click-and-download is a real pain.

In advance thanks for your input.

@gagan0183

This comment has been minimized.

Copy link

commented Mar 3, 2018

Hi,
The speed of downloading pluralsight courses is close to 20kbps. Can you pls provide some input about how to increase that?

@mjwilkin9

This comment has been minimized.

Copy link

commented Mar 7, 2018

Is there a copyright/intellectual property issue with this? See Proprietary Materials section at https://www.pluralsight.com/terms

@vintageDarkKNIGHT

This comment has been minimized.

Copy link

commented Mar 16, 2018

Okay but where does the file gets downloaded??

@highwingers

This comment has been minimized.

Copy link

commented Apr 25, 2018

vintageDarkKNIGHT, same directory where youtube-dl.exe is placed.

@jeremejazz

This comment has been minimized.

Copy link

commented May 8, 2018

I have created a python script that works on files that ends with module numbers like m1-02, m2-01 ...
renamer.py
To run this just copy this outside course folder, then on your console type

python3 renamer.py [course-folder-name]

This will organize the files into directories m1, m2, m3... and move the suffixes to the first part of the file for easier sorting
This also works for python 2.7
I haven't tested it yet on windows yet but would be cool to drag and drop it over the file.

@mercxry

This comment has been minimized.

Copy link

commented Jul 1, 2018

I use this command to download courses, ordered by number and organized in directory, just change the url, the path, username and password

youtube-dl --username "username" --password "password" -o "~/path/to/course/folder/%(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/python-big-picture/ --playlist-start 1

Enjoy!

@shuboy2014

This comment has been minimized.

Copy link

commented Jul 14, 2018

@mercxry thanks

@saddok007

This comment has been minimized.

Copy link

commented Jul 15, 2018

############### Youtube-dl pluralsight course download issue #################
Hello, i have a problem to download video courses on pluralsight. i have python error and i'm sure that my python is version 3.6.
here's debug result :

C:\Users\Administrateur\Desktop\Nouveau dossier>pluralsight --verbose -o https
://app.pluralsight.com/library/courses/photoshop-cc-selections

C:\Users\Administrateur\Desktop\Nouveau dossier>for %a in (--verbose -o https://
app.pluralsight.com/library/courses/photoshop-cc-selections) do (.\youtube-dl.ex
e --username ************** --password ************* %a -o "C:/Users/BY
LKA/Videos/Pluralsight/%(playlist)s/%(chapter_number)02d - %(chapter)s/%(playlis
t_index)02d - %(title)s.%(ext)s" --sleep-interval 35 -i -w --max-sleep-interval
120 --all-subs --sub-format srt --write-sub )

C:\Users\Administrateur\Desktop\Nouveau dossier>(.\youtube-dl.exe --username
******* --password ************** --verbose -o "C:/Users/BYLKA/Video
s/Pluralsight/%(playlist)s/%(chapter_number)02d - %(chapter)s/%(playlist_index)0
2d - %(title)s.%(ext)s" --sleep-interval 35 -i -w --max-sleep-interval 120 --al
l-subs --sub-format srt --write-sub )
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--username', 'PRIVATE', '--password', 'PRIVATE', '-
-verbose', '-o', 'C:/Users/BYLKA/Videos/Pluralsight/%(playlist)s/%(chapter_numbe
r)02d - %(chapter)s/%(playlist_index)02d - %(title)s.%(ext)s', '--sleep-interval
', '35', '-i', '-w', '--max-sleep-interval', '120', '--all-subs', '--sub-format'
, 'srt', '--write-sub']
[debug] Encodings: locale cp1252, fs mbcs, out cp850, pref cp1252
[debug] youtube-dl version 2018.05.18
[debug] Python version 3.4.4 (CPython) - Windows-7-6.1.7601-SP1
[debug] exe versions: none
[debug] Proxy map: {'https': 'https://192.168.3.253:8080', 'http': 'http://192.1
68.3.253:8080', 'ftp': 'ftp://192.168.3.253:8080'}
WARNING: Long argument string detected. Use -- to separate parameters and URLs,
like this:
youtube-dl --username "**************" --password ************** --verbo
se -o "C:/Users/BYLKA/Videos/Pluralsight/%(playlist)s/%(chapter_number)02d - %(c
hapter)s/%(playlist_index)02d - %(title)s.%(ext)s" --sleep-interval 35 -i -w --m
ax-sleep-interval 120 --all-subs --sub-format srt -- --write-sub

Usage: youtube-dl.exe [OPTIONS] URL [URL...]

youtube-dl.exe: error: You must provide at least one URL.
Type youtube-dl --help to see a list of all options.

C:\Users\Administrateur\Desktop\Nouveau dossier>(.\youtube-dl.exe --username
********** --password ************** -o -o "C:/Users/BYLKA/Videos/Plura
lsight/%(playlist)s/%(chapter_number)02d - %(chapter)s/%(playlist_index)02d - %(
title)s.%(ext)s" --sleep-interval 35 -i -w --max-sleep-interval 120 --all-subs
--sub-format srt --write-sub )
[generic] %(playlist_index)02d - %(title)s: Requesting header
WARNING: Could not send HEAD request to C:/Users/BYLKA/Videos/Pluralsight/%(play
list)s/%(chapter_number)02d - %(chapter)s/%(playlist_index)02d - %(title)s.%(ext
)s:
[generic] %(playlist_index)02d - %(title)s: Downloading webpage
ERROR: Unable to download webpage: (caused b
y URLError('unknown url type: c',))

C:\Users\Administrateur\Desktop\Nouveau dossier>(.\youtube-dl.exe --username ******
--password ************** https://app.pluralsight.com/librar
y/courses/photoshop-cc-selections -o "C:/Users/BYLKA/Videos/Pluralsight/%(playli
st)s/%(chapter_number)02d - %(chapter)s/%(playlist_index)02d - %(title)s.%(ext)s
" --sleep-interval 35 -i -w --max-sleep-interval 120 --all-subs --sub-format sr
t --write-sub )
[pluralsight:course] photoshop-cc-selections: Downloading course JSON
[download] Downloading playlist: Photoshop CC Selections
[pluralsight:course] playlist Photoshop CC Selections: Collected 35 video ids (d
ownloading 35 of them)
[download] Downloading video 1 of 35
[pluralsight] Downloading login page
[pluralsight] Logging in
[pluralsight] photoshop-cc-selections-m1-0: Downloading course JSON
[pluralsight] photoshop-cc-selections-m1-0: Downloading mp4-high-widescreen view
clip JSON
[pluralsight] photoshop-cc-selections-m1-0: Waiting for 5 seconds to avoid throt
tling
[pluralsight] photoshop-cc-selections-m1-0: Downloading captions JSON
[info] Video subtitle en.srt is already present
[download] Sleeping 47.64 seconds...
ERROR: hostname 'vid5.pluralsight.com' doesn't match either of '.cachefly.net',
'loader.engage.gsfn.us', 'cf.cdn.cashnetusa.com', 'cf.cdn.onlineapplyadvance.co
m', 'cf.cdn.quickquid.co.uk', 'cf.cdn.poundstopocket.co.uk', 'cf.cdn.dollarsdire
ct.com.au', 'cf.cdn.dollarsdirect.ca', 'cdn.arstechnica.net', 'e4b-2.richrelevan
ce.com', 'static.readyflowers.com', 'ocp.cscglobal.com', 'cdn.m-pathy.com', 'cdn
.nexternal.com', 'cdn-w.gettraffic.com', 'cdn02.nord.com', 'cdn.speeddate.com',
'cache.green1020.com', 'cache.agilebits.com', 'cdn.smart-digital-solutions.com',
'cdn.richrelevance.com', 'cdn.muscleandstrength.com', 'cachefly.alfredapp.com',
'static.ahix.com', 'ssl-cdn.media.innity.net', 'cdn.selinc.com', 'images.conten
treserve.com', 'assets.yandycdn.com', 'images.overdrive.com', 'ssl-avd.innity.ne
t', 'cdn2.xsolla.com', 'software.onthehub.com', 'smartupdate1.centralpointnow.co
m', 'script.i-parcel.com', 'download.fosshub.com', 'cdn.civitatis.com', 'cdn.cdn
srvcache.com', 'cdn.zorosrv.com', 'www.sfw-cdn.com', 'code.murdoog.com', 'delive
ry.adrecover.com', 'apex.adpushup.com', 'tags.tagcade.com', 'cdn.pubvantage.com'
, 'cdnuat.nexternal.com', 'cdn.cmeden.com', 'img.tradepub.com', 'cdn.cdnfire.com
', 'www.hbd-cm.com', 'tags.creativedigitaliax.com', 'cdn.adpushup.com', 'cdn.vid
future.com', 'cdn.dbmvid.com', 'cdn.dbmvideo.com', 'cdn.dbmvids.com', 'vd.vidfut
ure.com', 'st-cdn01.net-perform.com', 'ewl.ec.tc', 'ew1.ec.tc', 'ew2.ec.tc', 'do
wnloads.oncenter.com', 'qastatic.richrelevance.net', 'cdnlibrary.skillport.com',
'cdnlibrary.skillport.eu', 'cdnlibrary.qual.skillport.com', 'cdncontent.skillso
ftcompliance.com', '
.contentreserve.com', '.cdn.overdrive.com', '.iconfinder.
com', '.od-cdn.com', '.scodle.com', '.rbxcdn.com', '.books24x7.com', '.over
drivechina.cn', '
.volotea.com', 'www.skillsoft.com', '.read.overdrivechina.cn'
, '
.listen.overdrivechina.cn'

Thanks to help as i enjoyed downloading courses to view offline because my connection is very poor.

@prasannakkk

This comment has been minimized.

Copy link

commented Jul 15, 2018

@mercxry im unable to download the videos, can you please provide me the example of your script, which is the path?

@itsthomas

This comment has been minimized.

Copy link

commented Jul 17, 2018

The download was working for one or two hours but now it's not working any more. This is the error:

ERROR: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by HTTPError()); please report this issue on https://yt-dl.org/bug .

Any help?

@ArjonBu

This comment has been minimized.

Copy link

commented Jul 24, 2018

Not working anymore. Pluralsight has changed their web app.

@killian2301

This comment has been minimized.

Copy link

commented Jul 26, 2018

@ArjonBu is right, doesn't work anymore...

@wboevink

This comment has been minimized.

Copy link

commented Aug 8, 2018

Not working anymore

@lehaidangdev

This comment has been minimized.

Copy link

commented Aug 11, 2018

It works so well!
@divya369 @gagan0183 just add -r rate to your code. My case is 5mb/s
Ex: youtube-dl --username "abc@xyz.com" --password "abc" -r 5.0M "https://app.pluralsight.com/library/courses/react-big-picture/table-of-contents"

@dxdinh

This comment has been minimized.

Copy link

commented Aug 13, 2018

@lehiadangdev: just wonder which os are you using? Can you post your verbose output?
I got the same errors as other posted. Here the debug info:

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'--username', u'PRIVATE', u'--password', u'PRIVATE', u'-r', u'5.0M', u'https://app.pluralsight.com/library/courses/dotnet-logging-using-serilog-opinionated-approach/table-of-contents', u'--verbose']
[debug] Encodings: locale cp1252, fs mbcs, out cp437, pref cp1252
[debug] youtube-dl version 2018.05.18
[debug] Python version 2.7.14 (CPython) - Windows-10-10.0.14393
[debug] exe versions: ffmpeg 4.0, ffprobe 4.0
[debug] Proxy map: {}
[pluralsight:course] dotnet-logging-using-serilog-opinionated-approach: Downloading course JSON
[pluralsight:course] dotnet-logging-using-serilog-opinionated-approach: Downloading JSON metadata
ERROR: Unable to download JSON metadata: HTTP Error 404: Not Found (caused by HTTPError()); 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.

File "c:\python27\lib\site-packages\youtube_dl\extractor\common.py", line 582, in _request_webpage
return self._downloader.urlopen(url_or_request)
File "c:\python27\lib\site-packages\youtube_dl\YoutubeDL.py", line 2211, in urlopen
return self._opener.open(req, timeout=self._socket_timeout)
File "c:\python27\lib\urllib2.py", line 435, in open
response = meth(req, response)
File "c:\python27\lib\urllib2.py", line 548, in http_response
'http', request, response, code, msg, hdrs)
File "c:\python27\lib\urllib2.py", line 473, in error
return self._call_chain(*args)
File "c:\python27\lib\urllib2.py", line 407, in _call_chain
result = func(*args)
File "c:\python27\lib\urllib2.py", line 556, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)

@lehaidangdev

This comment has been minimized.

Copy link

commented Aug 14, 2018

@dxdinh When I faced that errors. I've updated to new Python version, 3.7.0 and re-download youtube-dl. And it worked again.
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--username', 'PRIVATE', '--password', 'PRIVATE', '--yes-playlist', '-o', '%(playlist)s/%(chapter_number)s - %(chapter)s/%(playlist_index)s - %(title)s.%(ext)s', '--min-sleep-interval', '30', '--max-sleep-interval', '32', '-r', '5.0M', '--verbose', 'https://app.pluralsight.com/library/courses/aspdotnet-data/description']
[debug] Encodings: locale cp1252, fs mbcs, out cp437, pref cp1252
[debug] youtube-dl version 2018.08.04
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.17134
[debug] exe versions: none
[debug] Proxy map: {}
[pluralsight:course] aspdotnet-data: Downloading JSON metadata
[download] Downloading playlist: ASP.NET 3.5 Working With Data
[pluralsight:course] playlist ASP.NET 3.5 Working With Data: Collected 113 video ids (downloading 113 of them)
[download] Downloading video 1 of 113
[pluralsight] Downloading login page
[pluralsight] Logging in
[pluralsight] aspdotnet-databinding-i-0: Downloading JSON metadata
[pluralsight] aspdotnet-databinding-i-0: Downloading mp4-high viewclip graphql
[pluralsight] aspdotnet-databinding-i-0: Waiting for 5 seconds to avoid throttling

@dagasonhackason

This comment has been minimized.

Copy link

commented Aug 21, 2018

@strygul is not really that difficult u write a socket program connect by the username and password parameter supplied by the command from the user then all u have to do is save the cookie generated by the code write code to extract it from the response to the server from now on on sending any request to the server u add that cookie to the header part of the code before writing it to the socket simple as that works for every system like this. Most people for security reasons will have their cookies logged in their server side Dn then give them expires so until the cookie expires that cookie can make request to authenticated parts of the site like places that need authentication before one can receive a response

@Kekson

This comment has been minimized.

Copy link

commented Aug 31, 2018

@mercxry Thanks a lot !

@aniruthmp

This comment has been minimized.

Copy link

commented Sep 20, 2018

youtube-dl --username "****" --password "****" --verbose --sleep-interval 120 "https://app.pluralsight.com/library/courses/domain-driven-design-legacy-projects"
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'--username', u'PRIVATE', u'--password', u'PRIVATE', u'--verbose', u'--sleep-interval', u'120', u'https://app.pluralsight.com/library/courses/domain-driven-design-legacy-projects']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2018.09.18
[debug] Python version 2.7.15 (CPython) - Darwin-17.7.0-x86_64-i386-64bit
[debug] exe versions: none
[debug] Proxy map: {}
[pluralsight:course] domain-driven-design-legacy-projects: Downloading JSON metadata
[download] Downloading playlist: Domain-Driven Design: Working with Legacy Projects
[pluralsight:course] playlist Domain-Driven Design: Working with Legacy Projects: Collected 58 video ids (downloading 58 of them)
[download] Downloading video 1 of 58
[pluralsight] Downloading login page
[pluralsight] Logging in
ERROR: Unable to log in; 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.
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 792, in extract_info
    ie_result = ie.extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 506, in extract
    self.initialize()
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 410, in initialize
    self._real_initialize()
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/pluralsight.py", line 164, in _real_initialize
    self._login()
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/pluralsight.py", line 211, in _login
    raise ExtractorError('Unable to log in')
ExtractorError: Unable to log in; 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.

Getting the above error. I did already checked the version and is up-to-date (2018.09.18) Could you please help?

@Javapower77

This comment has been minimized.

Copy link

commented Oct 3, 2018

I have the same problem as above. Last working state was two days ago.

May be, from Pluralsight they had changed something that now is incompatible with the latest version of youtube-dl :(

@gosowski

This comment has been minimized.

Copy link

commented Oct 3, 2018

Unfortunately I have the same issue as @Javapower77 and @aniruthmp.
Any ideas how to resolve it ?

@anfield343

This comment has been minimized.

Copy link

commented Nov 21, 2018

the same issue:

ERROR: Unable to download JSON metadata: <urlopen error [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)> (caused by URLError(SSLError(1, u'[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)'),))

@Dooks123

This comment has been minimized.

Copy link

commented Dec 11, 2018

No video formats found;

Output:

C:\Users\XXX\Desktop\New folder\youtubedl>ydl --username "XXX" --password "XXX" -o "~/courses/%(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/quick-start-modeling-3ds-max-1-1225/ --playlist-start 1

[pluralsight:course] quick-start-modeling-3ds-max-1-1225: Downloading JSON metadata
[download] Downloading playlist: Quick Start to Modeling in 3ds Max: Volume 1
[pluralsight:course] playlist Quick Start to Modeling in 3ds Max: Volume 1: Collected 13 video ids (downloading 13 of them)
[download] Downloading video 1 of 13
[pluralsight] Downloading login page
[pluralsight] Logging in
[pluralsight] quick-start-modeling-3ds-max-1-1225-m1-0: Downloading JSON metadata
[pluralsight] quick-start-modeling-3ds-max-1-1225-m1-0: Downloading mp4-high-widescreen viewclip graphql
[pluralsight] quick-start-modeling-3ds-max-1-1225-m1-0: Waiting for 4 seconds to avoid throttling
[download] Sleeping 36.23 seconds...
[download] Destination: C:\Users\XXX\courses\Quick Start to Modeling in 3ds Max - Volume 1\1 - Introduction and Project Overview\01 - Introduction and Project Overview.mp4
[download] 100% of 10.79MiB in 00:27
[download] Downloading video 2 of 13
[pluralsight] quick-start-modeling-3ds-max-1-1225-m2-0: Downloading JSON metadata
[pluralsight] quick-start-modeling-3ds-max-1-1225-m2-0: Downloading mp4-high-widescreen viewclip graphql
[pluralsight] quick-start-modeling-3ds-max-1-1225-m2-0: Waiting for 2 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. Be sure to call youtube-dl with the --verbose flag and include its complete output.

C:\Users\XXX\Desktop\New folder\youtubedl>
@Archyver

This comment has been minimized.

Copy link

commented Dec 16, 2018

@Dooks123 When you're able to download the first file the "course Overview" but not the second file it usually means you don't have access to the class. This usually means your account does not have an active subscription. Navigate manually to the page and see if you can actually view the second class. If you're trying to use an account during the free weekend, you probably haven't redeemed the free weekend on your account. To check: Goto profile\subscriptions and check if you have an active subscription hasn't expired, or that expires at the end of the free weekend if applicable.

@aniruthmp Your username or password is incorrect, double check you can log in manually to the website.

403 error when downloading with youtube-dl, (when everything was previously working), means you've been marked as downloading too often and you're failing the recaptcha test that they've now put on your account when you access a course(which youtube-DL doesn't handle. I don't know if or when this falls off your account. You can verify this by trying to use the website as intended and have no problems but occasionally see the "recaptcha verify you're a human/contact support if problems" popup.

404 error: Really verify if you can access the website without youtube-dl. If you can, you have a typo somewhere with your information. If you log in and it goes to a direct 404 error, you've been hard locked for downloading too much and require a phonecall to support to try and unlock the account. This usually happens if your login information got acquired by a bad-actor. Think of a harder password, or stop using the same login/password as your email address in third party websites.

Tested 2018-12-15 on windows10 command line python 3.4.4 used from youtube-dl, and worked fine. Wanted to see what would happen and dropped delay to 30seconds and hit the 403 error after 2 courses. No longer able to download, but usually website currently working fine.

@rcuzco

This comment has been minimized.

Copy link

commented Dec 22, 2018

great tool!!

@lhmiranda

This comment has been minimized.

Copy link

commented Dec 27, 2018

It worked well for me until my computer entered sleep mode. Now is there a way to resume downloading a course or do I have to download it all again?

@PatrickKyei

This comment has been minimized.

Copy link

commented Dec 30, 2018

How do you resume downloading after an error display. Error due to unstable network

@sellmeformoney

This comment has been minimized.

Copy link

commented Jan 5, 2019

You can run the command again and it will start to resume again lol. It just take extra time to check which videos have been downloaded already.

@flesz

This comment has been minimized.

Copy link

commented Jan 13, 2019

same problem as @aniruthmp ERROR: Unable to login: Invalid user name or password
my login details and correct and I can access the site through the browser. Youtube-dl ver 2019.01.10

@ravikp7

This comment has been minimized.

Copy link

commented Jan 19, 2019

Thanks a ton!

@VarunVachis

This comment has been minimized.

Copy link

commented Jan 22, 2019

I use this command to download courses, ordered by number and organized in directory, just change the url, the path, username and password

youtube-dl --username "username" --password "password" -o "~/path/to/course/folder/%(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/python-big-picture/ --playlist-start 1

Enjoy!

I use this command to download courses, ordered by number and organized in directory, just change the url, the path, username and password

youtube-dl --username "username" --password "password" -o "~/path/to/course/folder/%(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/python-big-picture/ --playlist-start 1

Enjoy!

This works like a flash! Is there any equivalent command for a windows system?

@arkarmintun1

This comment has been minimized.

Copy link

commented Jan 28, 2019

ERROR: Unable to download JSON metadata: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)> (caused by URLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)'),))

It's showing me this error.

@snake1122

This comment has been minimized.

Copy link

commented Jan 29, 2019

This works like a flash! Is there any equivalent command for a windows system?

@VarunVachis, it is supposed to work with Windows as well. If you are using it in a batch, you should use double percent instead of one. This is my example (batch file!):
youtube-dl --username "yourname" --password "yourpassword" -o "C:\Temp\TechVideos\%%(playlist)s\%%(chapter_number)02d-%%(chapter)s\%%(playlist_index)02d-%%(title)s.%%(ext)s" --min-sleep-interval 60 --max-sleep-interval 100 https://app.pluralsight.com/library/courses/python-big-picture

@JurgenG

This comment has been minimized.

Copy link

commented Jan 30, 2019

ERROR: Unable to download JSON metadata: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
(_ssl.c:726)> (caused by URLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)'),))

It's showing me this error.

Try adding the flag --no-check-certificate, it did the trick for me.

@IbtisamUrRahman

This comment has been minimized.

Copy link

commented Jan 31, 2019

Is there any way to organize videos downloaded?

@snake1122

This comment has been minimized.

Copy link

commented Feb 1, 2019

Is there any way to organize videos downloaded?

Check this link, section "OUTPUT TEMPLATE" including examples:
https://github.com/rg3/youtube-dl/blob/master/README.md
Also there are good examples earlier in this thread (-o option)

@pomtom

This comment has been minimized.

Copy link

commented Feb 4, 2019

I AM GETTING BELOW ERROR

PS C:\Windows\System32\node_modules\youtube-dl\bin> .\youtube-dl --username "username" --password "pwd" --verbose --sleep-interval 120 "https://app.pluralsight.com/library/courses/microsoft-azure-enterprise-logic-app-creating/"
Program 'youtube-dl.exe' failed to run: The specified executable is not a valid application for this OS platform.At line:1 char:1

  • .\youtube-dl --username "username" --password "pwd ...

At line:1 char:1

  • .\youtube-dl --username "username" --password "pwd ...
  •   + CategoryInfo          : ResourceUnavailable: (:) [], ApplicationFailedException
      + FullyQualifiedErrorId : NativeCommandFailed
    
@unknowedNp

This comment has been minimized.

Copy link

commented Feb 18, 2019

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.

@shachopin

This comment has been minimized.

Copy link

commented Mar 7, 2019

doesn't work for me on OSX
ERROR: Unable to download JSON metadata: <urlopen error [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)> (caused by URLError(SSLError(1, u'[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)'),))

@felipeferreirasilva

This comment has been minimized.

Copy link

commented Mar 10, 2019

ERROR: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by HTTPError());

It happens because Pluralsight add a catpcha for your IP due to the number of requests, to solve this, just change your external ip (rebooting your router/modem) or use a VPN (bettenet VPN is free and unlimited).

To check if they added a captcha for your IP, open an anonymous google chrome tab, go to the pluralsight page and click login, now you should see an alert asking you to solve a captcha.

@renatoaraujoc

This comment has been minimized.

Copy link

commented Mar 10, 2019

Hello,

Anyone receiving this error?

➜  angular-architecture-best-practices youtube-dl --username “PRIVATE” --password “PRIVATE” -o "/Users/xxx/Downloads/pluralsight/angular/angular-architecture-best-practices/%%(playlist)s/%%(chapter_number)02d-%%(chapter)s/%%(playlist_index)02d-%%(title)s.%%(ext)s" --min-sleep-interval 60 --max-sleep-interval 100 https://app.pluralsight.com/library/courses/angular-architecture-best-practices
[pluralsight:course] angular-architecture-best-practices: Downloading JSON metadata
[download] Downloading playlist: Angular Architecture and Best Practices
[pluralsight:course] playlist Angular Architecture and Best Practices: Collected 68 video ids (downloading 68 of them)
[download] Downloading video 1 of 68
[pluralsight] Downloading login page
[pluralsight] Logging in
ERROR: Unable to login: Invalid user name or password

I've double checked and my username and password provided are fully correct.
youtube-dl version is 2019.03.09

@OllieV27

This comment has been minimized.

Copy link

commented Mar 10, 2019

Anyone seen this error?

ERROR: unable to open for writing: [Errno 2] No such file or directory: 'Configure and Restore Objects by Using the Active Directory Recycle Bin-windows-server-2016-manage-maintain-ad-domain-services-m3-05.mp4.part'
Traceback (most recent call last):
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpy110f8qy\build\youtube_dl\downloader\http.py", line 250, in download
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpy110f8qy\build\youtube_dl\utils.py", line 458, in sanitize_open
FileNotFoundError: [Errno 2] No such file or directory: 'Configure and Restore Objects by Using the Active Directory Recycle Bin-windows-server-2016-manage-maintain-ad-domain-services-m3-05.mp4.part'

@imranmemon75

This comment has been minimized.

Copy link

commented Mar 13, 2019

HI. Tried it today and am constantly getting the below error.
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--username', 'PRIVATE', '--password', 'PRIVATE', '--verbose', '--sleep-interval', '120', 'https://app.pluralsight.com/library/courses/powershell-putting-to-work/table-of-contents']
[debug] Encodings: locale cp1252, fs mbcs, out cp437, pref cp1252
[debug] youtube-dl version 2019.03.09
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.14393
[debug] exe versions: none
[debug] Proxy map: {}
[pluralsight:course] powershell-putting-to-work: Downloading JSON metadata
[pluralsight:course] powershell-putting-to-work: Downloading JSON metadata
ERROR: Unable to download JSON metadata: <urlopen error [WinError 10054] An existing connection was forcibly closed by the remote host> (caused by URLError(ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None),))
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpy110f8qy\build\youtube_dl\extractor\common.py", line 619, in _request_webpage
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpy110f8qy\build\youtube_dl\YoutubeDL.py", line 2225, in urlopen
File "C:\Python\Python34\lib\urllib\request.py", line 464, in open
File "C:\Python\Python34\lib\urllib\request.py", line 482, in _open
File "C:\Python\Python34\lib\urllib\request.py", line 442, in _call_chain
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpy110f8qy\build\youtube_dl\utils.py", line 1140, in https_open
File "C:\Python\Python34\lib\urllib\request.py", line 1185, in do_open

@jjercx

This comment has been minimized.

Copy link

commented Mar 29, 2019

I use this command to download courses, ordered by number and organized in directory, just change the url, the path, username and password

youtube-dl --username "username" --password "password" -o "~/path/to/course/folder/%(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/python-big-picture/ --playlist-start 1

Enjoy!

Thanks @mercxry. This still works! I'm on a mac and installed youtube.dl through homebrew.

@LocksmithArmy

This comment has been minimized.

Copy link

commented Apr 26, 2019

I wrote a simple gui for windows users that incorporates @mercxrys command.
It can be downloaded at http://lsadevelopment.com/Software/Files/PluralSight_Downloader.zip
It will let you download many courses back to back without using cmd.

Keep in mind, there is no error checking, so if you do something dumb, it will crash.

@codemonkies

This comment has been minimized.

Copy link

commented May 9, 2019

same problem as @aniruthmp and @flesz ERROR: Unable to login: Invalid user name or password. I am pretty certain credentials are correct. It worked once before while on trial membership period under different username.

@douglasluizm

This comment has been minimized.

Copy link

commented May 11, 2019

I am getting "ERROR: unable to download video data: <urlopen error [WinError 10060]". Did anyone see the same issue?

@kwakueshun

This comment has been minimized.

Copy link

commented May 17, 2019

min-sleep-interval of 120s seems to be taking too long for me. Anybody used less without getting blocked?

@jesperorb

This comment has been minimized.

Copy link
Owner Author

commented May 18, 2019

@kwakueshun
That was the sleep interval that was suggested 2 years ago when I first wrote this based on issues in the youtube-dl-repository. I have no idea how the interval holds up.

@xidoc

This comment has been minimized.

Copy link

commented May 24, 2019

@LocksmithArmy @jesperorb add arguments --all-subs for download subtitles. Good Job

@xidoc

This comment has been minimized.

Copy link

commented May 25, 2019

@LocksmithArmy @jesperorb
I had an error. It was impossible to create a folder because the string of folder had a space at the end. Example : 'name folder '.
To avoid this kind of problem, add argument --restrict-filenames.

@lehaidangdev

This comment has been minimized.

Copy link

commented Jun 6, 2019

Hello,

Anyone receiving this error?

➜  angular-architecture-best-practices youtube-dl --username “PRIVATE” --password “PRIVATE” -o "/Users/xxx/Downloads/pluralsight/angular/angular-architecture-best-practices/%%(playlist)s/%%(chapter_number)02d-%%(chapter)s/%%(playlist_index)02d-%%(title)s.%%(ext)s" --min-sleep-interval 60 --max-sleep-interval 100 https://app.pluralsight.com/library/courses/angular-architecture-best-practices
[pluralsight:course] angular-architecture-best-practices: Downloading JSON metadata
[download] Downloading playlist: Angular Architecture and Best Practices
[pluralsight:course] playlist Angular Architecture and Best Practices: Collected 68 video ids (downloading 68 of them)
[download] Downloading video 1 of 68
[pluralsight] Downloading login page
[pluralsight] Logging in
ERROR: Unable to login: Invalid user name or password

I've double checked and my username and password provided are fully correct.
youtube-dl version is 2019.03.09

For anyone had an error "Unable to login: Invalid user name or password" on the new version. Just remove " character at user-name and password.

Example below.
youtube-dl -u user-name -p password --min-sleep-interval 31 --max-sleep-interval 32 https://app.pluralsight.com/library/courses/bc-course/table-of-contents/ --playlist-start 1

Output template I'm using:

youtube-dl u user-name -p password -o "%(playlist)s/%(chapter_number)s - %(chapter)s/%(playlist_index)s - %(title)s.%(ext)s" --min-sleep-interval 31 --max-sleep-interval 32 https://app.pluralsight.com/library/courses/electron-fundamentals/table-of-contents/ --playlist-start 1

P/S: Interval between 31 and 32 work really well for me. and I use Macbook with 2019-5-20 Version

@AkinAguda

This comment has been minimized.

Copy link

commented Jun 6, 2019

So i wrote a script in javascript (to be run in node) to help sort out the videos. Works with mac and linux and windows. Feel free to contribute. Check out the script here

@genesy

This comment has been minimized.

Copy link

commented Jun 8, 2019

Doesn't work on for me on windows.
ERROR: Unable to download JSON metadata: HTTP Error 429: Too Many Requests (caused by HTTPError())

@Sumeet-Gandhi

This comment has been minimized.

Copy link

commented Jun 8, 2019

[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--username', 'PRIVATE', '--password', 'PRIVATE', '--no-check-certificate', '--verbose', '--min-sleep-interval', '31', '--max-sleep-interval', '32',
'-url', 'https://app.pluralsight.com/courses/microsoft-azure-enterprise-architecture-information-gathering', '--playlist-start', '1']
[debug] Encodings: locale cp1252, fs mbcs, out cp1252, pref cp1252
[debug] youtube-dl version 2019.06.08
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.17763
[debug] exe versions: none
[debug] Proxy map: {}
[pluralsight:course] microsoft-azure-enterprise-architecture-information-gathering: Downloading JSON metadata
[download] Downloading playlist: Gathering Information About Existing Enterprise Architecture in Microsoft Azure
[pluralsight:course] playlist Gathering Information About Existing Enterprise Architecture in Microsoft Azure: Collected 22 video ids (downloading 22 of them)
[download] Downloading video 1 of 22
[pluralsight] Downloading login page
[pluralsight] Logging in
ERROR: Unable to login: Invalid user name or password
Traceback (most recent call last):
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp3esl0iyj\build\youtube_dl\YoutubeDL.py", line 796, in extract_info
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp3esl0iyj\build\youtube_dl\extractor\common.py", line 529, in extract
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp3esl0iyj\build\youtube_dl\extractor\common.py", line 433, in initialize
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp3esl0iyj\build\youtube_dl\extractor\pluralsight.py", line 165, in _real_initialize
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp3esl0iyj\build\youtube_dl\extractor\pluralsight.py", line 198, in _login
youtube_dl.utils.ExtractorError: Unable to login: Invalid user name or password

@shaikhsp33r

This comment has been minimized.

Copy link

commented Jun 13, 2019

same problem as @aniruthmp and @flesz ERROR: Unable to login: Invalid user name or password. I am pretty certain credentials are correct. It worked once before while on trial membership period under different username.

Make sure your password does not contain any special character

@chiragsoni2401

This comment has been minimized.

Copy link

commented Jun 17, 2019

Facing this error ERROR: Unable to login: Invalid user name or password even after suggested here: https://gist.github.com/jesperorb/c14aef85735c54f479896cfa6f16a1e5#gistcomment-2936471

Using python version 3.7.2

Getting output like this:
[pluralsight:course] spring-jpa-hibernate: Downloading JSON metadata
[download] Downloading playlist: Spring with JPA and Hibernate
[pluralsight:course] playlist Spring with JPA and Hibernate: Collected 106 video
ids (downloading 106 of them)
[download] Downloading video 1 of 106
[pluralsight] Downloading login page
[pluralsight] Logging in
ERROR: Unable to login: Invalid user name or password

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.