Add the `key` attribute to the `Map` class, so segment maps can be
encrypted independently or left as plain text, depending on the order
of the `EXT-X-MAP` and `EXT-X-KEY` tags in the playlist.
TODO:
Rewrite the `HLSSegment`, `HLSStreamWriter` and `HLSStreamWorker`
classes based on the logic of the DASH implementation, where
init segments are queued by the worker separately.
- Add `plugins_lazy` keyword to `Streamlink` session class
- Load pre-built plugins JSON data including matchers and arguments data
- Fall back to loading all built-in plugins if loading JSON data fails
- Iterate matcher/argument data of loaded and still unloaded plugins
- Load plugin modules of unloaded plugins when matching URLs are found
- Refactor `utils.modules` and add `get_finder()` function
- Change `--plugins` output from "Loaded plugins" to "Available plugins"
- Add tests
- Move matcher priority tests from `test_session` to `test_plugins`
- Move the `parser_helper()` function from `streamlink_cli.main`
into the `streamlink_cli._parser` module
- Refactor `ext_argparse` and set default import paths
- Update import path in `build-shell-completions.sh`
Unfortunately, the `streamlink_cli._parser` module can't be excluded
from the sdist/wheel distributions, as packagers might build
shell completions from the installed `streamlink_cli` package
instead of using the pre-built shell completions included in the sdist
or building them from an editable install.
- Move plugin load/resolve logic into the `streamlink.session.plugins`
module with the `StreamlinkPlugins` class
- Make `Streamlink.plugins` an instance of this class
- Add the `plugins_builtin` keyword argument to the `Streamlink` class
and set its default value to `True`
- Deprecate the `Streamlink.{{get,load}_plugins,load_builtin_plugins}()`
methods, which are now wrappers for the respective `StreamlinkPlugins`
implementations
- Update `streamlink_cli.main` and all other `Streamlink` session
usages accordingly (in scripts and tests)
- Update session docs
- Move and update plugin load/resolve tests
- Make all `Argument` attributes immutable
- Add `Argument.__hash__()` and `Argument.__eq__()` methods,
so two `Argument` objects can be compared for equality
- Fix minor typing issues
- Move `streamlink.plugin.api.http_session` module
to `streamlink.session.http`
- Deprecate old (and unnecessary) `HTTPSession` export
in `streamlink.plugin.api`
- Fix custom `HTTPAdapter` imports in plugins
- Fix imports and fix monkeypatch paths in tests
In the next commit:
Restore the `streamlink.plugin.api.http_session` module and re-export
`HTTPSession` and the `HTTPAdapter` classes with deprecation warnings.
- Move `StreamlinkOptions` from `streamlink.session`
to `streamlink.session.options`
- Move docstring containing options list from `Streamlink.set_option()`
to `StreamlinkOptions` and add this class to the docs
- Move default options from `Streamlink` constructor
to `StreamlinkOptions._DEFAULTS`, so all options data is defined
in the `streamlink.session.options` module
- Move session options tests to `tests.session.test_options`
and change order of tests
- Use global finder cache via `pkgutil.get_importer()`
instead of always creating a new `FileFinder` object for each module
- Add `exec_module()` for being able to reuse `PathEntryFinder` objects
returned by `pkgutil.iter_modules()`
- Add support for pathlib path objects
- Update tests
- set Referer and Origin headers
- only keep the `wsSecret` and `wsTime` query string params
in the stream URLs
- remove stream URL HEAD requests for checking the availability
- add stream priority override for faulty TLS server configs