
Research
Malicious NuGet Packages Typosquat Nethereum to Exfiltrate Wallet Keys
The Socket Threat Research Team uncovered malicious NuGet packages typosquatting the popular Nethereum project to steal wallet keys.
patreon-dl
Advanced tools
A Patreon downloader written in Node.js.
This repo contains the patreon-dl
library and its command-line tool. For GUI application, check out patreon-dl-gui.
You can run patreon-dl
from the command-line or use it as a library for your project. Node.js v20 or higher required.
For information on external downloaders, see the Embedded videos / links - external downloader section. Example config is provided for fetching YouTube (replacing the built-in downloader) and Vimeo videos.
FFmpeg is required when downloading:
Not all video downloads require FFmpeg, but you should have it installed on your system anyway.
patreon-dl
supports downloading embedded YouTube videos or from embedded YouTube video links. In addition, if you have a YouTube Premium subscription, you can connect patreon-dl
to your account and download videos at qualities available only to Premium accounts (e.g. '1080p Premium'). For CLI users, you would configure patreon-dl
as follows:
$ patreon-dl --configure-youtube
...or you may just refer to the next section on how to download enhanecd-quality videos without a Premium account.
You can specify external programs to download embedded videos or from embedded links. For YouTube videos, this will replace the built-in downloader.
See the example config on how to configure an external downloader to fetch YouTube and Vimeo videos through yt-dlp. For Vimeo videos, a helper script bundled with patreon-dl
is used.
First, install Node.js.
Then, install FFmpeg (if you are going to download videos).
Then, in a terminal, run the following command:
$ npm i -g patreon-dl
The -g
option is for installing patreon-dl
globally and have the CLI executable added to the PATH. Depending on your usage, you might not need this.
$ patreon-dl [OPTION]... URL
Option | Alias | Description |
---|---|---|
--help | -h | Display usage guide |
--config-file <path> | -C | Load configuration file at <path> for setting full options |
--cookie <string> | -c | Cookie for accessing patron-only content; how to obtain cookie. |
--ffmpeg <path> | -f | Path to FFmpeg executable |
--out-dir <path> | -o | Directory to save content |
--log-level <level> | -l | Log level of the console logger: info , debug , warn or error ; set to none to disable the logger. |
--no-prompt | -y | Do not prompt for confirmation to proceed |
--dry-run | Run without writing files to disk (except logs, if any). Intended for testing / debugging. | |
--list-tiers <creator> | List tiers for the given creator(s). Separate multiple creators with a comma. The purpose of this is to let you find out what tier IDs to set forposts.in.tier filtering option under include section of configuration file. | |
--list-tiers-uid <user ID> | Same as --list-tiers , but takes user ID instead of vanity. | |
--configure-youtube | Configure YouTube connection. patreon-dl supports downloading embedded YouTube videos. If you have a YouTube Premium account, you can connect patreon-dl to it for downloading Premium-quality streams. |
// Download a product
https://www.patreon.com/<creator>/shop/<slug>-<product_id>
// Download posts by creator
https://www.patreon.com/<creator>/posts
https://www.patreon.com/c/<creator>/posts
https://www.patreon.com/cw/<creator>/posts
https://www.patreon.com/user/posts?u=<user_id>
// Dowload a single post
https://www.patreon.com/posts/<post_id>
https://www.patreon.com/posts/<slug>-<post_id>
// Download posts in a collection
https://www.patreon.com/collection/<collection_id>
You may specify multiple URLs by separating them with a comma. E.g.:
// First download posts by johndoe, followed by posts by janedoe.
$ patreon-dl "https://www.patreon.com/johndoe/posts,https://www.patreon.com/janedoe/posts"
You can also use a file to supply URLs to patreon-dl
. For example, you can have a urls.txt
that has the following content:
# Each URL is placed in its own line
# Comments (lines starting with '#') will be ignored
https://www.patreon.com/johndoe/posts
https://www.patreon.com/janedoe/posts
You can then pass urls.txt
to patreon-dl
:
$ patreon-dl urls.txt
In this file, you can also override include
options provided in a configuration file passed to patreon-dl
(through the -C
option). include
options allow you specify what to include in downloads. This overriding mechanism allows you to specify different content to download for each target URL. For example, you might have the following include
option in your configuration file:
...
[include]
# Include posts that belong only to tier ID '-1' (public tier)
posts.in.tier = -1
...
Then, in your urls.txt
, you can override as follows:
# URL 1
https://www.patreon.com/johndoe/posts
# Override 'posts.in.tier = -1' in [include] section of configuration file.
# This will cause downloader to download posts from URL 1 belonging to tier with
# ID '123456' or '789100'.
include.posts.in.tier = 123456, 789100
# Other include options - they basically have the same name as those
# in the configuation file, but prepended with 'include.':
#
# include.locked.content
# include.posts.with.media.type
# include.posts.published.after
# include.posts.published.before
# include.campaign.info
# include.content.info
# include.preview.media
# include.content.media
# include.all.media.variants
# include.images.by.filename
# include.audio.by.filename
# include.attachments.by.filename
# include.comments
# URL 2
https://www.patreon.com/janedoe/posts
# If you don't place any 'include.*' statements here, the downloader will use
# options from configuration file or default values if none provided.
# URL 3
...
Content is saved with the following directory structure:
out-dir
βββ campaign
βββ campaign_info
βββ posts
β βββ post 1
β β βββ post_info
β β βββ images
β β βββ ...
β βββ post 2
β βββ post_info
β βββ images
β βββ ...
βββshop
βββ product 1
βββ product_info
βββ content_media
βββ ...
Command-line options are limited. To access the full range of options, create a configuration file and pass it to patreon-dl
with the (capital) -C
option.
Refer to the example config to see what options are offered. Also see How to obtain Cookie.
Note that you can override an option from a configuration file with one provided at the command-line, provided of course that a command-line equivalent is available.
patreon-dl
comes with a web server that allows you to browse downloaded content. To start the web server:
$ patreon-dl-server [OPTION]
Option | Alias | Description |
---|---|---|
--help | -h | Display usage guide |
--data-dir <dir> | -i | Directory containing downloaded content. Default: current working directory |
--port <number> | -p | Web server port. Default: 3000 , or a random port if 3000 is already in use. |
--log-level <level> | -l | Log level of the console logger: info , debug , warn or error ; set to none to disable the logger. Default: info |
--log-file <file> | -f | Save logs to <file> . |
Say you downloaded something with patreon-dl
:
$ patreon-dl -o "C:\PatreonDownloads" <url>
This will download content to C:\PatreonDownloads
. To view the downloaded content, start patreon-dl
server as follows:
$ patreon-dl-server -i "C:\PatreonDownloads"
...info: Web server is running on <URL>
Note the URL shown in the output. Open this URL in a web browser to begin viewing the downloaded content.
Keep in mind that the web server is in no way secure. It is meant for local browsing and should not be exposed to outside parties!
v3.3.1
DB.getInstance()
returning same instance despite different DB pathAPI.getInstance()
returning same instance despite different DB instancev3.3.0
v3.2.1
getCampaign()
--list-tiers
/ --list-tiers-uid
v3.2.0
yt-dlp
in Vimeo download scriptconfig.include.mediaByFilename
optionsDownloader.getCampaign(params)
: enable lookup by params.campaignId
v3.1.0
request.userAgent
optionv3.0.0
patreon-dl
.v2.4.3
v2.4.2
v2.4.1
post-url
and cookie
to available external downloader exec paramscookie
in DownloaderConfig
v2.4.0
https://www.patreon.com/cw/<creator>/posts
stopOn
option (#63)proxy
option (#62)URLHelper
, FetcherError
getDefaultDownloaderOptions()
ConsoleLogger
/ FileLogger
: add getDefaultConfig()
v2.3.0
podcast
type to include.postsWithMediaType
optioninclude.comments
optionv2.2.0
v2.1.1
v2.1.0
https://www.patreon.com/c/<creator>/posts
v2.0.0
include
options:
v1.7.0
--dry-run
/ dryRun
optionhttps://www.patreon.com/posts/<post_id>
v1.6.2
v1.6.1
v1.6.0
v1.5.0
https://www.patreon.com/user/posts?u=<user_id>
PatreonDownloader.getCampaign()
to take userId
arg--list-tiers-uid
v1.4.0
--list-tiers
include
optionsv1.3.0
content.publishDate
field to the content dir name format (PR #12 by kazuoteramoto)v1.2.2
v1.2.1
v1.2.0
v1.1.1
v1.1.0
v1.0.1
v1.0.0
This project is licensed under the MIT License and includes third-party softwareβsee the NOTICE file for attributions.
FAQs
Patreon Downloader
The npm package patreon-dl receives a total of 189 weekly downloads. As such, patreon-dl popularity was classified as not popular.
We found that patreon-dl demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.Β It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
The Socket Threat Research Team uncovered malicious NuGet packages typosquatting the popular Nethereum project to steal wallet keys.
Product
A single platform for static analysis, secrets detection, container scanning, and CVE checksβbuilt on trusted open source tools, ready to run out of the box.
Product
Socket is launching experimental protection for the Hugging Face ecosystem, scanning for malware and malicious payload injections inside model files to prevent silent AI supply chain attacks.