- Added:
--no-plugin-sideloading
for disabling plugin sideloading from the default location (#6602) - Added:
--no-plugin-cache
for disabling cache file I/O of the plugin key-value store (#6602) - Improved: cache file I/O of the plugin key-value store (#6568)
- Changed: default log format on the
trace
/all
log level, with included thread name (#6557) - Fixed: missing thread names for various segmented and muxed streams (#6556)
- Fixed: pipe write error log messages when muxing streams (#6558)
- Updated plugins:
- aloula: updated plugin matchers to support new URLs (#6572)
- goodgame: fixed HLS stream URLs (#6585)
- mitele: removed plugin (#6586)
- nowtvtr: restored plugin (#6560)
- twitcasting: updated plugin to filter out preroll ads (#6601)
- twitch: changed plugin to always filter out ads, deprecated
--twitch-disable-ads
(#6579) - twitch: forced default User-Agent on access token API request (#6578)
- twitch: fixed clips validation schema (#6570)
- Docs: rearranged CLI arguments that are related to the plugin system (#6602)
- Build: removed
{dev,docs}-requirements.txt
in favor of PEP 735 (#6596) - Build: bumped
lxml
requirement to>=4.6.4,<7
(lxml>=6
now supports free-threaded mode) (#6587) - Tests: fixed test failures on Python 3.14.0b3 (#6589)
- Tests: fixed test failures in free-threaded mode (#6591, #6595)
📦 Download and Installation
Please see the installation instructions for a list of available install methods and packages on the supported operating systems.
⚙️ Configuration and Usage
Please see the CLI documentation for how to configure and use Streamlink.
❤️ Support
If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
Your support is very much appreciated, thank you!
🙏 Contributors
- 46: @bastimeyer
- 1: @Hakkin
- 1: @streamlinkbot
🗒️ Full changelog
Hakkin Lain <hakkin@github> (1):
plugins.twitcasting: filter preroll segments
bastimeyer <mail@bastimeyer.de> (46):
ci.github: bump create-pull-request action
stream.ffmpegmux: make TSubstreams covariant
stream.hls: make MuxedHLSStream generic
stream.hls: return Self in parse_variant_playlist
stream: set specific names for each thread
cli: add thread name to trace logging format
stream.ffmpegmux: ign pipe write err on stream end
ci.github: temporarily disable py314 Linux runner
plugins.nowtvtr: restore plugin
cli: push console.close() to the atexit stack
tools: bump ruff to 0.12.0
tools: bump mypy to 1.16.1
plugins.twitch: fix clips validation schema
plugins.aloula: add aloula.sba.sa to URL matcher
tests.cli: require metavar for args with values
cli: add metavar to --fs-safe-rules
session.http: export and use DEFAULT user-agent
plugins.twitch: use default UA on access-token req
plugins.goodgame: fix plugin
plugins.mitele: remove plugin
build: bump lxml to >=4.6.4,<7
cache: rewrite and improve cache file I/O
cache: make get(), set() and get_all() thread-safe
chore: clarify debug/trace log in issue forms
chore: update issue form headers+footers
ci.github: add py314 Linux+Windows test runners
tests: fix pluginargument decorator test
tools: bump ruff to 0.12.1
tests: fix cache atomicity test
tests: fix test_schedule_save in Cache tests
buffers: set/clear event_free first
tests: make buffer reader/writer threads daemonic
tools: remove faster-cache mypy extra
ci.github: add free-threaded test runners
ci.github: add script for temp dep wheel installs
build: replace *-requirements.txt with PEP-735
ci.github: bump python in workflows to 3.13
ci.readthedocs: bump python to 3.13
cli: add --no-plugin-sideloading
plugin: add --no-plugin-cache
tests: improve assertion in argparser tests
cli: group options related to the plugin system
plugins.twitch: always filter out ads
docs: rewrite Twitch plugin docs page
plugins.twitch: remove ad daterange by attr check
plugins.twitch: add ad daterange/segment trace log
streamlinkbot <streamlinkbot@users.noreply.github.com> (1):
session.http_useragents: update useragents