streamlink 7.1.2__tar.gz → 7.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {streamlink-7.1.2 → streamlink-7.2.0}/CHANGELOG.md +41 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/PKG-INFO +5 -2
- {streamlink-7.1.2 → streamlink-7.2.0}/completions/zsh/_streamlink +25 -12
- {streamlink-7.1.2 → streamlink-7.2.0}/dev-requirements.txt +3 -3
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_build/man/streamlink.1 +26 -13
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/styles/custom.css +0 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/api_guide/quickstart.rst +41 -5
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/changelog.md +41 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/install.rst +39 -20
- {streamlink-7.1.2 → streamlink-7.2.0}/pyproject.toml +8 -2
- {streamlink-7.1.2 → streamlink-7.2.0}/setup.py +1 -1
- streamlink-7.2.0/src/streamlink/_version.py +1 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/logger.py +15 -20
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/plugin.py +2 -0
- streamlink-7.2.0/src/streamlink/plugins/ceskatelevize.py +160 -0
- streamlink-7.2.0/src/streamlink/plugins/euronews.py +130 -0
- streamlink-7.2.0/src/streamlink/plugins/kick.py +200 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/nicolive.py +68 -19
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/nos.py +8 -2
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/okru.py +12 -29
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/pandalive.py +32 -9
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/pluzz.py +50 -54
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tf1.py +3 -3
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/twitch.py +54 -50
- streamlink-7.2.0/src/streamlink/plugins/wwenetwork.py +172 -0
- streamlink-7.2.0/src/streamlink/session/http_useragents.py +16 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/ffmpegmux.py +1 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/hls/hls.py +33 -7
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/hls/m3u8.py +4 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/hls/segment.py +29 -2
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/l10n.py +15 -3
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/validate/_schemas.py +4 -4
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/validate/_validators.py +19 -9
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/__init__.py +1 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/browser.py +55 -6
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/debugger.py +60 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/dom.py +12 -8
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/emulation.py +117 -2
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/fetch.py +3 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/input_.py +1 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/inspector.py +1 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/io.py +1 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/network.py +193 -2
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/page.py +91 -4
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/runtime.py +8 -4
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/security.py +1 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/target.py +39 -6
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/util.py +1 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink.egg-info/PKG-INFO +5 -2
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink.egg-info/SOURCES.txt +2 -7
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink.egg-info/requires.txt +3 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/argparser.py +25 -12
- streamlink-7.2.0/src/streamlink_cli/console.py +134 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/main.py +37 -38
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_check_file_output.py +33 -48
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_handle_url.py +208 -22
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_logging.py +139 -18
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/test_argparser.py +9 -26
- streamlink-7.2.0/tests/cli/test_console.py +337 -0
- streamlink-7.2.0/tests/plugins/test_ceskatelevize.py +21 -0
- streamlink-7.2.0/tests/plugins/test_euronews.py +39 -0
- streamlink-7.2.0/tests/plugins/test_kick.py +33 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_nos.py +6 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_pandalive.py +3 -2
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_soop.py +1 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tf1.py +2 -2
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_twitch.py +100 -27
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_vinhlongtv.py +1 -1
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/hls/test_1.m3u8 +2 -2
- streamlink-7.1.2/tests/resources/hls/test_2.m3u8 → streamlink-7.2.0/tests/resources/hls/test_media_language.m3u8 +4 -3
- streamlink-7.2.0/tests/resources/hls/test_media_language_special.m3u8 +10 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/hls/test_hls.py +96 -6
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/hls/test_m3u8.py +2 -2
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_logger.py +11 -32
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_plugin.py +13 -0
- streamlink-7.2.0/tests/test_plugin_userinput.py +74 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_validate.py +35 -4
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_l10n.py +11 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/cdp/test_client.py +8 -8
- streamlink-7.1.2/src/streamlink/_version.py +0 -1
- streamlink-7.1.2/src/streamlink/plugins/ceskatelevize.py +0 -223
- streamlink-7.1.2/src/streamlink/plugins/euronews.py +0 -116
- streamlink-7.1.2/src/streamlink/plugins/kick.py +0 -205
- streamlink-7.1.2/src/streamlink/plugins/nowtvtr.py +0 -30
- streamlink-7.1.2/src/streamlink/plugins/streamable.py +0 -48
- streamlink-7.1.2/src/streamlink/plugins/tv4play.py +0 -97
- streamlink-7.1.2/src/streamlink/plugins/wwenetwork.py +0 -145
- streamlink-7.1.2/src/streamlink/session/http_useragents.py +0 -16
- streamlink-7.1.2/src/streamlink_cli/console.py +0 -92
- streamlink-7.1.2/tests/cli/test_console.py +0 -181
- streamlink-7.1.2/tests/plugins/test_ceskatelevize.py +0 -22
- streamlink-7.1.2/tests/plugins/test_euronews.py +0 -24
- streamlink-7.1.2/tests/plugins/test_kick.py +0 -13
- streamlink-7.1.2/tests/plugins/test_nowtvtr.py +0 -14
- streamlink-7.1.2/tests/plugins/test_streamable.py +0 -10
- streamlink-7.1.2/tests/plugins/test_tv4play.py +0 -37
- streamlink-7.1.2/tests/test_plugin_userinput.py +0 -58
- {streamlink-7.1.2 → streamlink-7.2.0}/AUTHORS +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/LICENSE +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/MANIFEST.in +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/README.md +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/commands.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/onbuild.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/plugins_json.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/test_build_backend.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/test_onbuild.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/test_plugins_json.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/completions/bash/streamlink +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/Makefile +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_man.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/apple-touch-icon.png +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/favicon-16x16.png +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/favicon-32x32.png +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/favicon.ico +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/icon-ffmpeg.svg +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/icon-python.svg +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/icon.svg +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/opengraph-image.png +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/site.webmanifest +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_templates/base.html +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_templates/page.html +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_templates/sidebar/brand.html +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/_templates/sidebar/github-buttons.html +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/cache.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/exceptions.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/options.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/plugin.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/session.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/stream.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/streamlink.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/validate.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/webbrowser.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/api.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/api_guide/validate.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/api_guide.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/applications.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/config.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/metadata.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/plugin-sideloading.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/plugins/twitch.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/plugins.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/protocols.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/proxy.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/tutorial.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/conf.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/deprecations.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/developing.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/docutils.conf +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/ext_argparse.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/ext_github.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/ext_html_template_vars.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/ext_plugins.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/ext_releaseref.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/index.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/migrations.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/players.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/plugins.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/support.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs/thirdparty.rst +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/docs-requirements.txt +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/icon.svg +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/script/build-shell-completions.sh +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/setup.cfg +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/__main__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/api.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/buffers.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/cache.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/compat.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/exceptions.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/options.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/packages/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/packages/requests_file.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/api/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/api/useragents.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/api/validate.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/api/webbrowser/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/api/webbrowser/aws_waf.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/api/websocket.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/abematv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/adultswim.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/albavision.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/aloula.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/app17.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ard_live.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ard_mediathek.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/artetv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/atpchallenger.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/atresplayer.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/bbciplayer.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/bfmtv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/bigo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/bilibili.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/blazetv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/bloomberg.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/brightcove.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/btv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/cbsnews.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/cdnbg.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/chzzk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/cinergroup.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/clubbingtv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/cmmedia.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/cnbce.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/cnews.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/dailymotion.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/dash.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/delfi.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/deutschewelle.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/dlive.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/dogan.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/dogus.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/douyin.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/drdk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/earthcam.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/filmon.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/goltelevision.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/goodgame.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/googledrive.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/gulli.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/hiplayer.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/hls.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/http.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/htv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/huajiao.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/huya.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/indihometv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/invintus.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/kugou.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/livestream.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/lnk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/lrt.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ltv_lsm_lv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mangomolo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mdstrm.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mediaklikk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mediavitrina.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mitele.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mixcloud.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mjunoon.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mrtmk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/n13tv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/nasaplus.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/nhkworld.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/nimotv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/nrk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/olympicchannel.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/oneplusone.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/onetv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/openrectv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/piaulizaportal.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/picarto.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/piczel.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/pixiv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/pluto.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/radiko.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/raiplay.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/reuters.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/rtpa.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/rtpplay.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/rtve.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/rtvs.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ruv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/sbscokr.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/showroom.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/soop.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/sportal.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/sportschau.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ssh101.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/stadium.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/steam.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/streann.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/stv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/svtplay.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/swisstxt.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/telefe.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/telemadrid.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tiktok.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/trovo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/turkuvaz.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tv360.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tv3cat.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tv5monde.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tv8.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tv999.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tvibo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tviplayer.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tvp.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tvtoya.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/twitcasting.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ustreamtv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ustvnow.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/vidio.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/vimeo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/vinhlongtv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/vk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/vkvideo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/vtvgo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/welt.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/youtube.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/yupptv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/zattoo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/zdf_mediathek.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/zeenews.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/py.typed +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/session/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/session/http.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/session/http.pyi +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/session/options.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/session/plugins.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/session/session.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/dash/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/dash/dash.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/dash/manifest.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/dash/segment.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/file.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/filtered.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/hls/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/http.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/segmented/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/segmented/segment.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/segmented/segmented.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/stream.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/wrappers.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/user_input.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/args.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/cache.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/crypto.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/data.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/formatter.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/module.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/named_pipe.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/parse.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/path.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/processoutput.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/random.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/socket.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/times.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/url.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/validate/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/validate/_exception.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/validate/_validate.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/client.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/connection.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/exceptions.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/chromium.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/exceptions.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/webbrowser.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink.egg-info/dependency_links.txt +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink.egg-info/entry_points.txt +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink.egg-info/top_level.txt +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/__main__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/_parser.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/compat.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/constants.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/exceptions.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/output/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/output/abc.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/output/file.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/output/http.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/output/player.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/py.typed +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/show_matchers.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/streamrunner.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/utils/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/utils/formatter.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/utils/path.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/utils/player.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/utils/progress.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/utils/versioncheck.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/conftest.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_can_handle_url.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_create_output.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_formatter.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_output_stream.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_output_stream_passthrough.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_player_argv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_resolve_stream_name.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_setup_config_args.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_show_matchers.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_version_check.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/output/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/output/test_file.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/output/test_player.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/test_compat.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/test_streamrunner.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/utils/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/utils/test_formatter.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/utils/test_path.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/utils/test_player.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/utils/test_progress.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/utils/test_versioncheck.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/conftest.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/mixins/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/mixins/stream_hls.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugin/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugin/override/testplugin.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugin/testplugin.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugin/testplugin_invalid.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugin/testplugin_missing.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/conftest.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_abematv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_adultswim.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_albavision.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_aloula.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_app17.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ard_live.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ard_mediathek.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_artetv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_atpchallenger.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_atresplayer.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_bbciplayer.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_bfmtv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_bigo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_bilibili.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_blazetv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_bloomberg.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_brightcove.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_btv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_cbsnews.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_cdnbg.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_chzzk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_cinergroup.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_clubbingtv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_cmmedia.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_cnbce.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_cnews.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_dailymotion.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_dash.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_delfi.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_deutschewelle.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_dlive.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_dogan.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_dogus.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_douyin.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_drdk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_earthcam.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_filmon.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_goltelevision.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_goodgame.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_googledrive.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_gulli.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_hiplayer.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_hls.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_http.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_htv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_huajiao.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_huya.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_indihometv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_invintus.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_kugou.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_livestream.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_lnk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_lrt.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ltv_lsm_lv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mangomolo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mdstrm.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mediaklikk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mediavitrina.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mitele.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mixcloud.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mjunoon.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mrtmk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_n13tv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_nasaplus.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_nhkworld.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_nicolive.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_nimotv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_nrk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_okru.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_olympicchannel.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_oneplusone.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_onetv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_openrectv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_piaulizaportal.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_picarto.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_piczel.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_pixiv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_pluto.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_pluzz.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_radiko.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_raiplay.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_reuters.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_rtpa.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_rtpplay.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_rtve.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_rtvs.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ruv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_sbscokr.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_showroom.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_sportal.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_sportschau.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ssh101.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_stadium.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_steam.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_streann.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_stv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_svtplay.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_swisstxt.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_telefe.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_telemadrid.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tiktok.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_trovo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_turkuvaz.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tv360.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tv3cat.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tv5monde.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tv8.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tv999.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tvibo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tviplayer.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tvp.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tvtoya.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_twitcasting.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ustreamtv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ustvnow.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_vidio.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_vimeo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_vk.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_vkvideo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_vtvgo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_welt.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_wwenetwork.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_youtube.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_yupptv.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_zattoo.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_zdf_mediathek.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_zeenews.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/cli/config/custom +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/cli/config/primary +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/cli/config/primary.testplugin +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/cli/config/secondary +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/cli/config/secondary.testplugin +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_1.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_10.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_11_static.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_2.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_3.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_8.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_9.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_baseurl_nested.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_baseurl_urljoin.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_no_publish_time_timeline_with_start.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_no_publish_time_timeline_without_start.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_no_duration.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p1.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p2.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p3.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p4.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p5.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_timeline_continued_p1.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_timeline_continued_p2.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_no_segment_list_or_template.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_segment_list.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_segments_byterange.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_segments_dynamic_number.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_static_no_publish_time.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_suggested_presentation_delay.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_timeline_ids.mpd +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/hls/test_date.m3u8 +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/hls/test_master.m3u8 +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/hls/test_master_twitch_vod.m3u8 +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/hls/test_multivariant_bandwidth.m3u8 +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/session/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/session/test_http.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/session/test_options.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/session/test_plugins.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/session/test_session.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/dash/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/dash/test_dash.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/dash/test_manifest.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/hls/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/hls/test_hls_filtered.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/test_ffmpegmux.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/test_file.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/test_segmented.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/test_stream_json.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/test_stream_to_url.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/test_stream_wrappers.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_api_websocket.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_buffers.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_cache.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_compat.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_options.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_plugins.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_streamlink_api.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/testutils/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/testutils/handshake.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/testutils/test_handshake.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_args.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_cache.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_crypto.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_data.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_formatter.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_module.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_named_pipe.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_parse.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_path.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_processoutput.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_random.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_times.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_url.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/cdp/__init__.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/cdp/conftest.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/cdp/test_connection.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/conftest.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/test_chromium.py +0 -0
- {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/test_webbrowser.py +0 -0
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## streamlink 7.2.0 (2025-04-04)
|
|
4
|
+
|
|
5
|
+
- 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` ([#6451](https://github.com/streamlink/streamlink/pull/6451))
|
|
6
|
+
- Changed: `--retry-streams` to allow a value of `0`, so it can be unset again if set previously ([#6455](https://github.com/streamlink/streamlink/pull/6455))
|
|
7
|
+
- Changed: `--quiet` to suppress all text output including errors, not just log output ([#6461](https://github.com/streamlink/streamlink/pull/6461))
|
|
8
|
+
- Fixed: `--logfile` affecting the console output stream ([#6461](https://github.com/streamlink/streamlink/pull/6461))
|
|
9
|
+
- Fixed: broken user input prompt behavior on missing or non-interactive I/O streams ([#6461](https://github.com/streamlink/streamlink/pull/6461))
|
|
10
|
+
- Fixed: `Plugin` classes not requiring a matching matcher ([#6466](https://github.com/streamlink/streamlink/pull/6466))
|
|
11
|
+
- Fixed: `--hls-audio-select` not being case-insensitive and only comparing input values rather than resolved language codes ([#6469](https://github.com/streamlink/streamlink/pull/6469), [#6479](https://github.com/streamlink/streamlink/pull/6479))
|
|
12
|
+
- Updated: Chrome Devtool Protocol interfaces, to match recent Chromium versions ([#6481](https://github.com/streamlink/streamlink/pull/6481))
|
|
13
|
+
- Updated plugins:
|
|
14
|
+
- euronews: rewritten and fixed plugin ([#6452](https://github.com/streamlink/streamlink/pull/6452))
|
|
15
|
+
- kick: refactored plugin, fixed clip matcher and 403 API responses ([#6491](https://github.com/streamlink/streamlink/pull/6491))
|
|
16
|
+
- nicolive: fixed plugin not loading cookies from WebSocket messages ([#6441](https://github.com/streamlink/streamlink/pull/6441))
|
|
17
|
+
- nicolive: made the plugin always filter out blank HLS segments ([#6476](https://github.com/streamlink/streamlink/pull/6476))
|
|
18
|
+
- nowtvtr: removed plugin ([#6488](https://github.com/streamlink/streamlink/pull/6488))
|
|
19
|
+
- okru: canonicalize mobile URLs ([#6444](https://github.com/streamlink/streamlink/pull/6444))
|
|
20
|
+
- tf1: fixed stream matcher ([#6439](https://github.com/streamlink/streamlink/pull/6439))
|
|
21
|
+
|
|
22
|
+
[Full changelog](https://github.com/streamlink/streamlink/compare/7.1.3...7.2.0)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## streamlink 7.1.3 (2025-02-14)
|
|
26
|
+
|
|
27
|
+
- Fixed: `validate.contains()` to allow all kinds of `Container` object inputs ([#6421](https://github.com/streamlink/streamlink/pull/6421))
|
|
28
|
+
- Updated plugins:
|
|
29
|
+
- ceskatelevize: rewritten and fixed plugin ([#6397](https://github.com/streamlink/streamlink/pull/6397))
|
|
30
|
+
- nos: fixed validation schema, updated matcher ([#6420](https://github.com/streamlink/streamlink/pull/6420))
|
|
31
|
+
- pandalive: fixed user\_id retieval, updated matcher ([#6433](https://github.com/streamlink/streamlink/pull/6433))
|
|
32
|
+
- pluzz: fixed video ID schemas ([#6428](https://github.com/streamlink/streamlink/pull/6428))
|
|
33
|
+
- streamable: removed plugin ([#6435](https://github.com/streamlink/streamlink/pull/6435))
|
|
34
|
+
- tv4play: removed plugin ([#6399](https://github.com/streamlink/streamlink/pull/6399))
|
|
35
|
+
- twitch: refactored TwitchAPI class and access token retrieval ([#6403](https://github.com/streamlink/streamlink/pull/6403))
|
|
36
|
+
- wwenetwork: rewritten and fixed plugin ([#6404](https://github.com/streamlink/streamlink/pull/6404))
|
|
37
|
+
- Docs: replaced Windows and Linux AppImage nightly builds with preview builds triggered on each commit to `master` ([#6425](https://github.com/streamlink/streamlink/pull/6425))
|
|
38
|
+
- Docs: added optional/secondary Linux AppImage builds with FFmpeg being bundled ([#6415](https://github.com/streamlink/streamlink/pull/6415))
|
|
39
|
+
- Tests: bumped `freezegun` requirement to `>=1.5.0` ([#6406](https://github.com/streamlink/streamlink/pull/6406))
|
|
40
|
+
|
|
41
|
+
[Full changelog](https://github.com/streamlink/streamlink/compare/7.1.2...7.1.3)
|
|
42
|
+
|
|
43
|
+
|
|
3
44
|
## streamlink 7.1.2 (2025-01-08)
|
|
4
45
|
|
|
5
46
|
- Updated plugins:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: streamlink
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.2.0
|
|
4
4
|
Summary: Streamlink is a command-line utility that extracts streams from various services and pipes them into a video player of choice.
|
|
5
5
|
Author: Streamlink
|
|
6
6
|
Author-email: streamlink@protonmail.com
|
|
@@ -44,6 +44,9 @@ Requires-Dist: trio<1,>=0.22.0; python_version < "3.13"
|
|
|
44
44
|
Requires-Dist: trio-websocket<1,>=0.9.0
|
|
45
45
|
Requires-Dist: urllib3<3,>=1.26.0
|
|
46
46
|
Requires-Dist: websocket-client<2,>=1.2.1
|
|
47
|
+
Provides-Extra: decompress
|
|
48
|
+
Requires-Dist: urllib3[brotli,zstd]<3,>=1.26.0; extra == "decompress"
|
|
49
|
+
Dynamic: license-file
|
|
47
50
|
|
|
48
51
|
<h1 align="center"><a href="https://streamlink.github.io/">Streamlink<br><img height="150" alt="Streamlink" src="https://raw.githubusercontent.com/streamlink/streamlink/master/icon.svg"></a></h1>
|
|
49
52
|
|
|
@@ -82,7 +82,13 @@ _shtab_streamlink_cli_options=(
|
|
|
82
82
|
See the Python standard library\'s \`logging.Formatter\` docs for more information about the logging format
|
|
83
83
|
and the available \`LogRecord\` attributes. Streamlink\'s formatter uses the curly brace style.
|
|
84
84
|
|
|
85
|
-
The default format depends on the chosen log level
|
|
85
|
+
The default format depends on the chosen log level.
|
|
86
|
+
|
|
87
|
+
For verbose levels (\`trace\` and \`all\`)\:
|
|
88
|
+
|
|
89
|
+
Default is \"\[\{asctime\}\]\[\{name\}\]\[\{levelname\}\] \{message\}\".
|
|
90
|
+
|
|
91
|
+
Otherwise\:
|
|
86
92
|
|
|
87
93
|
Default is \"\[\{name\}\]\[\{levelname\}\] \{message\}\".
|
|
88
94
|
]:logformat:"
|
|
@@ -91,7 +97,13 @@ _shtab_streamlink_cli_options=(
|
|
|
91
97
|
|
|
92
98
|
This formats the \`LogRecord\`\'s \`asctime\` attribute via \`strftime()\`.
|
|
93
99
|
|
|
94
|
-
The default date format depends on the chosen log level
|
|
100
|
+
The default date format depends on the chosen log level.
|
|
101
|
+
|
|
102
|
+
For verbose levels (\`trace\` and \`all\`)\:
|
|
103
|
+
|
|
104
|
+
Default is \"\%H\:\%M\:\%S.\%f\".
|
|
105
|
+
|
|
106
|
+
Otherwise\:
|
|
95
107
|
|
|
96
108
|
Default is \"\%H\:\%M\:\%S\".
|
|
97
109
|
]:logdateformat:"
|
|
@@ -116,9 +128,7 @@ _shtab_streamlink_cli_options=(
|
|
|
116
128
|
\$\{XDG_STATE_HOME\:-\$\{HOME\}\/.local\/state\}\/streamlink\/logs
|
|
117
129
|
]:logfile:"
|
|
118
130
|
{-Q,--quiet}"[
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
Alias for --loglevel\=none.
|
|
131
|
+
Suppress all console and log output, and also disable user prompts.
|
|
122
132
|
]"
|
|
123
133
|
{-j,--json}"[
|
|
124
134
|
Output JSON representations instead of the normal text output.
|
|
@@ -356,16 +366,19 @@ _shtab_streamlink_cli_options=(
|
|
|
356
366
|
]"
|
|
357
367
|
"--retry-streams[
|
|
358
368
|
Retry fetching the list of available streams until streams are found
|
|
359
|
-
while waiting \`DELAY\` second(s) between each attempt.
|
|
360
|
-
|
|
369
|
+
while waiting \`DELAY\` second(s) between each attempt.
|
|
370
|
+
|
|
371
|
+
The number of retry attempts can be capped with --retry-max.
|
|
372
|
+
A default value of \`\`1\`\` is implied for non-zero values of --retry-max.
|
|
361
373
|
|
|
362
|
-
|
|
374
|
+
If both --retry-streams and --retry-max are set to \`0\`, then only one attempt will be made
|
|
375
|
+
to fetch the list of available streams. This is the default behavior.
|
|
363
376
|
]:retry_streams:"
|
|
364
377
|
"--retry-max[
|
|
365
|
-
|
|
366
|
-
attempt(s). Fetch will retry infinitely if \`COUNT\` is zero or unset.
|
|
378
|
+
Stop fetching the list of available streams after \`COUNT\` retry attempt(s).
|
|
367
379
|
|
|
368
|
-
|
|
380
|
+
A value of \`0\` makes Streamlink fetch streams indefinitely if --retry-streams is set to a non-zero value.
|
|
381
|
+
If --retry-streams is unset, then the default delay between fetching available streams is 1 second.
|
|
369
382
|
]:retry_max:"
|
|
370
383
|
"--retry-open[
|
|
371
384
|
After a successful fetch, try \`ATTEMPTS\` time(s) to open the stream until giving up.
|
|
@@ -737,7 +750,7 @@ _shtab_streamlink_cli_options=(
|
|
|
737
750
|
"--steam-password[A Steam account password to use with --steam-email.]:steam_password:"
|
|
738
751
|
"--streann-url[Source URL where the iframe is located, only required for direct URLs of ott.streann.com]:streann_url:"
|
|
739
752
|
"--tf1-email[The email address used to register with tf1.fr.]:tf1_email:"
|
|
740
|
-
"--tf1-password[A tf1.fr account password to use with --tf1-
|
|
753
|
+
"--tf1-password[A tf1.fr account password to use with --tf1-email.]:tf1_password:"
|
|
741
754
|
"--tf1-purge-credentials[Purge cached tf1.fr credentials to initiate a new session and reauthenticate.]"
|
|
742
755
|
"--twitcasting-password[Password for private Twitcasting streams.]:twitcasting_password:"
|
|
743
756
|
"--twitch-disable-ads[
|
|
@@ -7,17 +7,17 @@ versioningit >=2.0.0,<4 # required for being able to run editable installs
|
|
|
7
7
|
pytest >=8.0.0
|
|
8
8
|
pytest-trio
|
|
9
9
|
requests-mock
|
|
10
|
-
freezegun >=1.
|
|
10
|
+
freezegun >=1.5.0
|
|
11
11
|
|
|
12
12
|
# code-coverage
|
|
13
13
|
pytest-cov
|
|
14
14
|
coverage[toml]
|
|
15
15
|
|
|
16
16
|
# code-linting / code-formatting
|
|
17
|
-
ruff ==0.
|
|
17
|
+
ruff ==0.11.2
|
|
18
18
|
|
|
19
19
|
# typing
|
|
20
|
-
mypy[faster-cache] ==1.
|
|
20
|
+
mypy[faster-cache] ==1.15.0
|
|
21
21
|
typing-extensions >=4.0.0
|
|
22
22
|
lxml-stubs
|
|
23
23
|
trio-typing
|
|
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
27
27
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
28
28
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
29
29
|
..
|
|
30
|
-
.TH "STREAMLINK" "1" "
|
|
30
|
+
.TH "STREAMLINK" "1" "Apr 04, 2025" "7.2.0" "Streamlink"
|
|
31
31
|
.SH NAME
|
|
32
32
|
streamlink \- extracts streams from various services and pipes them into a video player of choice
|
|
33
33
|
.SH SYNOPSIS
|
|
@@ -195,7 +195,13 @@ Set a custom logging format.
|
|
|
195
195
|
See the Python standard library\(aqs \fBlogging.Formatter\fP docs for more information about the logging format
|
|
196
196
|
and the available \fBLogRecord\fP attributes. Streamlink\(aqs formatter uses the curly brace style.
|
|
197
197
|
.sp
|
|
198
|
-
The default format depends on the chosen log level
|
|
198
|
+
The default format depends on the chosen log level.
|
|
199
|
+
.sp
|
|
200
|
+
For verbose levels (\fBtrace\fP and \fBall\fP):
|
|
201
|
+
.sp
|
|
202
|
+
Default is: \fB\(dq[{asctime}][{name}][{levelname}] {message}\(dq\fP\&.
|
|
203
|
+
.sp
|
|
204
|
+
Otherwise:
|
|
199
205
|
.sp
|
|
200
206
|
Default is: \fB\(dq[{name}][{levelname}] {message}\(dq\fP\&.
|
|
201
207
|
.UNINDENT
|
|
@@ -206,7 +212,13 @@ Set a custom logging date format.
|
|
|
206
212
|
.sp
|
|
207
213
|
This formats the \fBLogRecord\fP\(aqs \fBasctime\fP attribute via \fBstrftime()\fP\&.
|
|
208
214
|
.sp
|
|
209
|
-
The default date format depends on the chosen log level
|
|
215
|
+
The default date format depends on the chosen log level.
|
|
216
|
+
.sp
|
|
217
|
+
For verbose levels (\fBtrace\fP and \fBall\fP):
|
|
218
|
+
.sp
|
|
219
|
+
Default is: \fB\(dq%H:%M:%S.%f\(dq\fP\&.
|
|
220
|
+
.sp
|
|
221
|
+
Otherwise:
|
|
210
222
|
.sp
|
|
211
223
|
Default is: \fB\(dq%H:%M:%S\(dq\fP\&.
|
|
212
224
|
.UNINDENT
|
|
@@ -255,9 +267,7 @@ ${XDG_STATE_HOME:\-${HOME}/.local/state}/streamlink/logs
|
|
|
255
267
|
.B \-Q
|
|
256
268
|
.TP
|
|
257
269
|
.B \-\-quiet
|
|
258
|
-
|
|
259
|
-
.sp
|
|
260
|
-
Alias for \fI\%\-\-loglevel=none\fP\&.
|
|
270
|
+
Suppress all console and log output, and also disable user prompts.
|
|
261
271
|
.UNINDENT
|
|
262
272
|
.INDENT 0.0
|
|
263
273
|
.TP
|
|
@@ -627,18 +637,21 @@ If possible, translate the resolved stream to a URL and print it.
|
|
|
627
637
|
.TP
|
|
628
638
|
.B \-\-retry\-streams DELAY
|
|
629
639
|
Retry fetching the list of available streams until streams are found
|
|
630
|
-
while waiting \fBDELAY\fP second(s) between each attempt.
|
|
631
|
-
|
|
640
|
+
while waiting \fBDELAY\fP second(s) between each attempt.
|
|
641
|
+
.sp
|
|
642
|
+
The number of retry attempts can be capped with \fI\%\-\-retry\-max\fP\&.
|
|
643
|
+
A default value of \fB1\fP is implied for non\-zero values of \fI\%\-\-retry\-max\fP\&.
|
|
632
644
|
.sp
|
|
633
|
-
|
|
645
|
+
If both \fI\%\-\-retry\-streams\fP and \fI\%\-\-retry\-max\fP are set to \fB0\fP, then only one attempt will be made
|
|
646
|
+
to fetch the list of available streams. This is the default behavior.
|
|
634
647
|
.UNINDENT
|
|
635
648
|
.INDENT 0.0
|
|
636
649
|
.TP
|
|
637
650
|
.B \-\-retry\-max COUNT
|
|
638
|
-
|
|
639
|
-
attempt(s). Fetch will retry infinitely if \fBCOUNT\fP is zero or unset.
|
|
651
|
+
Stop fetching the list of available streams after \fBCOUNT\fP retry attempt(s).
|
|
640
652
|
.sp
|
|
641
|
-
|
|
653
|
+
A value of \fB0\fP makes Streamlink fetch streams indefinitely if \fI\%\-\-retry\-streams\fP is set to a non\-zero value.
|
|
654
|
+
If \fI\%\-\-retry\-streams\fP is unset, then the default delay between fetching available streams is 1 second.
|
|
642
655
|
.UNINDENT
|
|
643
656
|
.INDENT 0.0
|
|
644
657
|
.TP
|
|
@@ -1281,7 +1294,7 @@ The email address used to register with tf1.fr.
|
|
|
1281
1294
|
.INDENT 0.0
|
|
1282
1295
|
.TP
|
|
1283
1296
|
.B \-\-tf1\-password PASSWORD
|
|
1284
|
-
A tf1.fr account password to use with
|
|
1297
|
+
A tf1.fr account password to use with \fI\%\-\-tf1\-email\fP\&.
|
|
1285
1298
|
.UNINDENT
|
|
1286
1299
|
.INDENT 0.0
|
|
1287
1300
|
.TP
|
|
@@ -17,7 +17,7 @@ The simplest use of the Streamlink API looks like this:
|
|
|
17
17
|
|
|
18
18
|
This simply attempts to find a plugin and use it to extract streams from
|
|
19
19
|
the URL. This works great in simple cases but if you want more
|
|
20
|
-
fine tuning you need to use a `session object`_ instead.
|
|
20
|
+
fine tuning you need to use a `session object`_ instead and `fetch streams <fetching streams_>`_ manually.
|
|
21
21
|
|
|
22
22
|
The returned value is a dict containing :py:class:`Stream <streamlink.stream.Stream>` objects:
|
|
23
23
|
|
|
@@ -80,19 +80,55 @@ when extracting streams more than once. You start by creating a
|
|
|
80
80
|
.. code-block:: python
|
|
81
81
|
|
|
82
82
|
>>> from streamlink import Streamlink
|
|
83
|
-
>>> session = Streamlink()
|
|
83
|
+
>>> session = Streamlink({"optional-session-option": 123})
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
On the session instance, you can set additional options like so:
|
|
86
86
|
|
|
87
87
|
.. code-block:: python
|
|
88
88
|
|
|
89
89
|
>>> session.set_option("stream-timeout", 30)
|
|
90
|
+
>>> session.options.set("stream-timeout", 30)
|
|
90
91
|
|
|
91
|
-
|
|
92
|
+
See :py:class:`StreamlinkOptions <streamlink.session.options.StreamlinkOptions>` for all available session options.
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
Fetching streams
|
|
96
|
+
^^^^^^^^^^^^^^^^
|
|
97
|
+
|
|
98
|
+
Streams can be fetched in two different ways.
|
|
99
|
+
|
|
100
|
+
The first example will automatically try to find a matching plugin and available streams from the input URL:
|
|
92
101
|
|
|
93
102
|
.. code-block:: python
|
|
94
103
|
|
|
95
104
|
>>> streams = session.streams("URL")
|
|
96
105
|
|
|
106
|
+
See :py:meth:`Streamlink.streams() <streamlink.session.Streamlink.streams>` for more.
|
|
107
|
+
|
|
108
|
+
``Streamlink.streams()`` however doen't allow you to set any plugin options which might be necessary in order to access streams,
|
|
109
|
+
e.g. when authentication data is required, or plugin options which may alter the plugin's behavior.
|
|
110
|
+
Be aware that plugin options are distinct from the session options, and since these options depend on the plugin in use,
|
|
111
|
+
plugin options can't be set without resolving the matching plugin first.
|
|
112
|
+
|
|
113
|
+
Plugins can therefore be resolved and initialized manually from the input URL, so plugin options can be passed to the plugin:
|
|
114
|
+
|
|
115
|
+
.. code-block:: python
|
|
116
|
+
|
|
117
|
+
>>> plugin_name, plugin_class, resolved_url = session.resolve_url("URL")
|
|
118
|
+
>>> plugin = plugin_class(session, resolved_url, options={"plugin-option": 123})
|
|
119
|
+
>>> streams = plugin.streams()
|
|
120
|
+
|
|
121
|
+
See :py:meth:`Streamlink.resolve_url() <streamlink.session.Streamlink.resolve_url>`
|
|
122
|
+
and :py:class:`Plugin <streamlink.plugin.Plugin>` for more.
|
|
123
|
+
|
|
124
|
+
Alternatively, the plugin class can be imported directly from the respective module of the ``streamlink.plugins`` package.
|
|
125
|
+
The input URL then must match the plugin's URL matchers.
|
|
126
|
+
|
|
127
|
+
.. code-block:: python
|
|
128
|
+
|
|
129
|
+
>>> from streamlink.plugins.twitch import __plugin__ as Twitch
|
|
130
|
+
>>> plugin = Twitch(session, "https://twitch.tv/CHANNEL", options={"disable-ads": True, "low-latency": True})
|
|
131
|
+
>>> streams = plugin.streams()
|
|
97
132
|
|
|
98
|
-
|
|
133
|
+
Available plugin options are defined using the :py:meth:`@pluginargument <streamlink.plugin.pluginargument>`
|
|
134
|
+
Plugin class decorator in each plugin's module.
|
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## streamlink 7.2.0 (2025-04-04)
|
|
4
|
+
|
|
5
|
+
- 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` ([#6451](https://github.com/streamlink/streamlink/pull/6451))
|
|
6
|
+
- Changed: `--retry-streams` to allow a value of `0`, so it can be unset again if set previously ([#6455](https://github.com/streamlink/streamlink/pull/6455))
|
|
7
|
+
- Changed: `--quiet` to suppress all text output including errors, not just log output ([#6461](https://github.com/streamlink/streamlink/pull/6461))
|
|
8
|
+
- Fixed: `--logfile` affecting the console output stream ([#6461](https://github.com/streamlink/streamlink/pull/6461))
|
|
9
|
+
- Fixed: broken user input prompt behavior on missing or non-interactive I/O streams ([#6461](https://github.com/streamlink/streamlink/pull/6461))
|
|
10
|
+
- Fixed: `Plugin` classes not requiring a matching matcher ([#6466](https://github.com/streamlink/streamlink/pull/6466))
|
|
11
|
+
- Fixed: `--hls-audio-select` not being case-insensitive and only comparing input values rather than resolved language codes ([#6469](https://github.com/streamlink/streamlink/pull/6469), [#6479](https://github.com/streamlink/streamlink/pull/6479))
|
|
12
|
+
- Updated: Chrome Devtool Protocol interfaces, to match recent Chromium versions ([#6481](https://github.com/streamlink/streamlink/pull/6481))
|
|
13
|
+
- Updated plugins:
|
|
14
|
+
- euronews: rewritten and fixed plugin ([#6452](https://github.com/streamlink/streamlink/pull/6452))
|
|
15
|
+
- kick: refactored plugin, fixed clip matcher and 403 API responses ([#6491](https://github.com/streamlink/streamlink/pull/6491))
|
|
16
|
+
- nicolive: fixed plugin not loading cookies from WebSocket messages ([#6441](https://github.com/streamlink/streamlink/pull/6441))
|
|
17
|
+
- nicolive: made the plugin always filter out blank HLS segments ([#6476](https://github.com/streamlink/streamlink/pull/6476))
|
|
18
|
+
- nowtvtr: removed plugin ([#6488](https://github.com/streamlink/streamlink/pull/6488))
|
|
19
|
+
- okru: canonicalize mobile URLs ([#6444](https://github.com/streamlink/streamlink/pull/6444))
|
|
20
|
+
- tf1: fixed stream matcher ([#6439](https://github.com/streamlink/streamlink/pull/6439))
|
|
21
|
+
|
|
22
|
+
[Full changelog](https://github.com/streamlink/streamlink/compare/7.1.3...7.2.0)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## streamlink 7.1.3 (2025-02-14)
|
|
26
|
+
|
|
27
|
+
- Fixed: `validate.contains()` to allow all kinds of `Container` object inputs ([#6421](https://github.com/streamlink/streamlink/pull/6421))
|
|
28
|
+
- Updated plugins:
|
|
29
|
+
- ceskatelevize: rewritten and fixed plugin ([#6397](https://github.com/streamlink/streamlink/pull/6397))
|
|
30
|
+
- nos: fixed validation schema, updated matcher ([#6420](https://github.com/streamlink/streamlink/pull/6420))
|
|
31
|
+
- pandalive: fixed user\_id retieval, updated matcher ([#6433](https://github.com/streamlink/streamlink/pull/6433))
|
|
32
|
+
- pluzz: fixed video ID schemas ([#6428](https://github.com/streamlink/streamlink/pull/6428))
|
|
33
|
+
- streamable: removed plugin ([#6435](https://github.com/streamlink/streamlink/pull/6435))
|
|
34
|
+
- tv4play: removed plugin ([#6399](https://github.com/streamlink/streamlink/pull/6399))
|
|
35
|
+
- twitch: refactored TwitchAPI class and access token retrieval ([#6403](https://github.com/streamlink/streamlink/pull/6403))
|
|
36
|
+
- wwenetwork: rewritten and fixed plugin ([#6404](https://github.com/streamlink/streamlink/pull/6404))
|
|
37
|
+
- Docs: replaced Windows and Linux AppImage nightly builds with preview builds triggered on each commit to `master` ([#6425](https://github.com/streamlink/streamlink/pull/6425))
|
|
38
|
+
- Docs: added optional/secondary Linux AppImage builds with FFmpeg being bundled ([#6415](https://github.com/streamlink/streamlink/pull/6415))
|
|
39
|
+
- Tests: bumped `freezegun` requirement to `>=1.5.0` ([#6406](https://github.com/streamlink/streamlink/pull/6406))
|
|
40
|
+
|
|
41
|
+
[Full changelog](https://github.com/streamlink/streamlink/compare/7.1.2...7.1.3)
|
|
42
|
+
|
|
43
|
+
|
|
3
44
|
## streamlink 7.1.2 (2025-01-08)
|
|
4
45
|
|
|
5
46
|
- Updated plugins:
|
|
@@ -63,7 +63,7 @@ Windows
|
|
|
63
63
|
- See the `Windows binaries`_ section below
|
|
64
64
|
* - :octicon:`verified` Portable
|
|
65
65
|
- See the `Windows binaries`_ section below
|
|
66
|
-
* - :octicon:`verified`
|
|
66
|
+
* - :octicon:`verified` Preview builds
|
|
67
67
|
- See the `Windows binaries`_ section below
|
|
68
68
|
* - :octicon:`verified` Python pip
|
|
69
69
|
- See the `PyPI package and source code`_ section below
|
|
@@ -132,7 +132,7 @@ Linux and BSD
|
|
|
132
132
|
- Installing
|
|
133
133
|
* - :octicon:`verified` AppImage
|
|
134
134
|
- See the `Linux AppImages`_ section below
|
|
135
|
-
* - :octicon:`verified` AppImage
|
|
135
|
+
* - :octicon:`verified` AppImage preview builds
|
|
136
136
|
- See the `Linux AppImages`_ section below
|
|
137
137
|
* - :octicon:`verified` Python pip
|
|
138
138
|
- See the `PyPI package and source code`_ section below
|
|
@@ -302,9 +302,6 @@ PyPI package and source code
|
|
|
302
302
|
If a package is not available on your platform, or if it's out of date,
|
|
303
303
|
then Streamlink can be installed via `pip`_, the Python package manager.
|
|
304
304
|
|
|
305
|
-
Before running :command:`pip`, make sure that it's the Python 3 version of `pip`_ (to check, run :command:`pip --version`).
|
|
306
|
-
On some systems, this isn't the case by default and an alternative, like :command:`pip3` for example, needs to be run instead.
|
|
307
|
-
|
|
308
305
|
.. warning::
|
|
309
306
|
|
|
310
307
|
On Linux, when not using a `virtual environment`_, it is recommended to **install custom python packages like this
|
|
@@ -504,6 +501,14 @@ Streamlink defines a `build system <pyproject.toml_>`__ according to `PEP-517`_
|
|
|
504
501
|
|
|
505
502
|
- DASH streams with video and audio content always have to get remuxed.
|
|
506
503
|
- HLS streams optionally need to get remuxed depending on the stream selection.
|
|
504
|
+
* - optional
|
|
505
|
+
- | `brotli`_
|
|
506
|
+
| ``decompress`` extras marker
|
|
507
|
+
- Used for decompressing HTTP responses
|
|
508
|
+
* - optional
|
|
509
|
+
- | `zstandard`_
|
|
510
|
+
| ``decompress`` extras marker
|
|
511
|
+
- Used for decompressing HTTP responses
|
|
507
512
|
|
|
508
513
|
.. _pyproject.toml: https://github.com/streamlink/streamlink/blob/master/pyproject.toml
|
|
509
514
|
.. _PEP-517: https://peps.python.org/pep-0517/
|
|
@@ -527,6 +532,9 @@ Streamlink defines a `build system <pyproject.toml_>`__ according to `PEP-517`_
|
|
|
527
532
|
.. _urllib3: https://urllib3.readthedocs.io/en/stable/
|
|
528
533
|
.. _websocket-client: https://pypi.org/project/websocket-client/
|
|
529
534
|
|
|
535
|
+
.. _brotli: https://pypi.org/project/Brotli/
|
|
536
|
+
.. _zstandard: https://pypi.org/project/zstandard/
|
|
537
|
+
|
|
530
538
|
.. _FFmpeg: https://www.ffmpeg.org/
|
|
531
539
|
.. _muxing: https://en.wikipedia.org/wiki/Multiplexing#Video_processing
|
|
532
540
|
|
|
@@ -546,21 +554,21 @@ Windows binaries
|
|
|
546
554
|
|
|
547
555
|
**Windows stable releases**
|
|
548
556
|
^^^
|
|
549
|
-
:fas:`download` GitHub releases page
|
|
557
|
+
:fas:`download;fa-2x` GitHub releases page
|
|
550
558
|
|
|
551
|
-
The most recent Streamlink release
|
|
559
|
+
:fas:`check-circle;sd-text-success fa-lg` The most recent Streamlink release
|
|
552
560
|
|
|
553
561
|
.. grid-item-card::
|
|
554
562
|
:padding: 3
|
|
555
|
-
:link: https://github.com/streamlink/windows-builds/actions
|
|
556
|
-
:link-alt: Windows
|
|
563
|
+
:link: https://github.com/streamlink/windows-builds/actions/workflows/preview-build.yml
|
|
564
|
+
:link-alt: Windows preview builds
|
|
557
565
|
:text-align: center
|
|
558
566
|
|
|
559
|
-
**Windows
|
|
567
|
+
**Windows preview builds**
|
|
560
568
|
^^^
|
|
561
|
-
:fas:`download` GitHub actions build artifacts
|
|
569
|
+
:fas:`download;fa-2x` GitHub actions build artifacts
|
|
562
570
|
|
|
563
|
-
|
|
571
|
+
:fab:`github;fa-lg` Account required
|
|
564
572
|
|
|
565
573
|
**Flavors**
|
|
566
574
|
|
|
@@ -657,21 +665,21 @@ Linux AppImages
|
|
|
657
665
|
|
|
658
666
|
**AppImage stable releases**
|
|
659
667
|
^^^
|
|
660
|
-
:fas:`download` GitHub releases page
|
|
668
|
+
:fas:`download;fa-2x` GitHub releases page
|
|
661
669
|
|
|
662
|
-
The most recent Streamlink release
|
|
670
|
+
:fas:`check-circle;sd-text-success fa-lg` The most recent Streamlink release
|
|
663
671
|
|
|
664
672
|
.. grid-item-card::
|
|
665
673
|
:padding: 3
|
|
666
|
-
:link: https://github.com/streamlink/streamlink-appimage/actions
|
|
667
|
-
:link-alt: AppImage
|
|
674
|
+
:link: https://github.com/streamlink/streamlink-appimage/actions/workflows/preview-build.yml
|
|
675
|
+
:link-alt: AppImage preview builds
|
|
668
676
|
:text-align: center
|
|
669
677
|
|
|
670
|
-
**AppImage
|
|
678
|
+
**AppImage preview builds**
|
|
671
679
|
^^^
|
|
672
|
-
:fas:`download` GitHub actions build artifacts
|
|
680
|
+
:fas:`download;fa-2x` GitHub actions build artifacts
|
|
673
681
|
|
|
674
|
-
|
|
682
|
+
:fab:`github;fa-lg` Account required
|
|
675
683
|
|
|
676
684
|
**Architectures**
|
|
677
685
|
|
|
@@ -692,7 +700,7 @@ Linux AppImages
|
|
|
692
700
|
|
|
693
701
|
**Contents**
|
|
694
702
|
|
|
695
|
-
.. grid::
|
|
703
|
+
.. grid:: 3
|
|
696
704
|
:padding: 0
|
|
697
705
|
:class-container: grid-with-images
|
|
698
706
|
|
|
@@ -718,6 +726,17 @@ Linux AppImages
|
|
|
718
726
|
|
|
719
727
|
Streamlink |br| :sub:`and dependencies`
|
|
720
728
|
|
|
729
|
+
.. grid-item-card::
|
|
730
|
+
:padding: 3
|
|
731
|
+
:link: https://github.com/streamlink/FFmpeg-Builds
|
|
732
|
+
:link-alt: FFmpeg, required for muxing streams
|
|
733
|
+
:text-align: center
|
|
734
|
+
|
|
735
|
+
.. image:: _static/icon-ffmpeg.svg
|
|
736
|
+
:alt: FFmpeg
|
|
737
|
+
|
|
738
|
+
FFmpeg |br| :sub:`for muxing streams` |br| :sub:`(optional)`
|
|
739
|
+
|
|
721
740
|
**How-To**
|
|
722
741
|
|
|
723
742
|
1. Verify that the system is running on at least
|
|
@@ -70,6 +70,13 @@ dependencies = [
|
|
|
70
70
|
"websocket-client >=1.2.1,<2",
|
|
71
71
|
]
|
|
72
72
|
|
|
73
|
+
[project.optional-dependencies]
|
|
74
|
+
decompress = [
|
|
75
|
+
# don't define brotli or zstandard library versions here
|
|
76
|
+
# and instead rely on urllib3's version requirements
|
|
77
|
+
"urllib3[brotli,zstd] >=1.26.0,<3"
|
|
78
|
+
]
|
|
79
|
+
|
|
73
80
|
[project.urls]
|
|
74
81
|
Homepage = "https://github.com/streamlink/streamlink"
|
|
75
82
|
Documentation = "https://streamlink.github.io/"
|
|
@@ -166,7 +173,6 @@ src = [
|
|
|
166
173
|
"src",
|
|
167
174
|
"tests",
|
|
168
175
|
]
|
|
169
|
-
target-version = "py39"
|
|
170
176
|
fix = false
|
|
171
177
|
line-length = 128
|
|
172
178
|
output-format = "full"
|
|
@@ -233,7 +239,7 @@ select = [
|
|
|
233
239
|
]
|
|
234
240
|
ignore = [
|
|
235
241
|
"A003", # builtin-attribute-shadowing
|
|
236
|
-
"A005", #
|
|
242
|
+
"A005", # stdlib-module-shadowing
|
|
237
243
|
"ASYNC109", # async-function-with-timeout
|
|
238
244
|
"C408", # unnecessary-collection-call
|
|
239
245
|
"ISC003", # explicit-string-concatenation
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "7.2.0"
|
|
@@ -5,7 +5,6 @@ import sys
|
|
|
5
5
|
import warnings
|
|
6
6
|
from collections.abc import Iterator
|
|
7
7
|
from logging import CRITICAL, DEBUG, ERROR, INFO, WARNING
|
|
8
|
-
from os import devnull
|
|
9
8
|
from pathlib import Path
|
|
10
9
|
from sys import version_info
|
|
11
10
|
from threading import Lock
|
|
@@ -146,8 +145,6 @@ class StreamHandler(logging.StreamHandler):
|
|
|
146
145
|
return res
|
|
147
146
|
|
|
148
147
|
def _stream_reconfigure(self):
|
|
149
|
-
if not self.stream:
|
|
150
|
-
return
|
|
151
148
|
# make stream write calls escape unsupported characters (stdout/stderr encoding is not guaranteed to be utf-8)
|
|
152
149
|
self.stream.reconfigure(errors="backslashreplace")
|
|
153
150
|
|
|
@@ -216,27 +213,25 @@ def basicConfig(
|
|
|
216
213
|
stream: IO | None = None,
|
|
217
214
|
remove_base: list[str] | None = None,
|
|
218
215
|
capture_warnings: bool = False,
|
|
219
|
-
) -> logging.StreamHandler:
|
|
216
|
+
) -> logging.StreamHandler | None:
|
|
220
217
|
with _config_lock:
|
|
221
|
-
handler: logging.StreamHandler
|
|
218
|
+
handler: logging.StreamHandler | None = None
|
|
222
219
|
if filename is not None:
|
|
223
220
|
handler = logging.FileHandler(filename, filemode, encoding="utf-8")
|
|
224
|
-
|
|
221
|
+
elif stream is not None:
|
|
225
222
|
handler = StreamHandler(stream)
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
root.addHandler(handler)
|
|
223
|
+
|
|
224
|
+
if handler is not None:
|
|
225
|
+
formatter = StringFormatter(
|
|
226
|
+
fmt=format,
|
|
227
|
+
datefmt=datefmt,
|
|
228
|
+
style=style,
|
|
229
|
+
remove_base=remove_base or REMOVE_BASE,
|
|
230
|
+
)
|
|
231
|
+
handler.setFormatter(formatter)
|
|
232
|
+
|
|
233
|
+
root.addHandler(handler)
|
|
234
|
+
|
|
240
235
|
if level is not None:
|
|
241
236
|
root.setLevel(level)
|
|
242
237
|
|
|
@@ -315,6 +315,8 @@ class Plugin(metaclass=PluginMeta):
|
|
|
315
315
|
self.session: Streamlink = session
|
|
316
316
|
self.matches = Matches()
|
|
317
317
|
self.url: str = url
|
|
318
|
+
if self.matchers and not self.match:
|
|
319
|
+
raise PluginError("The input URL did not match any of this plugin's matchers")
|
|
318
320
|
|
|
319
321
|
self.load_cookies()
|
|
320
322
|
|