Plugin sideloading¶
Streamlink supports overriding its built-in plugins or loading custom third party plugins without having to modify its sources or its built and installed Python distribution. This is called plugin sideloading.
Those additional plugin modules will automatically be loaded from the paths listed below,
or from the path(s) of the --plugin-dir
CLI argument, if it is set.
Attention
Do not attempt to modify built-in plugins or to add custom plugins to Streamlink's
built Python distribution. In order to keep loading times low, Streamlink implements a lazy plugin-loading system
for its built-in plugins, which means that pluginmatcher
and pluginargument
data is pre-computed and cached,
thus making modifications to plugin modules or adding new plugin modules pointless. Instead, sideload plugins.
Warning
If one of the sideloaded plugins fails to load and execute, e.g. due to a SyntaxError
being raised by the parser,
then this exception won't be caught by Streamlink and the execution will stop, even if the input stream URL
does not match the faulty plugin.
Note
Custom plugin modules will always be loaded and executed at once, increasing the load and initialization time
of the Streamlink session
. Built-in plugins
on the other hand are loaded lazily, unless overridden.
Overriding¶
If a plugin is added with the same name as a built-in plugin, then the added plugin will take precedence. This can be useful for upgrading or modifying plugins independently of the Streamlink version.
In this case, a log message will be written to log level debug
:
[session][debug] Plugin PLUGINNAME is being overridden by PATH-TO-PLUGIN-FILE (sha256:CHECKSUM)
Sideloading locations¶
Platform |
Location |
---|---|
Linux, BSD |
Path
${XDG_DATA_HOME:-${HOME}/.local/share}/streamlink/plugins Example
/home/USERNAME/.local/share/streamlink/plugins |
macOS |
Path
${HOME}/Library/Application Support/streamlink/plugins Example
/Users/USERNAME/Library/Application Support/streamlink/plugins |
Windows |
Path
%APPDATA%\streamlink\plugins Example
C:\Users\USERNAME\AppData\Roaming\streamlink\plugins |