Release highlights:
- Added: warning log message when skipping HLS segments between playlist reloads (#5607)
- Refactored: internals of segmented stream implementations (base classes, HLS, DASH)
- Added: base
Segment
dataclass and made segmented streams inherit from it (#5594) - Moved: modules into sub-packages (import paths of public APIs remain the same) (#5593)
- Renamed: various non-public HLS class methods/attributes and functions (#5526)
- Removed:
Sequence
segment wrapper from HLS implementation (#5526)
- Added: base
- Fixed: DASH manifest not respecting the
minBufferTime
(#5610) - Fixed: URL matchers of HLS/DASH protocol plugins (#5616, #5617)
- Fixed: bandwidth parsing issue in HLS multivariant playlists (#5619)
- Fixed plugins:
- Removed plugins:
- Build: dropped
versioningit
build-requirement when building from sdist tarball (version string has always been built-in whileversioningit
performed a no-op) (#5632) - Packaging: added missing shell completions build-script to sdist (#5625)
- Docs: clarified section about building from source (sdist/git vs. GitHub tarballs) (#5633)
📦 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
- 39: @bastimeyer
- 1: @Mehavoid
- 1: @allanf181
- 1: @ancebfer
- 1: @michaelarnauts
🗒️ Full changelog
Allan Fernando <allanfarmelin2001@yahoo.com.br> (1):
plugins.dlive: fix live streams
Antonio Cebrián <ancebfer@gmail.com> (1):
plugins.mitele: update to gbx v3
Mehavoid <63477090+Mehavoid@users.noreply.github.com> (1):
plugins.goodgame: use streamKey for HLS URLs
Michaël Arnauts <michael.arnauts@gmail.com> (1):
plugin: fix typo in constant name
bastimeyer <mail@bastimeyer.de> (39):
plugins.twitch: fix HLS multivariant errors
plugins.goodgame: rewrite using API
stream.hls: turn Segment/Playlist into dataclasses
stream.hls: remove Sequence named tuple wrapper
stream.hls: update methods and attributes
stream.hls: refactor M3U8 playlist loading
stream: switch to stream.segmented sub-package
stream: switch to stream.dash sub-package
stream: switch to stream.hls sub-package
stream.segmented: move CompatThreadPoolExecutor
stream.hls: rename Segment to HLSSegment
stream.dash: rename Segment to DASHSegment
stream.dash: rename DASHSegment.url attr to uri
stream.dash: rename DASHSegment.number to num
stream.dash: make DASHStream.duration non-optional
stream.segmented: add common base Segment class
stream.hls: move HLSSegment to dedicated module
stream.dash: move DASHSegment to dedicated module
plugin.api.validate: remove unneeded Match check
docs: upd Debian stable from bullseye to bookworm
plugins.vlive: remove plugin
script: don't upload PGP signatures to PyPI
plugins.ntv: remove plugin
stream.hls: warn about skipped segments
stream.dash: return timedelta from duration parser
stream.dash: respect the manifest's minBufferTime
ci.github: update py312 runners
plugins: ignore case in protocol-plugin input URLs
plugins: fix URL matchers of HLS and DASH
stream.hls: fix playlist bandwidth
tools: bump ruff to 0.1.0
chore: "RUF" rules to ruff config
chore: add "INP" rules to ruff config
chore: add "T20" rules to ruff config
plugins.dlive: rewrite and fix VODs
build: include build-shell-completions.sh in sdist
build: remove versioningit build-req from sdist
docs: add sdist section to install page
docs: update virtual-env sections on install page