pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/multimedia/streamlink



Module Name:    pkgsrc
Committed By:   yhardy
Date:           Mon Mar  2 20:31:12 UTC 2026

Modified Files:
        pkgsrc/multimedia/streamlink: Makefile PLIST distinfo
Added Files:
        pkgsrc/multimedia/streamlink/patches: patch-build__backend_onbuild.py
            patch-setup.py

Log Message:
multimedia/streamlink: update to streamlink-8.1.2

Changelog:

== streamlink 8.1.2 (2026-01-18)

- Fixed: warnings when parsing HLS playlists with private-use language
         subtags (#6780)
- Updated plugins:
  - youtube: fixed live streams (#6777)

== streamlink 8.1.1 (2026-01-17)

- Fixed: `--stream-segmented-queue-deadline` not being applied
         correctly to the Streamlink session options (#6758)
- Changed: `--hls-segment-ignore-names` to not hardcode `.ts` HLS
           segment file name extensions (#6747)
- Updated plugins:
  - dailymotion: fixed 403 HLS playlist responses (#6773)
  - pluto: fixed url matchers and ad detection (#6767)
  - soop: fixed CDN mapping for `ld_cdn` based regions (#6749)
- Build: removed unneeded `wheel` dependency from
         `build-system.requires` and the `build` dependency
         group (#6754)

== streamlink 8.1.0 (2025-12-14)

- Deprecated: `--hls-segment-queue-threshold` in favor of
              `--stream-segmented-queue-deadline` (#6734)
- Improved: debug logging of segmented streams (#6730)
- Updated plugins:
  - twitch: fixed clips GQL API query (#6744)
- Tests: removed accidental `pytest_cov` dependency when running
         tests (#6727)

== streamlink 8.0.0 (2025-11-11)

- BREAKING: dropped support for [EOL Python 3.9]
- BREAKING/API: removed deprecated `url_master` from
                `HLSStream`/`MuxedHLSStream`
- BREAKING/dependencies: bumped version requirement of
                         `urllib3` to `>=2.0.0`
- Added: `--stream-segmented-duration` in favor of `--hls-duration`
         (now deprecated), which affects HLS, DASH and other
         segmented stream types
- Added: `duration` parameter to `dash://` streams (`DASHStream`)
- Added: `--ffmpeg-validation-timeout` for being able to increase
         the time for validating the FFmpeg executable
         (`--ffmpeg-ffmpeg`)
- Added: Flatpak player detection for VLC and mpv
- Refactored: parts of the internal `SegmentedStream`, `HLSStream` and
              `DASHStream` implementations (WIP)
- Updated plugins:
  - aloula: fixed livestream schema
  - btv: rewritten and fixed plugin
  - chzzk: added support for in-progress VODs via live-rewind streams
  - dlive: fixed streams expiring after 5 minutes
  - goodgame: updated matches, switched API endpoints
  - nhkworld: removed plugin
  - rtve: fixed validation schema
  - twitch: fixed access token acquirement and various persisted
            GraphQL query IDs
  - twitch: added `--twitch-supported-codecs` for access to higher
            quality streams
- Dependencies: dropped optional `zstandard` dependency on
                Python 3.14 and above
- Tests: bumped version requirement of `pytest` to `>=8.4.0`
- Docs: refactored docs config and custom Sphinx extensions, added
        `make` options for disabling various components for offline
        building
- Docs: fixed compatibility with `docutils==0.22.2`

== streamlink 7.6.0 (2025-09-08)

- Added: official support for Python 3.14
- Added: `--skip` for stopping on existing file outputs without user
         prompts
- Added: `CDPClientSession.{apply,retrieve}_cookies()` for copying
         cookies between Streamlink's HTTP session and the web browser
- Updated plugins:
  - chzzk: added support for live streams with a wider content
           availability window
  - indihometv: removed plugin
  - kick: added `--kick-low-latency`
  - lrt: fixed plugin
  - mediaklikk: fixed plugin
  - vkvideo: renamed to vkvideolive, added VOD support
- Docs: fixed compatibility with `docutils>=0.22` (transitive
        dependency)

== streamlink 7.5.0 (2025-07-08)

- Added: `--no-plugin-sideloading` for disabling plugin sideloading
         from the default location
- Added: `--no-plugin-cache` for disabling cache file I/O of the
         plugin key-value store
- Improved: cache file I/O of the plugin key-value store
- Changed: default log format on the `trace`/`all` log level, with
           included thread name
- Fixed: missing thread names for various segmented and muxed streams
- Fixed: pipe write error log messages when muxing streams
- Updated plugins:
  - aloula: updated plugin matchers to support new URLs
  - goodgame: fixed HLS stream URLs
  - mitele: removed plugin
  - nowtvtr: restored plugin
  - twitcasting: updated plugin to filter out preroll ads
  - twitch: changed plugin to always filter out ads,
            deprecated `--twitch-disable-ads`
  - twitch: forced default User-Agent on access token API request
  - twitch: fixed clips validation schema
- Docs: rearranged CLI arguments that are related to the plugin system
- Build: removed `{dev,docs}-requirements.txt` in favor of PEP 735
- Build: bumped `lxml` requirement to `>=4.6.4,<7` (`lxml>=6` now
         supports free-threaded mode)
- Tests: fixed test failures on Python 3.14.0b3
- Tests: fixed test failures in free-threaded mode

== streamlink 7.4.0 (2025-06-08)

- Added: `encoding` keyword to all HTTP request methods to override
         the response content encoding
- Added: debug log message for the available DASH periods (id or
         index)
- Fixed: `LookupError` when selecting an invalid DASH period
- Updated plugins:
  - blasttv: new plugin
  - kick: fixed 403 API responses by solving the JS challenge using
          the webbrowser API
  - nicolive: fixed plugin metadata by forcing UTF-8 encoding
  - picarto: fixed validation schema and fixed multi-stream selection
  - tvp: rewritten and fixed plugin
  - twitcasting: fixed plugin by switching to new websocket+HLS streams
  - vtvgo: removed plugin
- Tests: fixed py314 test failures
- Tests: fixed some HLS tests failing in rare cases

== streamlink 7.3.0 (2025-04-26)

- Changed: download progress to use the console output stream rather
           than always `stderr`, which previously caused log and
           progress messages to be interweaved
- Changed: download progress output to be a status message line at
           the bottom of the console output, unless `--progress=force`
           is set in non-interactive or unsupported environments,
           in which case less frequent regular progress messages
           are written
- Fixed: potential division by zero error when formatting progress
         output
- Build: bumped `setuptools` requirement from `>=65.6` to `>=77`
         and switched to PEP 639 project license metadata format

== streamlink 7.2.0 (2025-04-04)

- Added: `decompress` extras marker to Streamlink's optional
         dependencies for installing `brotli` and `zstandard`,
         which were previously implied optional dependencies
         via the transitive dependency `urllib3`
- Changed: `--retry-streams` to allow a value of `0`, so it can
           be unset again if set previously
- Changed: `--quiet` to suppress all text output including errors,
           not just log output
- Fixed: `--logfile` affecting the console output stream
- Fixed: broken user input prompt behavior on missing or
         non-interactive I/O streams
- Fixed: `Plugin` classes not requiring a matching matcher
- Fixed: `--hls-audio-select` not being case-insensitive and only
         comparing input values rather than resolved language codes
- Updated: Chrome Devtool Protocol interfaces, to match recent
           Chromium versions
- Updated plugins:
  - euronews: rewritten and fixed plugin
  - kick: refactored plugin, fixed clip matcher and 403 API responses
  - nicolive: fixed plugin not loading cookies from WebSocket messages
  - nicolive: made the plugin always filter out blank HLS segments
  - nowtvtr: removed plugin
  - okru: canonicalize mobile URLs
  - tf1: fixed stream matcher

== streamlink 7.1.3 (2025-02-14)

- Fixed: `validate.contains()` to allow all kinds of `Container` object inputs
- Updated plugins:
  - ceskatelevize: rewritten and fixed plugin
  - nos: fixed validation schema, updated matcher
  - pandalive: fixed user_id retieval, updated matcher
  - pluzz: fixed video ID schemas
  - streamable: removed plugin
  - tv4play: removed plugin
  - twitch: refactored TwitchAPI class and access token retrieval
  - wwenetwork: rewritten and fixed plugin
- Docs: replaced Windows and Linux AppImage nightly builds with
        preview builds triggered on each commit to `master`
- Docs: added optional/secondary Linux AppImage builds with FFmpeg
        being bundled
- Tests: bumped `freezegun` requirement to `>=1.5.0`

== streamlink 7.1.2 (2025-01-08)

- Updated plugins:
  - various: fixed access of URL matcher regex capture groups, affecting
             abematv, ard_mediathek, bbiplayer, dailymotion, picarto, streann
  - chzzk: added support for clips
  - dailymotion: added support for lequipe.fr
  - kick: fixed 403 HTTP errors, fixed VOD URL matcher
  - nicolive: fixed authentication
  - tiktok: rewritten plugin, fixed live streams, added VODs

== streamlink 7.1.1 (2024-12-28)

- Fixed: `--show-matchers=pluginname` not working when plugins are
         loaded lazily

== streamlink 7.1.0 (2024-12-28)

- Added: `--show-matchers=pluginname` CLI argument
- Updated: `Streamlink` and `Plugin` constructors to allow both
           `Mapping` and `Options` as `options` types
- Fixed: uncaught DASH errors if FFmpeg is unavailable
  As a side effect, if FFmpeg is unavailable, DASH streams will only
  return one sub-stream of the video and/or audio streams that would
  be muxed otherwise.
- Fixed: incorrect DASH segment duration in timeline manifests
- Fixed: dynamic DASH streams incorrectly requiring the `publishTime`
  and `availabilityStartTime` attributes
- Fixed: incorrect DASH segment and manifest base-URL joining
- Fixed: `matchers` and `arguments` objects being shared in inherited
  `Plugin` classes
- Updated plugins:
  - various: replaced verbose URL matcher regexes of most plugins with
             multiple simple ones
  - bilibili: updated schema to include MPEG-TS HLS streams
  - bilibili: added back high-res `HTTPStream` streams from the v1 API
              with higher priority
  - mangomolo: replaced media.gov.kw with 51.com.kw
  - soop: rewritten authentication
  - vkplay: renamed to vkvideo and updated matcher
  - welt: fixed schema
- Build: removed `typing-extensions` from runtime dependencies

== streamlink 7.0.0 (2024-11-04)

- BREAKING: dropped support for EOL Python 3.8 (Win 7/8 are now
            unsupported)
- BREAKING/CLI: removed deprecated config file and plugin config
            file paths
- BREAKING/CLI: removed deprecated plugin sideloading paths
- BREAKING/CLI: removed deprecated `--force-progress` CLI argument
- BREAKING/CLI: removed deprecated stream-type related CLI arguments
  - `--hls-segment-attempts`
  - `--hls-segment-threads`
  - `--hls-segment-timeout`
  - `--hls-timeout`
  - `--http-stream-timeout`
- BREAKING/API: removed deprecated stream-type related session options
  - `hls-segment-attempts`
  - `hls-segment-threads`
  - `hls-segment-timeout`
  - `hls-timeout`
  - `dash-segment-attempts`
  - `dash-segment-threads`
  - `dash-segment-timeout`
  - `dash-timeout`
  - `http-stream-timeout`
- BREAKING/API: removed deprecated import paths for `HTTPSession` and
                `HTTPAdapter`s
- BREAKING/API: removed deprecated import paths for `NoPluginError`,
                `NoStreamsError`, `PluginError` and `Plugin`
- BREAKING/packaging: dropped "32 bit" Windows x86 and Linux AppImage
                      i686 builds
- Removed: flawed implementation of VLC-specific player variables
- Deprecated: `--verbose-player` CLI argument in favor of
              `--player-verbose`
- Deprecated: `--fifo` CLI argument in favor of `--player-fifo`
- Added: warning messages for deprecated/suppressed plugin arguments
- Fixed: errors on missing `stdin` file descriptor
- Fixed: `--interface` not having an effect on custom `HTTPAdapter`s
- Updated plugins:
  - afreeca: renamed to soop, overhauled plugin and deprecated old
             plugin CLI arguments
  - ruv: rewritten and fixed plugin
  - tv3cat: updated plugin matchers
- Docs: updated documentation of various CLI arguments
- Chore: updated typing annotations (PEP 563, PEP 585, PEP 604,
         PEP 613)
- Chore: reformatted the whole code base using ruff
- Build: bumped `trio` dependency to `>=0.25.0,<1` on Python >= 3.13

== streamlink 6.11.0 (2024-10-01)

- Deprecated:
   `--record-and-pipe=...` in favor of `--stdout --record=...`
   (and explicitly disallowed `--stdout --output=...`)
- Fixed: error when setting both `--http-no-ssl-verify`
   and `--http-disable-dh`
- Fixed: `--player-passthrough` without a resolved default `--player`
- Fixed: error when stdout/stderr file descriptors are missing
- Updated: webbrowser API's Chrome devtools protocol to latest version
- Updated plugins:
  - crunchyroll: removed plugin
  - dlive: fixed missing stream URL signature
  - facebook: removed plugin
  - mildom: removed plugin
  - tvrby: removed plugin
  - tvrplus: removed plugin
  - twitch: fixed client-integrity token acquirement
  - vk: fixed API params and validation schema
  - webtv: removed plugin
  - zengatv: removed plugin
  - zhanqi: removed plugin
- Tests: removed `pytest-asyncio` dependency

== streamlink 6.10.0 (2024-09-06)

- Added: official support for Python 3.13
- Added: `--logformat` and `--logdateformat`
- Added: `--ffmpeg-loglevel`
- Fixed: continuous logging errors when stdout stream was closed on
         the reading end
- Fixed: HTTP proxy config being used when getting webbrowser API's
         websocket IPC address
- Updated plugins:
  - booyah: removed plugin
  - douyin: fixed validation schema
  - galatasaraytv: removed plugin
  - idf1: removed plugin
  - linelive: removed plugin
  - pandalive: fixed missing HTTP headers
  - tiktok: fixed schema of inaccessible streams
  - youtube: disabled VODs, as they are currently non-functional
- Docs: bumped `sphinx-design >=0.5.0,<=0.6.1`, enabling `sphinx >=8.0.0`
- Tests: fixed `pytest-asyncio` warnings

== streamlink 6.9.0 (2024-08-12)

- Added: `streamlink.plugin.api.webbrowser` subpackage with the
         `aws_waf` module
- Added: `max_buffer_size` kwarg to `CDPClient.session()`
- Added: webbrowser `User-Agent` header override in headless mode
- Changed: default value of `--webbrowser-headless` from `True`
           to `False`
- Changed: unicode characters to be unescaped in JSON output,
           if possible
- Fixed: potential character encoding issues in Streamlink's logger
- Updated plugins:
  - nicolive: updated plugin matcher
  - okru: fixed validation schema
  - radionet: removed plugin
  - sportschau: fixed plugin
  - tiktok: fixed room ID validation schema
  - tvp: added support for sport.tvp.pl
  - twitch: added `--twitch-force-client-integrity`
  - twitch: fixed broken client-integrity token decoding+parsing
  - twitch: removed the `headless=False` override
  - vimeo: removed error messages for unsupported DASH streams
  - vk: fixed validation schema
  - vtvgo: resolved AWS Web Application Firewall bot detection
  - yupptv: fixed plugin, added ad filtering
- Docs: added webbrowser API metadata to plugin descriptions
- Docs: updated build-dependencies and the furo theme

== streamlink 6.8.3 (2024-07-11)

Patch release:

- Updated plugins:
  - tiktok: new plugin
  - twitch: fixed channel names with uppercase characters

== streamlink 6.8.2 (2024-07-04)

Patch release:

- Updated plugins:
  - douyin: new plugin
  - huya: fixed stream URLs
  - pluzz: fixed API URL, stream tokens and validation schemas
  - twitch: added info log messages about ad break durations
  - twitch: fixed clip URLs
  - twitch: fixed discontinuity warning spam in certain circumstances
  - vidio: fixed stream tokens, added metadata

== streamlink 6.8.1 (2024-06-18)

Patch release:

- Fixed: failed HTTPAdapter tests on some OpenSSL configurations

== streamlink 6.8.0 (2024-06-17)

Release highlights:

- Added: sha256 checksum to log message when side-loading plugins
- Added: `SSLContextAdapter` to `streamlink.session.http`
- Deprecated: [old re-exports in `streamlink.plugins` package]
- Updated plugins:
  - bilibili: fixed validation schema for offline channels
  - chzzk: fixed channels without content
  - cnbce: new plugin
  - kick: new plugin
  - tf1: added authentication via `--tf1-email` and `--tf1-password`
  - tvp: fixed live streams
  - welt: fixed live streams

== streamlink 6.7.4 (2024-05-12)

Patch release:

- Refactored: CLI errors
- Updated plugins:
  - afreeca: updated stream qualities
  - afreeca: added `--afreeca-stream-password`
  - chzzk: new plugin
  - nownews: removed plugin
  - turkuvaz: fixed HLS streams
- Docs: clarified plugin request rules
- Build: fixed build issues on Windows
- Build: removed `exceptiongroup` dependency on Python >= 3.11

== streamlink 6.7.3 (2024-04-14)

Patch release:

- Fixed: file output paths being able to exceed max file/directory
         name length
- Fixed: propagation of `KeyboardInterrupt`/`SystemExit` in
         `streamlink.webbrowser`
- Fixed: compatibility with `exceptiongroup<=1.1.1`
- Fixed: `plugin.api.validate.parse_qsd` input type validation
- Updated plugins:
  - mangomolo: fixed missing referer header and updated URL matcher
  - pluto: rewritten plugin
  - showroom: fixed geo-block check preventing stream access
  - vkplay: updated URL matcher
- Tests: fixed test failure when running tests from the `bdist`
         build directory

== streamlink 6.7.2 (2024-03-23)

Patch release:

- Build: reverted `trio` version requirement bump
- Build: fixed incorrect `pytest` version requirement

== streamlink 6.7.1 (2024-03-19)

Patch release:

- Fixed: CLI download progress missing the last data chunk
- Fixed: compatibility with `trio>=0.25`
- Updated plugins:
  - tv3cat: fixed plugin and added VODs
  - vimeo: fixed event streams and embedded player URLs
- Build: bumped `trio` dependency version requirement to `>=0.25,<1`
- Build: added `exceptiongroup` dependency
- Tests: fixed root logger level not being reset

== streamlink 6.7.0 (2024-03-09)

Release highlights:

- Added: repeatable `--plugin-dir` CLI argument
- Deprecated: `--plugin-dirs` CLI argument with comma separated paths
- Fixed: independent encryption status of HLS initialization sections
- Fixed: objects of default session options being shared
  between sessions
- Updated plugins:
  - bloomberg: fixed data regex
  - ltv_lsm_lv: fixed player ID retrieval, removed custom
                HLS implementation
  - mangomolo: new plugin
  - ustvnow: updated matcher
  - vimeo: fixed optional DASH streams of live events

== streamlink 6.6.2 (2024-02-20)

Patch release:

- Fixed: missing plugin override log message in non-editable installs
- Fixed: incorrect `setuptools` min. version in build requirements
- Updated plugins:
  - afreeca: fixed broadcast number regex
  - afreeca: added support for stream metadata
  - hiplayer: removed media.gov.kw matcher

== streamlink 6.6.1 (2024-02-17)

Patch release:

- Fixed: plugin arguments in `--help` output
- Docs: removed empty plugin sections in docs and man page

== streamlink 6.6.0 (2024-02-16)

Release highlights:

- Implemented: lazy plugins loading
  Streamlink's built-in plugins will now be loaded on demand when
  resolving input URLs. This improves initial loading times and
  reduces total memory consumption.
- Refactored: Streamlink session module (and related)
  - Moved: `streamlink.session` into a sub-package
  - Moved: `streamlink.plugin.api.http_session`
           to `streamlink.session.http`
  - Refactored: `Streamlink` class internals
  - Deprecated: `Streamlink.{get,load}_plugins()` methods
  - Deprecated: direct imports of `HTTPSession` and imports
                from `streamlink.plugin.api.http_session`
- Refactored: `streamlink.utils.args` module
- Updated plugins:
  - aloula: fixed missing HTTP headers
  - foxtr: removed plugin
  - huya: fixed stream URLs
  - nowtvtr: new plugin
  - qq: removed plugin
  - rtbf: removed plugin
- Tests: improved overall test execution time

== streamlink 6.5.1 (2024-01-16)

Patch release:

- Fixed: file output path log message on py38/py39
- Improved: warning message when using quoted player paths
  (in config files)
- Updated plugins:
  - artetv: updated API response validation schema
  - atresplayer: updated API response validation schema
  - bigo: reimplemented plugin
  - bilibili: fixed stream resolving issues on channels with
              custom layouts
  - huya: added stream CDN availability check
  - twitch: disabled Chromium headless mode on client-integrity
            token acquirement
  - vidio: fixed missing API request cookies
  - zattoo: fixed audio/video sync issues

== streamlink 6.5.0 (2023-12-16)

Release highlights:

- Fixed: `UserWarning` being emitted by recent `pycountry` releases when
  parsing certain language codes
- Fixed: trace logging setup in `WebsocketClient` implementation
- Updated plugins:
  - btv: switched to HLS multivariant playlists
  - gulli: rewritten plugin
  - twitch: removed/disabled `--twitch-disable-reruns`
  - twitch: enabled `check_streams` HLS option, to ensure early stream
            availability without querying the delayed Twitch API
  - twitch: removed unnecessary Twitch API error messages for offline channels
  - wasd: removed plugin
- Build: added support for `versioningit >=3.0.0`, with backward compatibility

= streamlink 6.4.1 (2023-11-22)

Patch release:

- Fixed: libxml2 2.12.0 compatibility

= streamlink 6.4.0 (2023-11-21)

Release highlights:

- Added: missing support for dynamic DASH manifests with
   `SegmentList`s
- Added: warning log message when skipping DASH segments
   between manifest reloads
- Added plugins: nasaplus
- Updated plugins:
  - raiplay: added VOD support with authentication
   `--raiplay-email` / `--raiplay-password`
   / `--raiplay-purge-credentials`
  - telemadrid: fixed XPath query
  - tvp: fixed tvp.info
  - youtube: fixed video ID retrieval
- Docs: added validation schema API docs and API guide

= streamlink 6.3.1 (2023-10-26)

Patch release:

- Fixed plugins:
  - welt: rewritten plugin
- Build: fixed tests when running from sdist

= streamlink 6.3.0 (2023-10-25)

Release highlights:

- Added: warning log message when skipping HLS segments between
    playlist reloads
- Refactored: internals of segmented stream implementations (base
    classes, HLS, DASH)
  - Added: base `Segment` dataclass and made segmented streams
    inherit from it
  - Moved: modules into sub-packages (import paths of public APIs
    remain the same)
  - Renamed: various non-public HLS class methods/attributes and
    functions
  - Removed: `Sequence` segment wrapper from HLS implementation
- Fixed: DASH manifest not respecting the `minBufferTime`
- Fixed: URL matchers of HLS/DASH protocol plugins
- Fixed: bandwidth parsing issue in HLS multivariant playlists
- Fixed plugins:
  - dlive: fixed live streams and fixed VODs
  - goodgame: rewritten plugin using goodgame API v4
  - mitele: updated gbx API calls from v2 to v3
  - twitch: fixed error handling of geo-restricted or inaccessible
    streams
- Removed plugins:
  - ntv: static stream URLs
  - vlive: offline
- Build: dropped `versioningit` build-requirement when building from
  sdist tarball (version string has always been built-in while
  `versioningit` performed a no-op)
- Packaging: added missing shell completions build-script to sdist
- Docs: clarified section about building from source (sdist/git vs.
    GitHub tarballs)

= streamlink 6.2.1 (2023-10-03)

Patch release:

- Added: official support for Python 3.12
- Fixed plugins: goodgame, nos, pandalive, wwenetwork
- Build: added custom setuptools build-backend override which fixes
    issues with building Windows-specific wheels

= streamlink 6.2.0 (2023-09-14)

Release highlights:

- Added: `--player-env` CLI argument
- Added: OpenSSL version to debug log output
- Updated: segmented stream internals and typing
- Updated: internal HLS tag parsing setup and parser state
- Fixed: HLS streams not ending on playlist reload with endlist tag
    and no new segments
- Fixed: missing file encoding when writing a log file
- Added plugins: piaulizaportal
- Fixed plugins: hiplayer, nicolive, pluto
- Docs: added list of supported metadata variables for each plugin

= streamlink 6.1.0 (2023-08-16)

Release highlights:

- Added: `--hls-segment-queue-threshold` for being able to configure
    when to stop HLS streams early on missing segments
- Fixed: config file parsing issues and made parsing argument values
    more strict
- Fixed: race condition when reading and validating the FFmpeg
    version string
- Fixed plugins: atresplayer
- Docs: added code examples for the removal of
    `Streamlink.{g,s}et_plugin_option`
- Build: fixed entry-points config issues with setuptools `68.1.0`

= streamlink 6.0.1 (2023-08-02)

Patch release:

- Added: missing `options` argument to `Streamlink.streams()`
- Fixed: migration docs and the `6.0.0` changelog of the
    `Streamlink.{g,s}et_plugin_option()` removal
- Fixed plugins: huya
- Docs: updated build-dependencies and the furo theme

= streamlink 6.0.0 (2023-07-20)

Breaking changes:

- BREAKING: dropped support for Python 3.7
- BREAKING: turned `--player` CLI argument into a player-path-only
    argument
  Its value won't be interpreted as a command line string anymore,
    so paths with whitespace don't require additional quotation.
    Custom player arguments now always need to be set via `--player-args`.
- BREAKING: removed deprecated `{filename}` variable from `--player-args`
- BREAKING/API: removed support for the deprecated
    `Plugin.can_handle_url()` / `Plugin.priority()` classmethods
- BREAKING/API: removed deprecated compatibility wrapper for the `Plugin`
    constructor
- BREAKING/API: removed `Streamlink.{g,s}et_plugin_option()`
- BREAKING/API: removed deprecated global plugin arguments
- BREAKING/API: removed deprecated `streamlink.plugin.api.validate.text`
- BREAKING/API: fixed/changed signatures of `HTTPStream`, `HLSStream` and
    `HLSStream.parse_variant_playlist()`
- BREAKING/packaging: new signing key `44448A298D5C3618`

Release highlights:

- Added: experimental `streamlink.webbrowser` API for extracting data
    from websites using the system's Chromium-based web browser
  See the `--webbrowser`, `--webbrowser-executable` and related CLI
    arguments for more
- Added: client-integrity token support to Twitch plugin using the
    `streamlink.webbrowser` API (currently only used as a fallback
    when acquiring the access token fails)
- Added: `{playertitleargs}` variable to `--player-args`
- Added: `with_{video,audio}_only` parameters to
    `DASHStream.parse_manifest()`
- Changed: HLS streams to stop early on missing `EXT-X-ENDLIST` tag
    when polling the playlist doesn't yield new segments for twice
    its targetduration value
- Fixed: regex of optional protocol plugin parameters
- Fixed plugins: lrt, mediavitrina, mitele, NRK, pluzz, rtvs,
    showroom, turkuvaz, vimeo, youtube
- Docs: added migrations page for further guidance on resolving
    breaking changes
- Docs: split up, updated and improved API docs
- Build: moved project metadata to pyproject.toml (PEP621)
- Dependencies: added `trio`, `trio-websocket` and
    `typing-extensions`, and removed `importlib_metadata`


To generate a diff of this commit:
cvs rdiff -u -r1.45 -r1.46 pkgsrc/multimedia/streamlink/Makefile
cvs rdiff -u -r1.22 -r1.23 pkgsrc/multimedia/streamlink/PLIST
cvs rdiff -u -r1.25 -r1.26 pkgsrc/multimedia/streamlink/distinfo
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/multimedia/streamlink/patches/patch-build__backend_onbuild.py
cvs rdiff -u -r0 -r1.3 pkgsrc/multimedia/streamlink/patches/patch-setup.py

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/multimedia/streamlink/Makefile
diff -u pkgsrc/multimedia/streamlink/Makefile:1.45 pkgsrc/multimedia/streamlink/Makefile:1.46
--- pkgsrc/multimedia/streamlink/Makefile:1.45  Fri Apr 25 11:32:23 2025
+++ pkgsrc/multimedia/streamlink/Makefile       Mon Mar  2 20:31:12 2026
@@ -1,30 +1,36 @@
-# $NetBSD: Makefile,v 1.45 2025/04/25 11:32:23 wiz Exp $
+# $NetBSD: Makefile,v 1.46 2026/03/02 20:31:12 yhardy Exp $
 
-DISTNAME=      streamlink-5.5.1
-PKGREVISION=   3
+DISTNAME=      streamlink-8.1.2
 CATEGORIES=    multimedia
 MASTER_SITES=  ${MASTER_SITE_GITHUB:=streamlink/}
-GITHUB_TAG=    ${PKGVERSION_NOREV}
+GITHUB_RELEASE=        ${PKGVERSION_NOREV}
 
 MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
 HOMEPAGE=      https://streamlink.github.io/
 COMMENT=       Tool that pipes video streams into a video player
 LICENSE=       2-clause-bsd
 
-TOOL_DEPENDS+= ${PYPKGPREFIX}-versioningit>=1.1.1:../../devel/py-versioningit
-TOOL_DEPENDS+= ${PYPKGPREFIX}-setuptools>=78:../../devel/py-setuptools
+PYTHON_VERSIONS_INCOMPATIBLE=  27
+
+DEPENDS+=      ${PYPKGPREFIX}-certifi-[0-9]*:../../security/py-certifi
 DEPENDS+=      ${PYPKGPREFIX}-country-[0-9]*:../../geography/py-country
 DEPENDS+=      ${PYPKGPREFIX}-cryptodome>=3.4.3:../../security/py-cryptodome
+DEPENDS+=      ${PYPKGPREFIX}-exceptiongroup-[0-9]*:../../devel/py-exceptiongroup
 DEPENDS+=      ${PYPKGPREFIX}-isodate-[0-9]*:../../time/py-isodate
 DEPENDS+=      ${PYPKGPREFIX}-lxml-[0-9]*:../../textproc/py-lxml
 DEPENDS+=      ${PYPKGPREFIX}-Socks>=1.5.6:../../net/py-Socks
 DEPENDS+=      ${PYPKGPREFIX}-requests>=2.26.0:../../devel/py-requests
+DEPENDS+=      ${PYPKGPREFIX}-trio-[0-9]*:../../devel/py-trio
+DEPENDS+=      ${PYPKGPREFIX}-trio-websocket-[0-9]*:../../www/py-trio-websocket
 DEPENDS+=      ${PYPKGPREFIX}-websocket-client>=1.2.1:../../www/py-websocket-client
+TOOL_DEPENDS+= ${PYPKGPREFIX}-versioningit>=1.1.1:../../devel/py-versioningit
+TOOL_DEPENDS+= ${PYPKGPREFIX}-setuptools>=78:../../devel/py-setuptools
+TOOL_DEPENDS+= ${PYPKGPREFIX}-wheel-[0-9]*:../../devel/py-wheel
 TEST_DEPENDS+= ${PYPKGPREFIX}-flake8-[0-9]*:../../devel/py-flake8
 TEST_DEPENDS+= ${PYPKGPREFIX}-flake8-import-order-[0-9]*:../../devel/py-flake8-import-order
 TEST_DEPENDS+= ${PYPKGPREFIX}-freezegun>=1.0.0:../../devel/py-freezegun
 TEST_DEPENDS+= ${PYPKGPREFIX}-requests-mock-[0-9]*:../../devel/py-requests-mock
-TEST_DEPENDS+= ${PYPKGPREFIX}-test-asyncio-[0-9]*:../../devel/py-test-asyncio
+TEST_DEPENDS+= ${PYPKGPREFIX}-test-[0-9]*:../../devel/py-test
 TEST_DEPENDS+= ${PYPKGPREFIX}-test-cov-[0-9]*:../../devel/py-test-cov
 
 REPLACE_PYTHON+=       src/streamlink/packages/flashmedia/flv.py

Index: pkgsrc/multimedia/streamlink/PLIST
diff -u pkgsrc/multimedia/streamlink/PLIST:1.22 pkgsrc/multimedia/streamlink/PLIST:1.23
--- pkgsrc/multimedia/streamlink/PLIST:1.22     Fri Apr 25 11:32:23 2025
+++ pkgsrc/multimedia/streamlink/PLIST  Mon Mar  2 20:31:12 2026
@@ -1,11 +1,11 @@
-@comment $NetBSD: PLIST,v 1.22 2025/04/25 11:32:23 wiz Exp $
+@comment $NetBSD: PLIST,v 1.23 2026/03/02 20:31:12 yhardy Exp $
 bin/streamlink
-${PYSITELIB}/streamlink-0.0.0+unknown.dist-info/METADATA
-${PYSITELIB}/streamlink-0.0.0+unknown.dist-info/RECORD
-${PYSITELIB}/streamlink-0.0.0+unknown.dist-info/WHEEL
-${PYSITELIB}/streamlink-0.0.0+unknown.dist-info/entry_points.txt
-${PYSITELIB}/streamlink-0.0.0+unknown.dist-info/licenses/LICENSE
-${PYSITELIB}/streamlink-0.0.0+unknown.dist-info/top_level.txt
+${PYSITELIB}/${WHEEL_INFODIR}/METADATA
+${PYSITELIB}/${WHEEL_INFODIR}/RECORD
+${PYSITELIB}/${WHEEL_INFODIR}/WHEEL
+${PYSITELIB}/${WHEEL_INFODIR}/entry_points.txt
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/LICENSE
+${PYSITELIB}/${WHEEL_INFODIR}/top_level.txt
 ${PYSITELIB}/streamlink/__init__.py
 ${PYSITELIB}/streamlink/__init__.pyc
 ${PYSITELIB}/streamlink/__init__.pyo
@@ -48,28 +48,18 @@ ${PYSITELIB}/streamlink/plugin/__init__.
 ${PYSITELIB}/streamlink/plugin/api/__init__.py
 ${PYSITELIB}/streamlink/plugin/api/__init__.pyc
 ${PYSITELIB}/streamlink/plugin/api/__init__.pyo
-${PYSITELIB}/streamlink/plugin/api/http_session.py
-${PYSITELIB}/streamlink/plugin/api/http_session.pyc
-${PYSITELIB}/streamlink/plugin/api/http_session.pyi
-${PYSITELIB}/streamlink/plugin/api/http_session.pyo
 ${PYSITELIB}/streamlink/plugin/api/useragents.py
 ${PYSITELIB}/streamlink/plugin/api/useragents.pyc
 ${PYSITELIB}/streamlink/plugin/api/useragents.pyo
-${PYSITELIB}/streamlink/plugin/api/validate/__init__.py
-${PYSITELIB}/streamlink/plugin/api/validate/__init__.pyc
-${PYSITELIB}/streamlink/plugin/api/validate/__init__.pyo
-${PYSITELIB}/streamlink/plugin/api/validate/_exception.py
-${PYSITELIB}/streamlink/plugin/api/validate/_exception.pyc
-${PYSITELIB}/streamlink/plugin/api/validate/_exception.pyo
-${PYSITELIB}/streamlink/plugin/api/validate/_schemas.py
-${PYSITELIB}/streamlink/plugin/api/validate/_schemas.pyc
-${PYSITELIB}/streamlink/plugin/api/validate/_schemas.pyo
-${PYSITELIB}/streamlink/plugin/api/validate/_validate.py
-${PYSITELIB}/streamlink/plugin/api/validate/_validate.pyc
-${PYSITELIB}/streamlink/plugin/api/validate/_validate.pyo
-${PYSITELIB}/streamlink/plugin/api/validate/_validators.py
-${PYSITELIB}/streamlink/plugin/api/validate/_validators.pyc
-${PYSITELIB}/streamlink/plugin/api/validate/_validators.pyo
+${PYSITELIB}/streamlink/plugin/api/validate.py
+${PYSITELIB}/streamlink/plugin/api/validate.pyc
+${PYSITELIB}/streamlink/plugin/api/validate.pyo
+${PYSITELIB}/streamlink/plugin/api/webbrowser/__init__.py
+${PYSITELIB}/streamlink/plugin/api/webbrowser/__init__.pyc
+${PYSITELIB}/streamlink/plugin/api/webbrowser/__init__.pyo
+${PYSITELIB}/streamlink/plugin/api/webbrowser/aws_waf.py
+${PYSITELIB}/streamlink/plugin/api/webbrowser/aws_waf.pyc
+${PYSITELIB}/streamlink/plugin/api/webbrowser/aws_waf.pyo
 ${PYSITELIB}/streamlink/plugin/api/websocket.py
 ${PYSITELIB}/streamlink/plugin/api/websocket.pyc
 ${PYSITELIB}/streamlink/plugin/api/websocket.pyo
@@ -79,15 +69,13 @@ ${PYSITELIB}/streamlink/plugin/plugin.py
 ${PYSITELIB}/streamlink/plugins/__init__.py
 ${PYSITELIB}/streamlink/plugins/__init__.pyc
 ${PYSITELIB}/streamlink/plugins/__init__.pyo
+${PYSITELIB}/streamlink/plugins/_plugins.json
 ${PYSITELIB}/streamlink/plugins/abematv.py
 ${PYSITELIB}/streamlink/plugins/abematv.pyc
 ${PYSITELIB}/streamlink/plugins/abematv.pyo
 ${PYSITELIB}/streamlink/plugins/adultswim.py
 ${PYSITELIB}/streamlink/plugins/adultswim.pyc
 ${PYSITELIB}/streamlink/plugins/adultswim.pyo
-${PYSITELIB}/streamlink/plugins/afreeca.py
-${PYSITELIB}/streamlink/plugins/afreeca.pyc
-${PYSITELIB}/streamlink/plugins/afreeca.pyo
 ${PYSITELIB}/streamlink/plugins/albavision.py
 ${PYSITELIB}/streamlink/plugins/albavision.pyc
 ${PYSITELIB}/streamlink/plugins/albavision.pyo
@@ -124,15 +112,15 @@ ${PYSITELIB}/streamlink/plugins/bigo.pyo
 ${PYSITELIB}/streamlink/plugins/bilibili.py
 ${PYSITELIB}/streamlink/plugins/bilibili.pyc
 ${PYSITELIB}/streamlink/plugins/bilibili.pyo
+${PYSITELIB}/streamlink/plugins/blasttv.py
+${PYSITELIB}/streamlink/plugins/blasttv.pyc
+${PYSITELIB}/streamlink/plugins/blasttv.pyo
 ${PYSITELIB}/streamlink/plugins/blazetv.py
 ${PYSITELIB}/streamlink/plugins/blazetv.pyc
 ${PYSITELIB}/streamlink/plugins/blazetv.pyo
 ${PYSITELIB}/streamlink/plugins/bloomberg.py
 ${PYSITELIB}/streamlink/plugins/bloomberg.pyc
 ${PYSITELIB}/streamlink/plugins/bloomberg.pyo
-${PYSITELIB}/streamlink/plugins/booyah.py
-${PYSITELIB}/streamlink/plugins/booyah.pyc
-${PYSITELIB}/streamlink/plugins/booyah.pyo
 ${PYSITELIB}/streamlink/plugins/brightcove.py
 ${PYSITELIB}/streamlink/plugins/brightcove.pyc
 ${PYSITELIB}/streamlink/plugins/brightcove.pyo
@@ -148,6 +136,9 @@ ${PYSITELIB}/streamlink/plugins/cdnbg.py
 ${PYSITELIB}/streamlink/plugins/ceskatelevize.py
 ${PYSITELIB}/streamlink/plugins/ceskatelevize.pyc
 ${PYSITELIB}/streamlink/plugins/ceskatelevize.pyo
+${PYSITELIB}/streamlink/plugins/chzzk.py
+${PYSITELIB}/streamlink/plugins/chzzk.pyc
+${PYSITELIB}/streamlink/plugins/chzzk.pyo
 ${PYSITELIB}/streamlink/plugins/cinergroup.py
 ${PYSITELIB}/streamlink/plugins/cinergroup.pyc
 ${PYSITELIB}/streamlink/plugins/cinergroup.pyo
@@ -157,12 +148,12 @@ ${PYSITELIB}/streamlink/plugins/clubbing
 ${PYSITELIB}/streamlink/plugins/cmmedia.py
 ${PYSITELIB}/streamlink/plugins/cmmedia.pyc
 ${PYSITELIB}/streamlink/plugins/cmmedia.pyo
+${PYSITELIB}/streamlink/plugins/cnbce.py
+${PYSITELIB}/streamlink/plugins/cnbce.pyc
+${PYSITELIB}/streamlink/plugins/cnbce.pyo
 ${PYSITELIB}/streamlink/plugins/cnews.py
 ${PYSITELIB}/streamlink/plugins/cnews.pyc
 ${PYSITELIB}/streamlink/plugins/cnews.pyo
-${PYSITELIB}/streamlink/plugins/crunchyroll.py
-${PYSITELIB}/streamlink/plugins/crunchyroll.pyc
-${PYSITELIB}/streamlink/plugins/crunchyroll.pyo
 ${PYSITELIB}/streamlink/plugins/dailymotion.py
 ${PYSITELIB}/streamlink/plugins/dailymotion.pyc
 ${PYSITELIB}/streamlink/plugins/dailymotion.pyo
@@ -184,6 +175,9 @@ ${PYSITELIB}/streamlink/plugins/dogan.py
 ${PYSITELIB}/streamlink/plugins/dogus.py
 ${PYSITELIB}/streamlink/plugins/dogus.pyc
 ${PYSITELIB}/streamlink/plugins/dogus.pyo
+${PYSITELIB}/streamlink/plugins/douyin.py
+${PYSITELIB}/streamlink/plugins/douyin.pyc
+${PYSITELIB}/streamlink/plugins/douyin.pyo
 ${PYSITELIB}/streamlink/plugins/drdk.py
 ${PYSITELIB}/streamlink/plugins/drdk.pyc
 ${PYSITELIB}/streamlink/plugins/drdk.pyo
@@ -193,18 +187,9 @@ ${PYSITELIB}/streamlink/plugins/earthcam
 ${PYSITELIB}/streamlink/plugins/euronews.py
 ${PYSITELIB}/streamlink/plugins/euronews.pyc
 ${PYSITELIB}/streamlink/plugins/euronews.pyo
-${PYSITELIB}/streamlink/plugins/facebook.py
-${PYSITELIB}/streamlink/plugins/facebook.pyc
-${PYSITELIB}/streamlink/plugins/facebook.pyo
 ${PYSITELIB}/streamlink/plugins/filmon.py
 ${PYSITELIB}/streamlink/plugins/filmon.pyc
 ${PYSITELIB}/streamlink/plugins/filmon.pyo
-${PYSITELIB}/streamlink/plugins/foxtr.py
-${PYSITELIB}/streamlink/plugins/foxtr.pyc
-${PYSITELIB}/streamlink/plugins/foxtr.pyo
-${PYSITELIB}/streamlink/plugins/galatasaraytv.py
-${PYSITELIB}/streamlink/plugins/galatasaraytv.pyc
-${PYSITELIB}/streamlink/plugins/galatasaraytv.pyo
 ${PYSITELIB}/streamlink/plugins/goltelevision.py
 ${PYSITELIB}/streamlink/plugins/goltelevision.pyc
 ${PYSITELIB}/streamlink/plugins/goltelevision.pyo
@@ -235,21 +220,15 @@ ${PYSITELIB}/streamlink/plugins/huajiao.
 ${PYSITELIB}/streamlink/plugins/huya.py
 ${PYSITELIB}/streamlink/plugins/huya.pyc
 ${PYSITELIB}/streamlink/plugins/huya.pyo
-${PYSITELIB}/streamlink/plugins/idf1.py
-${PYSITELIB}/streamlink/plugins/idf1.pyc
-${PYSITELIB}/streamlink/plugins/idf1.pyo
-${PYSITELIB}/streamlink/plugins/indihometv.py
-${PYSITELIB}/streamlink/plugins/indihometv.pyc
-${PYSITELIB}/streamlink/plugins/indihometv.pyo
 ${PYSITELIB}/streamlink/plugins/invintus.py
 ${PYSITELIB}/streamlink/plugins/invintus.pyc
 ${PYSITELIB}/streamlink/plugins/invintus.pyo
+${PYSITELIB}/streamlink/plugins/kick.py
+${PYSITELIB}/streamlink/plugins/kick.pyc
+${PYSITELIB}/streamlink/plugins/kick.pyo
 ${PYSITELIB}/streamlink/plugins/kugou.py
 ${PYSITELIB}/streamlink/plugins/kugou.pyc
 ${PYSITELIB}/streamlink/plugins/kugou.pyo
-${PYSITELIB}/streamlink/plugins/linelive.py
-${PYSITELIB}/streamlink/plugins/linelive.pyc
-${PYSITELIB}/streamlink/plugins/linelive.pyo
 ${PYSITELIB}/streamlink/plugins/livestream.py
 ${PYSITELIB}/streamlink/plugins/livestream.pyc
 ${PYSITELIB}/streamlink/plugins/livestream.pyo
@@ -262,6 +241,9 @@ ${PYSITELIB}/streamlink/plugins/lrt.pyo
 ${PYSITELIB}/streamlink/plugins/ltv_lsm_lv.py
 ${PYSITELIB}/streamlink/plugins/ltv_lsm_lv.pyc
 ${PYSITELIB}/streamlink/plugins/ltv_lsm_lv.pyo
+${PYSITELIB}/streamlink/plugins/mangomolo.py
+${PYSITELIB}/streamlink/plugins/mangomolo.pyc
+${PYSITELIB}/streamlink/plugins/mangomolo.pyo
 ${PYSITELIB}/streamlink/plugins/mdstrm.py
 ${PYSITELIB}/streamlink/plugins/mdstrm.pyc
 ${PYSITELIB}/streamlink/plugins/mdstrm.pyo
@@ -271,12 +253,6 @@ ${PYSITELIB}/streamlink/plugins/mediakli
 ${PYSITELIB}/streamlink/plugins/mediavitrina.py
 ${PYSITELIB}/streamlink/plugins/mediavitrina.pyc
 ${PYSITELIB}/streamlink/plugins/mediavitrina.pyo
-${PYSITELIB}/streamlink/plugins/mildom.py
-${PYSITELIB}/streamlink/plugins/mildom.pyc
-${PYSITELIB}/streamlink/plugins/mildom.pyo
-${PYSITELIB}/streamlink/plugins/mitele.py
-${PYSITELIB}/streamlink/plugins/mitele.pyc
-${PYSITELIB}/streamlink/plugins/mitele.pyo
 ${PYSITELIB}/streamlink/plugins/mixcloud.py
 ${PYSITELIB}/streamlink/plugins/mixcloud.pyc
 ${PYSITELIB}/streamlink/plugins/mixcloud.pyo
@@ -289,9 +265,9 @@ ${PYSITELIB}/streamlink/plugins/mrtmk.py
 ${PYSITELIB}/streamlink/plugins/n13tv.py
 ${PYSITELIB}/streamlink/plugins/n13tv.pyc
 ${PYSITELIB}/streamlink/plugins/n13tv.pyo
-${PYSITELIB}/streamlink/plugins/nhkworld.py
-${PYSITELIB}/streamlink/plugins/nhkworld.pyc
-${PYSITELIB}/streamlink/plugins/nhkworld.pyo
+${PYSITELIB}/streamlink/plugins/nasaplus.py
+${PYSITELIB}/streamlink/plugins/nasaplus.pyc
+${PYSITELIB}/streamlink/plugins/nasaplus.pyo
 ${PYSITELIB}/streamlink/plugins/nicolive.py
 ${PYSITELIB}/streamlink/plugins/nicolive.pyc
 ${PYSITELIB}/streamlink/plugins/nicolive.pyo
@@ -301,15 +277,12 @@ ${PYSITELIB}/streamlink/plugins/nimotv.p
 ${PYSITELIB}/streamlink/plugins/nos.py
 ${PYSITELIB}/streamlink/plugins/nos.pyc
 ${PYSITELIB}/streamlink/plugins/nos.pyo
-${PYSITELIB}/streamlink/plugins/nownews.py
-${PYSITELIB}/streamlink/plugins/nownews.pyc
-${PYSITELIB}/streamlink/plugins/nownews.pyo
+${PYSITELIB}/streamlink/plugins/nowtvtr.py
+${PYSITELIB}/streamlink/plugins/nowtvtr.pyc
+${PYSITELIB}/streamlink/plugins/nowtvtr.pyo
 ${PYSITELIB}/streamlink/plugins/nrk.py
 ${PYSITELIB}/streamlink/plugins/nrk.pyc
 ${PYSITELIB}/streamlink/plugins/nrk.pyo
-${PYSITELIB}/streamlink/plugins/ntv.py
-${PYSITELIB}/streamlink/plugins/ntv.pyc
-${PYSITELIB}/streamlink/plugins/ntv.pyo
 ${PYSITELIB}/streamlink/plugins/okru.py
 ${PYSITELIB}/streamlink/plugins/okru.pyc
 ${PYSITELIB}/streamlink/plugins/okru.pyo
@@ -328,6 +301,9 @@ ${PYSITELIB}/streamlink/plugins/openrect
 ${PYSITELIB}/streamlink/plugins/pandalive.py
 ${PYSITELIB}/streamlink/plugins/pandalive.pyc
 ${PYSITELIB}/streamlink/plugins/pandalive.pyo
+${PYSITELIB}/streamlink/plugins/piaulizaportal.py
+${PYSITELIB}/streamlink/plugins/piaulizaportal.pyc
+${PYSITELIB}/streamlink/plugins/piaulizaportal.pyo
 ${PYSITELIB}/streamlink/plugins/picarto.py
 ${PYSITELIB}/streamlink/plugins/picarto.pyc
 ${PYSITELIB}/streamlink/plugins/picarto.pyo
@@ -343,24 +319,15 @@ ${PYSITELIB}/streamlink/plugins/pluto.py
 ${PYSITELIB}/streamlink/plugins/pluzz.py
 ${PYSITELIB}/streamlink/plugins/pluzz.pyc
 ${PYSITELIB}/streamlink/plugins/pluzz.pyo
-${PYSITELIB}/streamlink/plugins/qq.py
-${PYSITELIB}/streamlink/plugins/qq.pyc
-${PYSITELIB}/streamlink/plugins/qq.pyo
 ${PYSITELIB}/streamlink/plugins/radiko.py
 ${PYSITELIB}/streamlink/plugins/radiko.pyc
 ${PYSITELIB}/streamlink/plugins/radiko.pyo
-${PYSITELIB}/streamlink/plugins/radionet.py
-${PYSITELIB}/streamlink/plugins/radionet.pyc
-${PYSITELIB}/streamlink/plugins/radionet.pyo
 ${PYSITELIB}/streamlink/plugins/raiplay.py
 ${PYSITELIB}/streamlink/plugins/raiplay.pyc
 ${PYSITELIB}/streamlink/plugins/raiplay.pyo
 ${PYSITELIB}/streamlink/plugins/reuters.py
 ${PYSITELIB}/streamlink/plugins/reuters.pyc
 ${PYSITELIB}/streamlink/plugins/reuters.pyo
-${PYSITELIB}/streamlink/plugins/rtbf.py
-${PYSITELIB}/streamlink/plugins/rtbf.pyc
-${PYSITELIB}/streamlink/plugins/rtbf.pyo
 ${PYSITELIB}/streamlink/plugins/rtpa.py
 ${PYSITELIB}/streamlink/plugins/rtpa.pyc
 ${PYSITELIB}/streamlink/plugins/rtpa.pyo
@@ -382,6 +349,9 @@ ${PYSITELIB}/streamlink/plugins/sbscokr.
 ${PYSITELIB}/streamlink/plugins/showroom.py
 ${PYSITELIB}/streamlink/plugins/showroom.pyc
 ${PYSITELIB}/streamlink/plugins/showroom.pyo
+${PYSITELIB}/streamlink/plugins/soop.py
+${PYSITELIB}/streamlink/plugins/soop.pyc
+${PYSITELIB}/streamlink/plugins/soop.pyo
 ${PYSITELIB}/streamlink/plugins/sportal.py
 ${PYSITELIB}/streamlink/plugins/sportal.pyc
 ${PYSITELIB}/streamlink/plugins/sportal.pyo
@@ -397,9 +367,6 @@ ${PYSITELIB}/streamlink/plugins/stadium.
 ${PYSITELIB}/streamlink/plugins/steam.py
 ${PYSITELIB}/streamlink/plugins/steam.pyc
 ${PYSITELIB}/streamlink/plugins/steam.pyo
-${PYSITELIB}/streamlink/plugins/streamable.py
-${PYSITELIB}/streamlink/plugins/streamable.pyc
-${PYSITELIB}/streamlink/plugins/streamable.pyo
 ${PYSITELIB}/streamlink/plugins/streann.py
 ${PYSITELIB}/streamlink/plugins/streann.pyc
 ${PYSITELIB}/streamlink/plugins/streann.pyo
@@ -421,6 +388,9 @@ ${PYSITELIB}/streamlink/plugins/telemadr
 ${PYSITELIB}/streamlink/plugins/tf1.py
 ${PYSITELIB}/streamlink/plugins/tf1.pyc
 ${PYSITELIB}/streamlink/plugins/tf1.pyo
+${PYSITELIB}/streamlink/plugins/tiktok.py
+${PYSITELIB}/streamlink/plugins/tiktok.pyc
+${PYSITELIB}/streamlink/plugins/tiktok.pyo
 ${PYSITELIB}/streamlink/plugins/trovo.py
 ${PYSITELIB}/streamlink/plugins/trovo.pyc
 ${PYSITELIB}/streamlink/plugins/trovo.pyo
@@ -433,9 +403,6 @@ ${PYSITELIB}/streamlink/plugins/tv360.py
 ${PYSITELIB}/streamlink/plugins/tv3cat.py
 ${PYSITELIB}/streamlink/plugins/tv3cat.pyc
 ${PYSITELIB}/streamlink/plugins/tv3cat.pyo
-${PYSITELIB}/streamlink/plugins/tv4play.py
-${PYSITELIB}/streamlink/plugins/tv4play.pyc
-${PYSITELIB}/streamlink/plugins/tv4play.pyo
 ${PYSITELIB}/streamlink/plugins/tv5monde.py
 ${PYSITELIB}/streamlink/plugins/tv5monde.pyc
 ${PYSITELIB}/streamlink/plugins/tv5monde.pyo
@@ -454,12 +421,6 @@ ${PYSITELIB}/streamlink/plugins/tviplaye
 ${PYSITELIB}/streamlink/plugins/tvp.py
 ${PYSITELIB}/streamlink/plugins/tvp.pyc
 ${PYSITELIB}/streamlink/plugins/tvp.pyo
-${PYSITELIB}/streamlink/plugins/tvrby.py
-${PYSITELIB}/streamlink/plugins/tvrby.pyc
-${PYSITELIB}/streamlink/plugins/tvrby.pyo
-${PYSITELIB}/streamlink/plugins/tvrplus.py
-${PYSITELIB}/streamlink/plugins/tvrplus.pyc
-${PYSITELIB}/streamlink/plugins/tvrplus.pyo
 ${PYSITELIB}/streamlink/plugins/tvtoya.py
 ${PYSITELIB}/streamlink/plugins/tvtoya.pyc
 ${PYSITELIB}/streamlink/plugins/tvtoya.pyo
@@ -487,21 +448,9 @@ ${PYSITELIB}/streamlink/plugins/vinhlong
 ${PYSITELIB}/streamlink/plugins/vk.py
 ${PYSITELIB}/streamlink/plugins/vk.pyc
 ${PYSITELIB}/streamlink/plugins/vk.pyo
-${PYSITELIB}/streamlink/plugins/vkplay.py
-${PYSITELIB}/streamlink/plugins/vkplay.pyc
-${PYSITELIB}/streamlink/plugins/vkplay.pyo
-${PYSITELIB}/streamlink/plugins/vlive.py
-${PYSITELIB}/streamlink/plugins/vlive.pyc
-${PYSITELIB}/streamlink/plugins/vlive.pyo
-${PYSITELIB}/streamlink/plugins/vtvgo.py
-${PYSITELIB}/streamlink/plugins/vtvgo.pyc
-${PYSITELIB}/streamlink/plugins/vtvgo.pyo
-${PYSITELIB}/streamlink/plugins/wasd.py
-${PYSITELIB}/streamlink/plugins/wasd.pyc
-${PYSITELIB}/streamlink/plugins/wasd.pyo
-${PYSITELIB}/streamlink/plugins/webtv.py
-${PYSITELIB}/streamlink/plugins/webtv.pyc
-${PYSITELIB}/streamlink/plugins/webtv.pyo
+${PYSITELIB}/streamlink/plugins/vkvideolive.py
+${PYSITELIB}/streamlink/plugins/vkvideolive.pyc
+${PYSITELIB}/streamlink/plugins/vkvideolive.pyo
 ${PYSITELIB}/streamlink/plugins/welt.py
 ${PYSITELIB}/streamlink/plugins/welt.pyc
 ${PYSITELIB}/streamlink/plugins/welt.pyo
@@ -523,25 +472,41 @@ ${PYSITELIB}/streamlink/plugins/zdf_medi
 ${PYSITELIB}/streamlink/plugins/zeenews.py
 ${PYSITELIB}/streamlink/plugins/zeenews.pyc
 ${PYSITELIB}/streamlink/plugins/zeenews.pyo
-${PYSITELIB}/streamlink/plugins/zengatv.py
-${PYSITELIB}/streamlink/plugins/zengatv.pyc
-${PYSITELIB}/streamlink/plugins/zengatv.pyo
-${PYSITELIB}/streamlink/plugins/zhanqi.py
-${PYSITELIB}/streamlink/plugins/zhanqi.pyc
-${PYSITELIB}/streamlink/plugins/zhanqi.pyo
 ${PYSITELIB}/streamlink/py.typed
-${PYSITELIB}/streamlink/session.py
-${PYSITELIB}/streamlink/session.pyc
-${PYSITELIB}/streamlink/session.pyo
+${PYSITELIB}/streamlink/session/__init__.py
+${PYSITELIB}/streamlink/session/__init__.pyc
+${PYSITELIB}/streamlink/session/__init__.pyo
+${PYSITELIB}/streamlink/session/http.py
+${PYSITELIB}/streamlink/session/http.pyc
+${PYSITELIB}/streamlink/session/http.pyi
+${PYSITELIB}/streamlink/session/http.pyo
+${PYSITELIB}/streamlink/session/http_useragents.py
+${PYSITELIB}/streamlink/session/http_useragents.pyc
+${PYSITELIB}/streamlink/session/http_useragents.pyo
+${PYSITELIB}/streamlink/session/options.py
+${PYSITELIB}/streamlink/session/options.pyc
+${PYSITELIB}/streamlink/session/options.pyo
+${PYSITELIB}/streamlink/session/plugins.py
+${PYSITELIB}/streamlink/session/plugins.pyc
+${PYSITELIB}/streamlink/session/plugins.pyo
+${PYSITELIB}/streamlink/session/session.py
+${PYSITELIB}/streamlink/session/session.pyc
+${PYSITELIB}/streamlink/session/session.pyo
 ${PYSITELIB}/streamlink/stream/__init__.py
 ${PYSITELIB}/streamlink/stream/__init__.pyc
 ${PYSITELIB}/streamlink/stream/__init__.pyo
-${PYSITELIB}/streamlink/stream/dash.py
-${PYSITELIB}/streamlink/stream/dash.pyc
-${PYSITELIB}/streamlink/stream/dash.pyo
-${PYSITELIB}/streamlink/stream/dash_manifest.py
-${PYSITELIB}/streamlink/stream/dash_manifest.pyc
-${PYSITELIB}/streamlink/stream/dash_manifest.pyo
+${PYSITELIB}/streamlink/stream/dash/__init__.py
+${PYSITELIB}/streamlink/stream/dash/__init__.pyc
+${PYSITELIB}/streamlink/stream/dash/__init__.pyo
+${PYSITELIB}/streamlink/stream/dash/dash.py
+${PYSITELIB}/streamlink/stream/dash/dash.pyc
+${PYSITELIB}/streamlink/stream/dash/dash.pyo
+${PYSITELIB}/streamlink/stream/dash/manifest.py
+${PYSITELIB}/streamlink/stream/dash/manifest.pyc
+${PYSITELIB}/streamlink/stream/dash/manifest.pyo
+${PYSITELIB}/streamlink/stream/dash/segment.py
+${PYSITELIB}/streamlink/stream/dash/segment.pyc
+${PYSITELIB}/streamlink/stream/dash/segment.pyo
 ${PYSITELIB}/streamlink/stream/ffmpegmux.py
 ${PYSITELIB}/streamlink/stream/ffmpegmux.pyc
 ${PYSITELIB}/streamlink/stream/ffmpegmux.pyo
@@ -551,18 +516,30 @@ ${PYSITELIB}/streamlink/stream/file.pyo
 ${PYSITELIB}/streamlink/stream/filtered.py
 ${PYSITELIB}/streamlink/stream/filtered.pyc
 ${PYSITELIB}/streamlink/stream/filtered.pyo
-${PYSITELIB}/streamlink/stream/hls.py
-${PYSITELIB}/streamlink/stream/hls.pyc
-${PYSITELIB}/streamlink/stream/hls.pyo
-${PYSITELIB}/streamlink/stream/hls_playlist.py
-${PYSITELIB}/streamlink/stream/hls_playlist.pyc
-${PYSITELIB}/streamlink/stream/hls_playlist.pyo
+${PYSITELIB}/streamlink/stream/hls/__init__.py
+${PYSITELIB}/streamlink/stream/hls/__init__.pyc
+${PYSITELIB}/streamlink/stream/hls/__init__.pyo
+${PYSITELIB}/streamlink/stream/hls/hls.py
+${PYSITELIB}/streamlink/stream/hls/hls.pyc
+${PYSITELIB}/streamlink/stream/hls/hls.pyo
+${PYSITELIB}/streamlink/stream/hls/m3u8.py
+${PYSITELIB}/streamlink/stream/hls/m3u8.pyc
+${PYSITELIB}/streamlink/stream/hls/m3u8.pyo
+${PYSITELIB}/streamlink/stream/hls/segment.py
+${PYSITELIB}/streamlink/stream/hls/segment.pyc
+${PYSITELIB}/streamlink/stream/hls/segment.pyo
 ${PYSITELIB}/streamlink/stream/http.py
 ${PYSITELIB}/streamlink/stream/http.pyc
 ${PYSITELIB}/streamlink/stream/http.pyo
-${PYSITELIB}/streamlink/stream/segmented.py
-${PYSITELIB}/streamlink/stream/segmented.pyc
-${PYSITELIB}/streamlink/stream/segmented.pyo
+${PYSITELIB}/streamlink/stream/segmented/__init__.py
+${PYSITELIB}/streamlink/stream/segmented/__init__.pyc
+${PYSITELIB}/streamlink/stream/segmented/__init__.pyo
+${PYSITELIB}/streamlink/stream/segmented/segment.py
+${PYSITELIB}/streamlink/stream/segmented/segment.pyc
+${PYSITELIB}/streamlink/stream/segmented/segment.pyo
+${PYSITELIB}/streamlink/stream/segmented/segmented.py
+${PYSITELIB}/streamlink/stream/segmented/segmented.pyc
+${PYSITELIB}/streamlink/stream/segmented/segmented.pyo
 ${PYSITELIB}/streamlink/stream/stream.py
 ${PYSITELIB}/streamlink/stream/stream.pyc
 ${PYSITELIB}/streamlink/stream/stream.pyo
@@ -587,6 +564,9 @@ ${PYSITELIB}/streamlink/utils/crypto.pyo
 ${PYSITELIB}/streamlink/utils/data.py
 ${PYSITELIB}/streamlink/utils/data.pyc
 ${PYSITELIB}/streamlink/utils/data.pyo
+${PYSITELIB}/streamlink/utils/dataclass.py
+${PYSITELIB}/streamlink/utils/dataclass.pyc
+${PYSITELIB}/streamlink/utils/dataclass.pyo
 ${PYSITELIB}/streamlink/utils/formatter.py
 ${PYSITELIB}/streamlink/utils/formatter.pyc
 ${PYSITELIB}/streamlink/utils/formatter.pyo
@@ -602,33 +582,157 @@ ${PYSITELIB}/streamlink/utils/named_pipe
 ${PYSITELIB}/streamlink/utils/parse.py
 ${PYSITELIB}/streamlink/utils/parse.pyc
 ${PYSITELIB}/streamlink/utils/parse.pyo
+${PYSITELIB}/streamlink/utils/path.py
+${PYSITELIB}/streamlink/utils/path.pyc
+${PYSITELIB}/streamlink/utils/path.pyo
 ${PYSITELIB}/streamlink/utils/processoutput.py
 ${PYSITELIB}/streamlink/utils/processoutput.pyc
 ${PYSITELIB}/streamlink/utils/processoutput.pyo
+${PYSITELIB}/streamlink/utils/random.py
+${PYSITELIB}/streamlink/utils/random.pyc
+${PYSITELIB}/streamlink/utils/random.pyo
+${PYSITELIB}/streamlink/utils/socket.py
+${PYSITELIB}/streamlink/utils/socket.pyc
+${PYSITELIB}/streamlink/utils/socket.pyo
+${PYSITELIB}/streamlink/utils/thread.py
+${PYSITELIB}/streamlink/utils/thread.pyc
+${PYSITELIB}/streamlink/utils/thread.pyo
 ${PYSITELIB}/streamlink/utils/times.py
 ${PYSITELIB}/streamlink/utils/times.pyc
 ${PYSITELIB}/streamlink/utils/times.pyo
 ${PYSITELIB}/streamlink/utils/url.py
 ${PYSITELIB}/streamlink/utils/url.pyc
 ${PYSITELIB}/streamlink/utils/url.pyo
+${PYSITELIB}/streamlink/validate/__init__.py
+${PYSITELIB}/streamlink/validate/__init__.pyc
+${PYSITELIB}/streamlink/validate/__init__.pyo
+${PYSITELIB}/streamlink/validate/_exception.py
+${PYSITELIB}/streamlink/validate/_exception.pyc
+${PYSITELIB}/streamlink/validate/_exception.pyo
+${PYSITELIB}/streamlink/validate/_schemas.py
+${PYSITELIB}/streamlink/validate/_schemas.pyc
+${PYSITELIB}/streamlink/validate/_schemas.pyo
+${PYSITELIB}/streamlink/validate/_validate.py
+${PYSITELIB}/streamlink/validate/_validate.pyc
+${PYSITELIB}/streamlink/validate/_validate.pyo
+${PYSITELIB}/streamlink/validate/_validators.py
+${PYSITELIB}/streamlink/validate/_validators.pyc
+${PYSITELIB}/streamlink/validate/_validators.pyo
+${PYSITELIB}/streamlink/webbrowser/__init__.py
+${PYSITELIB}/streamlink/webbrowser/__init__.pyc
+${PYSITELIB}/streamlink/webbrowser/__init__.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/__init__.py
+${PYSITELIB}/streamlink/webbrowser/cdp/__init__.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/__init__.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/client.py
+${PYSITELIB}/streamlink/webbrowser/cdp/client.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/client.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/connection.py
+${PYSITELIB}/streamlink/webbrowser/cdp/connection.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/connection.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/__init__.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/__init__.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/__init__.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/browser.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/browser.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/browser.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/debugger.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/debugger.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/debugger.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/dom.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/dom.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/dom.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/emulation.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/emulation.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/emulation.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/fetch.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/fetch.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/fetch.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/input_.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/input_.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/input_.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/inspector.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/inspector.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/inspector.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/io.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/io.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/io.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/network.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/network.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/network.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/page.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/page.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/page.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/runtime.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/runtime.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/runtime.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/security.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/security.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/security.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/target.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/target.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/target.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/util.py
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/util.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/devtools/util.pyo
+${PYSITELIB}/streamlink/webbrowser/cdp/exceptions.py
+${PYSITELIB}/streamlink/webbrowser/cdp/exceptions.pyc
+${PYSITELIB}/streamlink/webbrowser/cdp/exceptions.pyo
+${PYSITELIB}/streamlink/webbrowser/chromium.py
+${PYSITELIB}/streamlink/webbrowser/chromium.pyc
+${PYSITELIB}/streamlink/webbrowser/chromium.pyo
+${PYSITELIB}/streamlink/webbrowser/exceptions.py
+${PYSITELIB}/streamlink/webbrowser/exceptions.pyc
+${PYSITELIB}/streamlink/webbrowser/exceptions.pyo
+${PYSITELIB}/streamlink/webbrowser/webbrowser.py
+${PYSITELIB}/streamlink/webbrowser/webbrowser.pyc
+${PYSITELIB}/streamlink/webbrowser/webbrowser.pyo
 ${PYSITELIB}/streamlink_cli/__init__.py
 ${PYSITELIB}/streamlink_cli/__init__.pyc
 ${PYSITELIB}/streamlink_cli/__init__.pyo
 ${PYSITELIB}/streamlink_cli/__main__.py
 ${PYSITELIB}/streamlink_cli/__main__.pyc
 ${PYSITELIB}/streamlink_cli/__main__.pyo
+${PYSITELIB}/streamlink_cli/_parser.py
+${PYSITELIB}/streamlink_cli/_parser.pyc
+${PYSITELIB}/streamlink_cli/_parser.pyo
 ${PYSITELIB}/streamlink_cli/argparser.py
 ${PYSITELIB}/streamlink_cli/argparser.pyc
 ${PYSITELIB}/streamlink_cli/argparser.pyo
 ${PYSITELIB}/streamlink_cli/compat.py
 ${PYSITELIB}/streamlink_cli/compat.pyc
 ${PYSITELIB}/streamlink_cli/compat.pyo
-${PYSITELIB}/streamlink_cli/console.py
-${PYSITELIB}/streamlink_cli/console.pyc
-${PYSITELIB}/streamlink_cli/console.pyo
+${PYSITELIB}/streamlink_cli/console/__init__.py
+${PYSITELIB}/streamlink_cli/console/__init__.pyc
+${PYSITELIB}/streamlink_cli/console/__init__.pyo
+${PYSITELIB}/streamlink_cli/console/console.py
+${PYSITELIB}/streamlink_cli/console/console.pyc
+${PYSITELIB}/streamlink_cli/console/console.pyo
+${PYSITELIB}/streamlink_cli/console/progress.py
+${PYSITELIB}/streamlink_cli/console/progress.pyc
+${PYSITELIB}/streamlink_cli/console/progress.pyo
+${PYSITELIB}/streamlink_cli/console/stream.py
+${PYSITELIB}/streamlink_cli/console/stream.pyc
+${PYSITELIB}/streamlink_cli/console/stream.pyo
+${PYSITELIB}/streamlink_cli/console/stream_wrapper.py
+${PYSITELIB}/streamlink_cli/console/stream_wrapper.pyc
+${PYSITELIB}/streamlink_cli/console/stream_wrapper.pyi
+${PYSITELIB}/streamlink_cli/console/stream_wrapper.pyo
+${PYSITELIB}/streamlink_cli/console/terminal.py
+${PYSITELIB}/streamlink_cli/console/terminal.pyc
+${PYSITELIB}/streamlink_cli/console/terminal.pyo
+${PYSITELIB}/streamlink_cli/console/user_input.py
+${PYSITELIB}/streamlink_cli/console/user_input.pyc
+${PYSITELIB}/streamlink_cli/console/user_input.pyo
+${PYSITELIB}/streamlink_cli/console/windows.py
+${PYSITELIB}/streamlink_cli/console/windows.pyc
+${PYSITELIB}/streamlink_cli/console/windows.pyo
 ${PYSITELIB}/streamlink_cli/constants.py
 ${PYSITELIB}/streamlink_cli/constants.pyc
 ${PYSITELIB}/streamlink_cli/constants.pyo
+${PYSITELIB}/streamlink_cli/exceptions.py
+${PYSITELIB}/streamlink_cli/exceptions.pyc
+${PYSITELIB}/streamlink_cli/exceptions.pyo
 ${PYSITELIB}/streamlink_cli/main.py
 ${PYSITELIB}/streamlink_cli/main.pyc
 ${PYSITELIB}/streamlink_cli/main.pyo
@@ -648,6 +752,9 @@ ${PYSITELIB}/streamlink_cli/output/playe
 ${PYSITELIB}/streamlink_cli/output/player.pyc
 ${PYSITELIB}/streamlink_cli/output/player.pyo
 ${PYSITELIB}/streamlink_cli/py.typed
+${PYSITELIB}/streamlink_cli/show_matchers.py
+${PYSITELIB}/streamlink_cli/show_matchers.pyc
+${PYSITELIB}/streamlink_cli/show_matchers.pyo
 ${PYSITELIB}/streamlink_cli/streamrunner.py
 ${PYSITELIB}/streamlink_cli/streamrunner.pyc
 ${PYSITELIB}/streamlink_cli/streamrunner.pyo
@@ -663,9 +770,9 @@ ${PYSITELIB}/streamlink_cli/utils/path.p
 ${PYSITELIB}/streamlink_cli/utils/player.py
 ${PYSITELIB}/streamlink_cli/utils/player.pyc
 ${PYSITELIB}/streamlink_cli/utils/player.pyo
-${PYSITELIB}/streamlink_cli/utils/progress.py
-${PYSITELIB}/streamlink_cli/utils/progress.pyc
-${PYSITELIB}/streamlink_cli/utils/progress.pyo
 ${PYSITELIB}/streamlink_cli/utils/versioncheck.py
 ${PYSITELIB}/streamlink_cli/utils/versioncheck.pyc
 ${PYSITELIB}/streamlink_cli/utils/versioncheck.pyo
+man/man1/streamlink.1
+share/bash-completion/completions/streamlink
+share/zsh/site-functions/_streamlink

Index: pkgsrc/multimedia/streamlink/distinfo
diff -u pkgsrc/multimedia/streamlink/distinfo:1.25 pkgsrc/multimedia/streamlink/distinfo:1.26
--- pkgsrc/multimedia/streamlink/distinfo:1.25  Mon May  8 19:24:46 2023
+++ pkgsrc/multimedia/streamlink/distinfo       Mon Mar  2 20:31:12 2026
@@ -1,5 +1,7 @@
-$NetBSD: distinfo,v 1.25 2023/05/08 19:24:46 yhardy Exp $
+$NetBSD: distinfo,v 1.26 2026/03/02 20:31:12 yhardy Exp $
 
-BLAKE2s (streamlink-5.5.1.tar.gz) = b9fab7efbaf5c2c88521aefe9a01b7fd1f1ec82212ea0348b6183c10980d27ee
-SHA512 (streamlink-5.5.1.tar.gz) = 492e7cce3cb3917b0652206088f0fbffdfcd47ba9517402e1d22fbb2fb9627b3d1b8da0f31d9f2b799ff7236e42a8473d447e6922e2485f8ce8332b4c52db0db
-Size (streamlink-5.5.1.tar.gz) = 496887 bytes
+BLAKE2s (streamlink-8.1.2.tar.gz) = 1bfc36d19ddbb18760b0f16a80ac32f3281e1c9aecc217eacc8f482e390fc9c8
+SHA512 (streamlink-8.1.2.tar.gz) = ce57617ba1de2fbb62e67abb406ae2550f9fd92ed20422480d8b0f8deb8fc7a9af1498de03d299259b983d4467fb323c4a600e16aed9d44b7b81581d9c3f3b55
+Size (streamlink-8.1.2.tar.gz) = 823590 bytes
+SHA1 (patch-build__backend_onbuild.py) = c73f4a88f76e5ae6db0b0b993206d270f36115ec
+SHA1 (patch-setup.py) = 629d625e1566e3deff082806d25d4cdcdf9459e6

Added files:

Index: pkgsrc/multimedia/streamlink/patches/patch-build__backend_onbuild.py
diff -u /dev/null pkgsrc/multimedia/streamlink/patches/patch-build__backend_onbuild.py:1.1
--- /dev/null   Mon Mar  2 20:31:12 2026
+++ pkgsrc/multimedia/streamlink/patches/patch-build__backend_onbuild.py        Mon Mar  2 20:31:12 2026
@@ -0,0 +1,31 @@
+$NetBSD: patch-build__backend_onbuild.py,v 1.1 2026/03/02 20:31:12 yhardy Exp $
+
+Match the call parameters with how it is used by our py-versioningit package.
+
+--- build_backend/onbuild.py.orig      2024-11-04 16:33:10.000000000 +0000
++++ build_backend/onbuild.py
+@@ -22,11 +22,12 @@ except ImportError:  # pragma: no cover
+ def onbuild(
+     *,
+     is_source: bool,
+-    template_fields: dict[str, Any],
+-    params: dict[str, Any],
++    template_fields: Optional[dict[str, Any]] = {},
++    params: Optional[dict[str, Any]] = {},
+     # backward compatibility for `versioningit <3.0.0`
+     build_dir: str | Path | None = None,
+     file_provider: SetuptoolsFileProvider | None = None,
++    version: Optional[str] = None
+ ):
+     """
+     Remove the ``versioningit`` build-requirement from Streamlink's source distribution.
+@@ -49,7 +50,8 @@ def onbuild(
+         raise RuntimeError("Missing file_provider or build_dir")
+ 
+     pkg_dir: Path = base_dir / "src" if is_source else base_dir
+-    version: str = template_fields["version"]
++    if version == None:
++        version = template_fields["version"]
+     cmproxy: Proxy[str]
+ 
+     # Remove versioningit from ``build-system.requires`` in ``pyproject.toml``

Index: pkgsrc/multimedia/streamlink/patches/patch-setup.py
diff -u /dev/null pkgsrc/multimedia/streamlink/patches/patch-setup.py:1.3
--- /dev/null   Mon Mar  2 20:31:12 2026
+++ pkgsrc/multimedia/streamlink/patches/patch-setup.py Mon Mar  2 20:31:12 2026
@@ -0,0 +1,21 @@
+$NetBSD: patch-setup.py,v 1.3 2026/03/02 20:31:12 yhardy Exp $
+
+Install manpages in ${PKGMANDIR}.
+
+--- setup.py.orig      2025-11-11 16:12:14.488784600 +0000
++++ setup.py
+@@ -1,4 +1,5 @@
+ import sys
++from os import getenv, path
+ from textwrap import dedent
+ 
+ 
+@@ -59,7 +60,7 @@ data_files = [
+     # man page:
+     #  requires the pre-built man page file via sphinx ("docs" dependency group)
+     #  `make --directory=docs clean man`
+-    ("share/man/man1", ["docs/_build/man/streamlink.1"]),
++    (getenv("PKGMANDIR") + "/man1", ["docs/_build/man/streamlink.1"]),
+ ]
+ data_files = [
+     (destdir, [file for file in srcfiles if Path(file).exists()])



Home | Main Index | Thread Index | Old Index