streamlink 7.1.3__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.3 → streamlink-7.2.0}/CHANGELOG.md +22 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/PKG-INFO +5 -2
- {streamlink-7.1.3 → streamlink-7.2.0}/completions/zsh/_streamlink +10 -9
- {streamlink-7.1.3 → streamlink-7.2.0}/dev-requirements.txt +1 -1
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_build/man/streamlink.1 +11 -10
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/api_guide/quickstart.rst +41 -5
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/changelog.md +22 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/install.rst +11 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/pyproject.toml +7 -1
- {streamlink-7.1.3 → streamlink-7.2.0}/setup.py +1 -1
- streamlink-7.2.0/src/streamlink/_version.py +1 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/logger.py +15 -20
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/plugin.py +2 -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.3 → streamlink-7.2.0}/src/streamlink/plugins/nicolive.py +68 -19
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/okru.py +12 -29
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tf1.py +2 -2
- streamlink-7.2.0/src/streamlink/session/http_useragents.py +16 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/hls/hls.py +33 -7
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/hls/m3u8.py +4 -1
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/hls/segment.py +29 -2
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/l10n.py +15 -3
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/__init__.py +1 -1
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/browser.py +55 -6
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/debugger.py +60 -1
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/dom.py +12 -8
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/emulation.py +117 -2
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/fetch.py +3 -1
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/input_.py +1 -1
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/inspector.py +1 -1
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/io.py +1 -1
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/network.py +193 -2
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/page.py +91 -4
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/runtime.py +8 -4
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/security.py +1 -1
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/target.py +39 -6
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/util.py +1 -1
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink.egg-info/PKG-INFO +5 -2
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink.egg-info/SOURCES.txt +2 -3
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink.egg-info/requires.txt +3 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/argparser.py +11 -10
- streamlink-7.2.0/src/streamlink_cli/console.py +134 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/main.py +37 -38
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_check_file_output.py +33 -48
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_handle_url.py +208 -22
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_logging.py +139 -18
- {streamlink-7.1.3 → 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_euronews.py +39 -0
- streamlink-7.2.0/tests/plugins/test_kick.py +33 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_soop.py +1 -1
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tf1.py +2 -2
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_vinhlongtv.py +1 -1
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/hls/test_1.m3u8 +2 -2
- streamlink-7.1.3/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.3 → streamlink-7.2.0}/tests/stream/hls/test_hls.py +96 -6
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/hls/test_m3u8.py +2 -2
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_logger.py +11 -32
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_plugin.py +13 -0
- streamlink-7.2.0/tests/test_plugin_userinput.py +74 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_l10n.py +11 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/cdp/test_client.py +8 -8
- streamlink-7.1.3/src/streamlink/_version.py +0 -1
- streamlink-7.1.3/src/streamlink/plugins/euronews.py +0 -116
- streamlink-7.1.3/src/streamlink/plugins/kick.py +0 -205
- streamlink-7.1.3/src/streamlink/plugins/nowtvtr.py +0 -30
- streamlink-7.1.3/src/streamlink/session/http_useragents.py +0 -16
- streamlink-7.1.3/src/streamlink_cli/console.py +0 -92
- streamlink-7.1.3/tests/cli/test_console.py +0 -181
- streamlink-7.1.3/tests/plugins/test_euronews.py +0 -24
- streamlink-7.1.3/tests/plugins/test_kick.py +0 -13
- streamlink-7.1.3/tests/plugins/test_nowtvtr.py +0 -14
- streamlink-7.1.3/tests/test_plugin_userinput.py +0 -58
- {streamlink-7.1.3 → streamlink-7.2.0}/AUTHORS +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/LICENSE +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/MANIFEST.in +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/README.md +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/commands.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/onbuild.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/plugins_json.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/test_build_backend.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/test_onbuild.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/test_plugins_json.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/completions/bash/streamlink +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/Makefile +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_man.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/apple-touch-icon.png +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/favicon-16x16.png +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/favicon-32x32.png +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/favicon.ico +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/icon-ffmpeg.svg +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/icon-python.svg +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/icon.svg +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/opengraph-image.png +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/site.webmanifest +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/styles/custom.css +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_templates/base.html +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_templates/page.html +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_templates/sidebar/brand.html +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/_templates/sidebar/github-buttons.html +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/cache.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/exceptions.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/options.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/plugin.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/session.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/stream.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/streamlink.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/validate.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/webbrowser.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/api.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/api_guide/validate.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/api_guide.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/applications.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/config.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/metadata.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/plugin-sideloading.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/plugins/twitch.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/plugins.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/protocols.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/proxy.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/tutorial.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/conf.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/deprecations.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/developing.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/docutils.conf +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/ext_argparse.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/ext_github.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/ext_html_template_vars.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/ext_plugins.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/ext_releaseref.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/index.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/migrations.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/players.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/plugins.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/support.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs/thirdparty.rst +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/docs-requirements.txt +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/icon.svg +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/script/build-shell-completions.sh +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/setup.cfg +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/__main__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/api.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/buffers.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/cache.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/compat.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/exceptions.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/options.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/packages/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/packages/requests_file.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/api/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/api/useragents.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/api/validate.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/api/webbrowser/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/api/webbrowser/aws_waf.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/api/websocket.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/abematv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/adultswim.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/albavision.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/aloula.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/app17.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ard_live.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ard_mediathek.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/artetv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/atpchallenger.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/atresplayer.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/bbciplayer.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/bfmtv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/bigo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/bilibili.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/blazetv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/bloomberg.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/brightcove.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/btv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/cbsnews.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/cdnbg.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ceskatelevize.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/chzzk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/cinergroup.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/clubbingtv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/cmmedia.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/cnbce.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/cnews.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/dailymotion.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/dash.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/delfi.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/deutschewelle.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/dlive.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/dogan.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/dogus.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/douyin.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/drdk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/earthcam.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/filmon.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/goltelevision.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/goodgame.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/googledrive.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/gulli.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/hiplayer.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/hls.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/http.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/htv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/huajiao.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/huya.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/indihometv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/invintus.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/kugou.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/livestream.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/lnk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/lrt.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ltv_lsm_lv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mangomolo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mdstrm.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mediaklikk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mediavitrina.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mitele.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mixcloud.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mjunoon.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mrtmk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/n13tv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/nasaplus.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/nhkworld.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/nimotv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/nos.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/nrk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/olympicchannel.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/oneplusone.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/onetv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/openrectv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/pandalive.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/piaulizaportal.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/picarto.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/piczel.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/pixiv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/pluto.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/pluzz.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/radiko.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/raiplay.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/reuters.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/rtpa.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/rtpplay.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/rtve.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/rtvs.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ruv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/sbscokr.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/showroom.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/soop.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/sportal.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/sportschau.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ssh101.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/stadium.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/steam.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/streann.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/stv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/svtplay.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/swisstxt.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/telefe.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/telemadrid.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tiktok.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/trovo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/turkuvaz.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tv360.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tv3cat.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tv5monde.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tv8.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tv999.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tvibo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tviplayer.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tvp.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tvtoya.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/twitcasting.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/twitch.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ustreamtv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ustvnow.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/vidio.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/vimeo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/vinhlongtv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/vk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/vkvideo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/vtvgo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/welt.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/wwenetwork.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/youtube.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/yupptv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/zattoo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/zdf_mediathek.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/zeenews.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/py.typed +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/session/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/session/http.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/session/http.pyi +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/session/options.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/session/plugins.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/session/session.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/dash/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/dash/dash.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/dash/manifest.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/dash/segment.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/ffmpegmux.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/file.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/filtered.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/hls/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/http.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/segmented/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/segmented/segment.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/segmented/segmented.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/stream.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/wrappers.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/user_input.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/args.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/cache.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/crypto.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/data.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/formatter.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/module.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/named_pipe.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/parse.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/path.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/processoutput.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/random.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/socket.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/times.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/url.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/validate/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/validate/_exception.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/validate/_schemas.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/validate/_validate.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/validate/_validators.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/client.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/connection.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/exceptions.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/chromium.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/exceptions.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/webbrowser.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink.egg-info/dependency_links.txt +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink.egg-info/entry_points.txt +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink.egg-info/top_level.txt +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/__main__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/_parser.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/compat.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/constants.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/exceptions.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/output/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/output/abc.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/output/file.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/output/http.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/output/player.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/py.typed +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/show_matchers.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/streamrunner.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/utils/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/utils/formatter.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/utils/path.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/utils/player.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/utils/progress.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/utils/versioncheck.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/conftest.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_can_handle_url.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_create_output.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_formatter.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_output_stream.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_output_stream_passthrough.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_player_argv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_resolve_stream_name.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_setup_config_args.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_show_matchers.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_version_check.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/output/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/output/test_file.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/output/test_player.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/test_compat.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/test_streamrunner.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/utils/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/utils/test_formatter.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/utils/test_path.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/utils/test_player.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/utils/test_progress.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/utils/test_versioncheck.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/conftest.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/mixins/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/mixins/stream_hls.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugin/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugin/override/testplugin.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugin/testplugin.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugin/testplugin_invalid.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugin/testplugin_missing.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/conftest.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_abematv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_adultswim.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_albavision.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_aloula.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_app17.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ard_live.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ard_mediathek.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_artetv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_atpchallenger.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_atresplayer.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_bbciplayer.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_bfmtv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_bigo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_bilibili.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_blazetv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_bloomberg.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_brightcove.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_btv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_cbsnews.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_cdnbg.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ceskatelevize.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_chzzk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_cinergroup.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_clubbingtv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_cmmedia.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_cnbce.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_cnews.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_dailymotion.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_dash.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_delfi.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_deutschewelle.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_dlive.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_dogan.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_dogus.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_douyin.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_drdk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_earthcam.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_filmon.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_goltelevision.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_goodgame.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_googledrive.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_gulli.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_hiplayer.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_hls.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_http.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_htv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_huajiao.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_huya.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_indihometv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_invintus.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_kugou.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_livestream.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_lnk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_lrt.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ltv_lsm_lv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mangomolo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mdstrm.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mediaklikk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mediavitrina.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mitele.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mixcloud.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mjunoon.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mrtmk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_n13tv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_nasaplus.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_nhkworld.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_nicolive.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_nimotv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_nos.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_nrk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_okru.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_olympicchannel.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_oneplusone.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_onetv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_openrectv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_pandalive.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_piaulizaportal.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_picarto.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_piczel.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_pixiv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_pluto.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_pluzz.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_radiko.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_raiplay.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_reuters.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_rtpa.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_rtpplay.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_rtve.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_rtvs.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ruv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_sbscokr.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_showroom.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_sportal.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_sportschau.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ssh101.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_stadium.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_steam.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_streann.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_stv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_svtplay.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_swisstxt.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_telefe.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_telemadrid.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tiktok.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_trovo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_turkuvaz.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tv360.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tv3cat.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tv5monde.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tv8.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tv999.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tvibo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tviplayer.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tvp.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tvtoya.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_twitcasting.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_twitch.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ustreamtv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ustvnow.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_vidio.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_vimeo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_vk.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_vkvideo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_vtvgo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_welt.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_wwenetwork.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_youtube.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_yupptv.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_zattoo.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_zdf_mediathek.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_zeenews.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/cli/config/custom +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/cli/config/primary +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/cli/config/primary.testplugin +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/cli/config/secondary +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/cli/config/secondary.testplugin +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_1.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_10.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_11_static.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_2.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_3.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_8.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_9.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_baseurl_nested.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_baseurl_urljoin.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_no_publish_time_timeline_with_start.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_no_publish_time_timeline_without_start.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_no_duration.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p1.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p2.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p3.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p4.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p5.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_timeline_continued_p1.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_timeline_continued_p2.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_no_segment_list_or_template.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_segment_list.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_segments_byterange.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_segments_dynamic_number.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_static_no_publish_time.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_suggested_presentation_delay.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_timeline_ids.mpd +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/hls/test_date.m3u8 +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/hls/test_master.m3u8 +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/hls/test_master_twitch_vod.m3u8 +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/hls/test_multivariant_bandwidth.m3u8 +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/session/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/session/test_http.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/session/test_options.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/session/test_plugins.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/session/test_session.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/dash/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/dash/test_dash.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/dash/test_manifest.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/hls/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/hls/test_hls_filtered.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/test_ffmpegmux.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/test_file.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/test_segmented.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/test_stream_json.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/test_stream_to_url.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/test_stream_wrappers.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_api_websocket.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_buffers.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_cache.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_compat.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_options.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_plugins.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_streamlink_api.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_validate.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/testutils/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/testutils/handshake.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/testutils/test_handshake.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_args.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_cache.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_crypto.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_data.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_formatter.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_module.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_named_pipe.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_parse.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_path.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_processoutput.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_random.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_times.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_url.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/cdp/__init__.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/cdp/conftest.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/cdp/test_connection.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/conftest.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/test_chromium.py +0 -0
- {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/test_webbrowser.py +0 -0
|
@@ -1,5 +1,27 @@
|
|
|
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
|
+
|
|
3
25
|
## streamlink 7.1.3 (2025-02-14)
|
|
4
26
|
|
|
5
27
|
- Fixed: `validate.contains()` to allow all kinds of `Container` object inputs ([#6421](https://github.com/streamlink/streamlink/pull/6421))
|
|
@@ -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
|
|
|
@@ -128,9 +128,7 @@ _shtab_streamlink_cli_options=(
|
|
|
128
128
|
\$\{XDG_STATE_HOME\:-\$\{HOME\}\/.local\/state\}\/streamlink\/logs
|
|
129
129
|
]:logfile:"
|
|
130
130
|
{-Q,--quiet}"[
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
Alias for --loglevel\=none.
|
|
131
|
+
Suppress all console and log output, and also disable user prompts.
|
|
134
132
|
]"
|
|
135
133
|
{-j,--json}"[
|
|
136
134
|
Output JSON representations instead of the normal text output.
|
|
@@ -368,16 +366,19 @@ _shtab_streamlink_cli_options=(
|
|
|
368
366
|
]"
|
|
369
367
|
"--retry-streams[
|
|
370
368
|
Retry fetching the list of available streams until streams are found
|
|
371
|
-
while waiting \`DELAY\` second(s) between each attempt.
|
|
372
|
-
|
|
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.
|
|
373
373
|
|
|
374
|
-
|
|
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.
|
|
375
376
|
]:retry_streams:"
|
|
376
377
|
"--retry-max[
|
|
377
|
-
|
|
378
|
-
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).
|
|
379
379
|
|
|
380
|
-
|
|
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.
|
|
381
382
|
]:retry_max:"
|
|
382
383
|
"--retry-open[
|
|
383
384
|
After a successful fetch, try \`ATTEMPTS\` time(s) to open the stream until giving up.
|
|
@@ -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
|
|
@@ -267,9 +267,7 @@ ${XDG_STATE_HOME:\-${HOME}/.local/state}/streamlink/logs
|
|
|
267
267
|
.B \-Q
|
|
268
268
|
.TP
|
|
269
269
|
.B \-\-quiet
|
|
270
|
-
|
|
271
|
-
.sp
|
|
272
|
-
Alias for \fI\%\-\-loglevel=none\fP\&.
|
|
270
|
+
Suppress all console and log output, and also disable user prompts.
|
|
273
271
|
.UNINDENT
|
|
274
272
|
.INDENT 0.0
|
|
275
273
|
.TP
|
|
@@ -639,18 +637,21 @@ If possible, translate the resolved stream to a URL and print it.
|
|
|
639
637
|
.TP
|
|
640
638
|
.B \-\-retry\-streams DELAY
|
|
641
639
|
Retry fetching the list of available streams until streams are found
|
|
642
|
-
while waiting \fBDELAY\fP second(s) between each attempt.
|
|
643
|
-
|
|
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\&.
|
|
644
644
|
.sp
|
|
645
|
-
|
|
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.
|
|
646
647
|
.UNINDENT
|
|
647
648
|
.INDENT 0.0
|
|
648
649
|
.TP
|
|
649
650
|
.B \-\-retry\-max COUNT
|
|
650
|
-
|
|
651
|
-
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).
|
|
652
652
|
.sp
|
|
653
|
-
|
|
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.
|
|
654
655
|
.UNINDENT
|
|
655
656
|
.INDENT 0.0
|
|
656
657
|
.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,27 @@
|
|
|
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
|
+
|
|
3
25
|
## streamlink 7.1.3 (2025-02-14)
|
|
4
26
|
|
|
5
27
|
- Fixed: `validate.contains()` to allow all kinds of `Container` object inputs ([#6421](https://github.com/streamlink/streamlink/pull/6421))
|
|
@@ -501,6 +501,14 @@ Streamlink defines a `build system <pyproject.toml_>`__ according to `PEP-517`_
|
|
|
501
501
|
|
|
502
502
|
- DASH streams with video and audio content always have to get remuxed.
|
|
503
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
|
|
504
512
|
|
|
505
513
|
.. _pyproject.toml: https://github.com/streamlink/streamlink/blob/master/pyproject.toml
|
|
506
514
|
.. _PEP-517: https://peps.python.org/pep-0517/
|
|
@@ -524,6 +532,9 @@ Streamlink defines a `build system <pyproject.toml_>`__ according to `PEP-517`_
|
|
|
524
532
|
.. _urllib3: https://urllib3.readthedocs.io/en/stable/
|
|
525
533
|
.. _websocket-client: https://pypi.org/project/websocket-client/
|
|
526
534
|
|
|
535
|
+
.. _brotli: https://pypi.org/project/Brotli/
|
|
536
|
+
.. _zstandard: https://pypi.org/project/zstandard/
|
|
537
|
+
|
|
527
538
|
.. _FFmpeg: https://www.ffmpeg.org/
|
|
528
539
|
.. _muxing: https://en.wikipedia.org/wiki/Multiplexing#Video_processing
|
|
529
540
|
|
|
@@ -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"
|
|
@@ -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
|
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"""
|
|
2
|
+
$description French television news network, covering world news from the European perspective.
|
|
3
|
+
$url euronews.com
|
|
4
|
+
$type live, vod
|
|
5
|
+
$notes Euronews ignores the HTTP client's data decompression capabilities.
|
|
6
|
+
$notes Streamlink's optional brotli dependency is therefore strictly required.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import logging
|
|
10
|
+
import re
|
|
11
|
+
|
|
12
|
+
from streamlink.plugin import Plugin, pluginmatcher
|
|
13
|
+
from streamlink.plugin.api import validate
|
|
14
|
+
from streamlink.stream.hls import HLSStream
|
|
15
|
+
from streamlink.stream.http import HTTPStream
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
log = logging.getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@pluginmatcher(
|
|
22
|
+
name="live",
|
|
23
|
+
pattern=re.compile(r"https?://(?:(?P<subdomain>\w+)\.)?euronews\.com/live[?#]?"),
|
|
24
|
+
)
|
|
25
|
+
@pluginmatcher(
|
|
26
|
+
name="vod",
|
|
27
|
+
pattern=re.compile(r"https?://(?:\w+\.)?euronews\.com/(?!live)\S+"),
|
|
28
|
+
)
|
|
29
|
+
class Euronews(Plugin):
|
|
30
|
+
API_URL = "https://{subdomain}.euronews.com/api/live/data"
|
|
31
|
+
|
|
32
|
+
def _get_live(self):
|
|
33
|
+
log.debug("Querying live API")
|
|
34
|
+
subdomain = self.match["subdomain"] or "www"
|
|
35
|
+
streamtype, streamdata = self.session.http.get(
|
|
36
|
+
self.API_URL.format(subdomain=subdomain),
|
|
37
|
+
params={"locale": subdomain},
|
|
38
|
+
schema=validate.Schema(
|
|
39
|
+
validate.parse_json(),
|
|
40
|
+
validate.any(
|
|
41
|
+
validate.all(
|
|
42
|
+
{
|
|
43
|
+
"videoPrimaryUrl": validate.url(path=validate.endswith(".m3u8")),
|
|
44
|
+
},
|
|
45
|
+
validate.transform(lambda data: ("hls", data["videoPrimaryUrl"])),
|
|
46
|
+
),
|
|
47
|
+
validate.all(
|
|
48
|
+
{
|
|
49
|
+
"player": "pfp",
|
|
50
|
+
"videoId": str,
|
|
51
|
+
},
|
|
52
|
+
validate.transform(lambda data: ("youtube", data["videoId"])),
|
|
53
|
+
),
|
|
54
|
+
),
|
|
55
|
+
),
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
if streamtype == "hls":
|
|
59
|
+
return HLSStream.parse_variant_playlist(self.session, streamdata)
|
|
60
|
+
if streamtype == "youtube":
|
|
61
|
+
return self.session.streams(f"https://www.youtube.com/watch?v={streamdata}")
|
|
62
|
+
|
|
63
|
+
def _get_vod(self):
|
|
64
|
+
log.debug("Looking for VOD")
|
|
65
|
+
videotype, videodata = self.session.http.get(
|
|
66
|
+
self.url,
|
|
67
|
+
schema=validate.Schema(
|
|
68
|
+
validate.parse_html(),
|
|
69
|
+
validate.any(
|
|
70
|
+
validate.all(
|
|
71
|
+
validate.xml_xpath_string(".//meta[@property='og:video'][1]/@content"),
|
|
72
|
+
validate.url(),
|
|
73
|
+
validate.transform(lambda d: ("httpstream", d)),
|
|
74
|
+
),
|
|
75
|
+
validate.all(
|
|
76
|
+
validate.xml_xpath_string(
|
|
77
|
+
".//iframe[@id='pfpPlayer'][starts-with(@src,'https://www.youtube.com/')][1]/@src",
|
|
78
|
+
),
|
|
79
|
+
validate.url(),
|
|
80
|
+
validate.transform(lambda d: ("plugin", d)),
|
|
81
|
+
),
|
|
82
|
+
validate.all(
|
|
83
|
+
validate.xml_xpath_string("""
|
|
84
|
+
.//div
|
|
85
|
+
[@data-video]
|
|
86
|
+
[contains(@data-video, //head/meta[@rel='canonical'][@href][1]/@href)]
|
|
87
|
+
[1]
|
|
88
|
+
/@data-video
|
|
89
|
+
"""),
|
|
90
|
+
str,
|
|
91
|
+
validate.parse_json(),
|
|
92
|
+
validate.any(
|
|
93
|
+
validate.all(
|
|
94
|
+
{"url": validate.url()},
|
|
95
|
+
validate.transform(lambda d: ("httpstream", d["url"])),
|
|
96
|
+
),
|
|
97
|
+
validate.all(
|
|
98
|
+
{
|
|
99
|
+
"player": "dailymotion",
|
|
100
|
+
"id": str,
|
|
101
|
+
},
|
|
102
|
+
validate.transform(lambda d: ("plugin", f"https://www.dailymotion.com/embed/video/{d['id']}")),
|
|
103
|
+
),
|
|
104
|
+
validate.all(
|
|
105
|
+
{
|
|
106
|
+
"player": "pfp",
|
|
107
|
+
validate.optional("videoId"): str,
|
|
108
|
+
validate.optional("id"): str,
|
|
109
|
+
},
|
|
110
|
+
validate.transform(lambda d: d.get("videoId") or d.get("id")),
|
|
111
|
+
str,
|
|
112
|
+
validate.transform(lambda d: ("plugin", f"https://www.youtube.com/watch?v={d}")),
|
|
113
|
+
),
|
|
114
|
+
),
|
|
115
|
+
),
|
|
116
|
+
validate.transform(lambda *_: ("error", None)),
|
|
117
|
+
),
|
|
118
|
+
),
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
if videotype == "httpstream":
|
|
122
|
+
return dict(vod=HTTPStream(self.session, videodata))
|
|
123
|
+
if videotype == "plugin":
|
|
124
|
+
return self.session.streams(videodata)
|
|
125
|
+
|
|
126
|
+
def _get_streams(self):
|
|
127
|
+
return self._get_live() if self.matches["live"] else self._get_vod()
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
__plugin__ = Euronews
|