Skip to content

Instantly share code, notes, and snippets.

@ivanskodje
Last active November 30, 2024 08:21
Show Gist options
  • Save ivanskodje/5bd8697a64e9879f397f7ef161cf0956 to your computer and use it in GitHub Desktop.
Save ivanskodje/5bd8697a64e9879f397f7ef161cf0956 to your computer and use it in GitHub Desktop.
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

@pomtom
Copy link

pomtom commented Jul 28, 2021

[download] Downloading video 1 of 40
[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.

@pomtom
Copy link

pomtom commented Jul 28, 2021

[debug] Encodings: locale cp1252, fs mbcs, out cp65001, pref cp1252
[debug] youtube-dl version 2021.06.06
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.18362
[debug] exe versions: none
[debug] Proxy map: {}
[pluralsight:course] microsoft-azure-authentication-scenarios-developers: Downloading JSON metadata
[download] Downloading playlist: Microsoft Azure Authentication Scenarios for Developers
[pluralsight:course] playlist Microsoft Azure Authentication Scenarios for Developers: Collected 40 video ids (downloading 40 of them)
[download] Downloading video 1 of 40
[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 "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpkqxnwl31\build\youtube_dl\extractor\common.py", line 634, in _request_webpage
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpkqxnwl31\build\youtube_dl\YoutubeDL.py", line 2288, in urlopen
File "C:\Python\Python34\lib\urllib\request.py", line 470, in open
File "C:\Python\Python34\lib\urllib\request.py", line 580, in http_response
File "C:\Python\Python34\lib\urllib\request.py", line 508, in error
File "C:\Python\Python34\lib\urllib\request.py", line 442, in _call_chain
File "C:\Python\Python34\lib\urllib\request.py", line 588, in http_error_default

@pratikbin
Copy link

pratikbin commented Aug 19, 2021

@xseman
Copy link

xseman commented Sep 3, 2021

Their system very quickly detects youtube-dl downloads, it is really difficult to debug which process will start the automatic block system.

I think they monitor some kind of web actions and map the current video buffering to the session with web actions.

Reply from their IT support email when I required what triggers the system.

Unfortunately, for Security reasons, we are unable to provide specific details on the account blocking reason. 

However, we can provide a list of the most common causes for this type of blocking: 

- Unusual usage, such as excessive skipping through video content
- The use of media scraping software or browser extensions that download video content outside of the approved offline player
- Generalized/generic account information (ensure that your account information reflects individual ownership, such as a valid first and last name)
- Having an unusual number of authorized devices (you may review Devices listed in your Account Settings to remove any that are not tied to the individual account holder, and any duplicate devices)
- Unintended usage via malware

@pratikbin
Copy link

Their system very quickly detects youtube-dl downloads, it is really difficult to debug which process will start the automatic block system.

I think they monitor some kind of web actions and map the current video buffering to the session with web actions.

Reply from their IT support email when I required what triggers the system.

Unfortunately, for Security reasons, we are unable to provide specific details on the account blocking reason. 

However, we can provide a list of the most common causes for this type of blocking: 

- Unusual usage, such as excessive skipping through video content
- The use of media scraping software or browser extensions that download video content outside of the approved offline player
- Generalized/generic account information (ensure that your account information reflects individual ownership, such as a valid first and last name)
- Having an unusual number of authorized devices (you may review Devices listed in your Account Settings to remove any that are not tied to the individual account holder, and any duplicate devices)
- Unintended usage via malware

Been there. It's very quick

@Nipponshin
Copy link

I can confirm that even after following all suggestions their system blocked me. It just annoys me that I am informed of the access for a year "after" I have already paid for one of their bundles from HB...

I have reset my password and got access again. They mentioned that if this behaviour is detected 3 times, your account gets permanently blocked. If anyone was able to download the Kubernetes bundle on HB and can share it via torrent I would greatly appreciate it!

@Lucas-fr-fr
Copy link

Lucas-fr-fr commented Oct 14, 2021

Hello,
Someone can help me with my error ?
I'm on windows powershell :

PS C:\Windows\System32> .\pluralsight.bat https://app.pluralsight.com/library/courses/sap-business-warehouse-query-fundamentals/table-of-contents

C:\Windows\System32>for %a in (https://app.pluralsight.com/library/courses/sap-business-warehouse-query-fundamentals/table-of-contents) do (.\youtube-dl.exe --username usermane --password password %a -o "C:/Users/Lucas/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 )

C:\Windows\System32>(.\youtube-dl.exe --username username --password password https://app.pluralsight.com/library/courses/sap-business-warehouse-query-fundamentals/table-of-contents -o "C:/Users/Lucas/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 )
Fatal Python error: Py_Initialize: unable to load the file system codec
ImportError: No module named 'encodings'

Current thread 0x00003808 (most recent call first):

@anumomin
Copy link

anyone can't download videos see below
Working as of 7-Aug-2021
https://gist.github.com/mshaikhcool/54c11eeb2e452297ab49c27b2e28e287

Both URLs are not working,,
Can someone please confirm if pluralsight downloading is still working?

@elgydium
Copy link

elgydium commented Jan 7, 2022

It ain't working for me either ERROR: '[https://app.pluralsight...table-of-contents] is not a valid URL.

@goombah88
Copy link

Or this error...

ERROR: core-python-implementing-iterators-iterables-collections: Failed to parse JSON (caused by ValueError('No JSON object could be decoded',)); 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.

@Shakil-Shahadat
Copy link

@goombah88 use yt-dlp.

@DaveBoltman
Copy link

Has anyone managed this lately, seeing as it's Free Pluralsight Week? I've reported this JSON bug - seems they changed something in about March 2022

@SunnyOswal
Copy link

@DaveBoltman +1 looking for the same

@sailendrap
Copy link

I can confirm that even after following all suggestions their system blocked me. It just annoys me that I am informed of the access for a year "after" I have already paid for one of their bundles from HB...

I have reset my password and got access again. They mentioned that if this behaviour is detected 3 times, your account gets permanently blocked. If anyone was able to download the Kubernetes bundle on HB and can share it via torrent I would greatly appreciate it!

I have Internet Download Manager software - which detects each video separately - you cannot batch download the videos. But its better than not being able to download at all.

Also with youtube-dl on Windows the JSON error referenced in the previous comments still persists.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment