streamlink 6.2.0__tar.gz → 6.2.1__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-6.2.0 → streamlink-6.2.1}/CHANGELOG.md +11 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/MANIFEST.in +1 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/PKG-INFO +2 -1
- streamlink-6.2.1/build_backend/__init__.py +79 -0
- streamlink-6.2.1/build_backend/test_build_backend.py +41 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/dev-requirements.txt +2 -1
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_build/man/streamlink.1 +1 -1
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/changelog.md +11 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/install.rst +29 -5
- {streamlink-6.2.0 → streamlink-6.2.1}/pyproject.toml +19 -4
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/_version.py +1 -1
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugin/api/useragents.py +6 -6
- streamlink-6.2.1/src/streamlink/plugins/goodgame.py +89 -0
- streamlink-6.2.1/src/streamlink/plugins/nos.py +61 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/pandalive.py +5 -1
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/wwenetwork.py +15 -41
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/stream/dash.py +1 -1
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/stream/file.py +1 -1
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/stream/hls.py +1 -1
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/stream/http.py +1 -1
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/stream/stream.py +1 -1
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/l10n.py +6 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink.egg-info/PKG-INFO +2 -1
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink.egg-info/SOURCES.txt +2 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/conftest.py +1 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/conftest.py +1 -1
- streamlink-6.2.1/tests/plugins/test_goodgame.py +23 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_nos.py +8 -6
- streamlink-6.2.1/tests/plugins/test_pandalive.py +11 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_wwenetwork.py +5 -2
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_l10n.py +14 -0
- streamlink-6.2.0/src/streamlink/plugins/goodgame.py +0 -71
- streamlink-6.2.0/src/streamlink/plugins/nos.py +0 -103
- streamlink-6.2.0/tests/plugins/test_goodgame.py +0 -13
- streamlink-6.2.0/tests/plugins/test_pandalive.py +0 -17
- {streamlink-6.2.0 → streamlink-6.2.1}/AUTHORS +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/LICENSE +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/README.md +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/completions/bash/streamlink +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/completions/zsh/_streamlink +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/Makefile +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_applications.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_man.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_static/apple-touch-icon.png +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_static/favicon-16x16.png +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_static/favicon-32x32.png +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_static/favicon.ico +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_static/icon-ffmpeg.svg +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_static/icon-python.svg +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_static/icon.svg +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_static/opengraph-image.png +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_static/site.webmanifest +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_static/styles/custom.css +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_templates/base.html +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_templates/page.html +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_templates/sidebar/brand.html +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/_templates/sidebar/github-buttons.html +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/api/exceptions.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/api/options.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/api/plugin.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/api/session.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/api/stream.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/api/streamlink.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/api/webbrowser.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/api.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/api_guide.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/applications.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/cli/config.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/cli/metadata.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/cli/plugin-sideloading.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/cli/plugins/crunchyroll.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/cli/plugins/twitch.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/cli/plugins.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/cli/protocols.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/cli/proxy.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/cli/tutorial.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/cli.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/conf.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/deprecations.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/developing.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/docutils.conf +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/donate.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/ext_argparse.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/ext_github.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/ext_html_template_vars.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/ext_plugins.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/ext_releaseref.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/index.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/issues.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/migrations.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/players.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/plugins.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs/thirdparty.rst +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/docs-requirements.txt +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/icon.svg +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/setup.cfg +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/setup.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/__main__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/api.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/buffers.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/cache.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/compat.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/exceptions.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/logger.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/options.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/packages/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/packages/requests_file.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugin/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugin/api/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugin/api/http_session.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugin/api/validate/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugin/api/validate/_exception.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugin/api/validate/_schemas.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugin/api/validate/_validate.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugin/api/validate/_validators.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugin/api/websocket.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugin/plugin.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/abematv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/adultswim.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/afreeca.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/albavision.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/aloula.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/app17.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/ard_live.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/ard_mediathek.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/artetv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/atpchallenger.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/atresplayer.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/bbciplayer.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/bfmtv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/bigo.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/bilibili.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/blazetv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/bloomberg.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/booyah.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/brightcove.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/btv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/cbsnews.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/cdnbg.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/ceskatelevize.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/cinergroup.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/clubbingtv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/cmmedia.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/cnews.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/crunchyroll.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/dailymotion.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/dash.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/delfi.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/deutschewelle.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/dlive.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/dogan.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/dogus.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/drdk.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/earthcam.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/euronews.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/facebook.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/filmon.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/foxtr.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/galatasaraytv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/goltelevision.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/googledrive.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/gulli.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/hiplayer.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/hls.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/http.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/htv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/huajiao.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/huya.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/idf1.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/indihometv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/invintus.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/kugou.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/linelive.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/livestream.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/lnk.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/lrt.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/ltv_lsm_lv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/mdstrm.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/mediaklikk.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/mediavitrina.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/mildom.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/mitele.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/mixcloud.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/mjunoon.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/mrtmk.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/n13tv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/nhkworld.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/nicolive.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/nimotv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/nownews.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/nrk.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/ntv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/okru.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/olympicchannel.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/oneplusone.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/onetv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/openrectv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/piaulizaportal.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/picarto.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/piczel.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/pixiv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/pluto.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/pluzz.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/qq.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/radiko.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/radionet.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/raiplay.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/reuters.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/rtbf.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/rtpa.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/rtpplay.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/rtve.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/rtvs.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/ruv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/sbscokr.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/showroom.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/sportal.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/sportschau.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/ssh101.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/stadium.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/steam.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/streamable.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/streann.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/stv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/svtplay.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/swisstxt.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/telefe.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/telemadrid.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/tf1.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/trovo.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/turkuvaz.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/tv360.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/tv3cat.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/tv4play.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/tv5monde.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/tv8.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/tv999.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/tvibo.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/tviplayer.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/tvp.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/tvrby.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/tvrplus.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/tvtoya.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/twitcasting.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/twitch.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/ustreamtv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/ustvnow.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/vidio.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/vimeo.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/vinhlongtv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/vk.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/vkplay.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/vlive.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/vtvgo.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/wasd.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/webtv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/welt.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/youtube.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/yupptv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/zattoo.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/zdf_mediathek.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/zeenews.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/zengatv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/plugins/zhanqi.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/py.typed +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/session.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/stream/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/stream/dash_manifest.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/stream/ffmpegmux.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/stream/filtered.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/stream/hls_playlist.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/stream/segmented.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/stream/wrappers.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/user_input.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/args.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/cache.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/crypto.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/data.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/formatter.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/module.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/named_pipe.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/parse.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/path.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/processoutput.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/random.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/socket.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/times.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/utils/url.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/client.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/connection.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/browser.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/debugger.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/dom.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/emulation.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/fetch.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/input_.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/inspector.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/io.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/network.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/page.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/runtime.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/security.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/target.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/devtools/util.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/cdp/exceptions.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/chromium.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/exceptions.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink/webbrowser/webbrowser.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink.egg-info/dependency_links.txt +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink.egg-info/entry_points.txt +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink.egg-info/requires.txt +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink.egg-info/top_level.txt +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/__main__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/argparser.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/compat.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/console.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/constants.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/main.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/output/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/output/abc.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/output/file.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/output/http.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/output/player.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/streamrunner.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/utils/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/utils/formatter.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/utils/path.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/utils/player.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/utils/progress.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/src/streamlink_cli/utils/versioncheck.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/output/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/output/test_file.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/output/test_player.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/test_argparser.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/test_cmdline.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/test_cmdline_title.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/test_console.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/test_main.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/test_main_formatter.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/test_main_setup_config_args.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/test_plugin_args_and_options.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/test_streamrunner.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/utils/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/utils/test_formatter.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/utils/test_path.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/utils/test_player.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/utils/test_progress.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/cli/utils/test_versioncheck.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/mixins/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/mixins/stream_hls.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugin/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugin/override/testplugin.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugin/testplugin.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugin/testplugin_invalid.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugin/testplugin_missing.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_abematv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_adultswim.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_afreeca.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_albavision.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_aloula.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_app17.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_ard_live.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_ard_mediathek.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_artetv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_atpchallenger.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_atresplayer.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_bbciplayer.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_bfmtv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_bigo.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_bilibili.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_blazetv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_bloomberg.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_booyah.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_brightcove.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_btv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_cbsnews.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_cdnbg.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_ceskatelevize.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_cinergroup.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_clubbingtv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_cmmedia.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_cnews.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_crunchyroll.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_dailymotion.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_dash.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_delfi.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_deutschewelle.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_dlive.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_dogan.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_dogus.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_drdk.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_earthcam.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_euronews.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_facebook.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_filmon.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_foxtr.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_galatasaraytv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_goltelevision.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_googledrive.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_gulli.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_hiplayer.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_hls.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_http.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_htv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_huajiao.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_huya.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_idf1.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_indihometv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_invintus.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_kugou.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_linelive.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_livestream.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_lnk.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_lrt.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_ltv_lsm_lv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_mdstrm.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_mediaklikk.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_mediavitrina.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_mildom.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_mitele.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_mixcloud.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_mjunoon.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_mrtmk.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_n13tv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_nhkworld.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_nicolive.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_nimotv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_nownews.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_nrk.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_ntv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_okru.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_olympicchannel.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_oneplusone.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_onetv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_openrectv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_piaulizaportal.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_picarto.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_piczel.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_pixiv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_pluto.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_pluzz.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_qq.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_radiko.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_radionet.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_raiplay.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_reuters.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_rtbf.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_rtpa.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_rtpplay.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_rtve.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_rtvs.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_ruv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_sbscokr.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_showroom.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_sportal.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_sportschau.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_ssh101.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_stadium.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_steam.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_streamable.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_streann.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_stv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_svtplay.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_swisstxt.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_telefe.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_telemadrid.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_tf1.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_trovo.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_turkuvaz.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_tv360.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_tv3cat.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_tv4play.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_tv5monde.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_tv8.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_tv999.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_tvibo.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_tviplayer.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_tvp.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_tvrby.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_tvrplus.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_tvtoya.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_twitcasting.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_twitch.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_ustreamtv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_ustvnow.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_vidio.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_vimeo.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_vinhlongtv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_vk.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_vkplay.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_vlive.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_vtvgo.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_wasd.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_webtv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_welt.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_youtube.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_yupptv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_zattoo.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_zdf_mediathek.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_zeenews.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_zengatv.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/plugins/test_zhanqi.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/cli/config/custom +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/cli/config/primary +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/cli/config/primary.testplugin +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/cli/config/secondary +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/cli/config/secondary.testplugin +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_1.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_10.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_11_static.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_2.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_3.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_8.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_9.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_dynamic_timeline_continued_p1.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_dynamic_timeline_continued_p2.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_nested_baseurls.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_no_segment_list_or_template.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_segment_list.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_segments_byterange.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_segments_dynamic_number.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_static_no_publish_time.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/dash/test_timeline_ids.mpd +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/hls/test_1.m3u8 +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/hls/test_2.m3u8 +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/hls/test_date.m3u8 +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/hls/test_master.m3u8 +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/resources/hls/test_master_twitch_vod.m3u8 +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/stream/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/stream/test_dash.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/stream/test_dash_parser.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/stream/test_ffmpegmux.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/stream/test_file.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/stream/test_hls.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/stream/test_hls_filtered.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/stream/test_hls_playlist.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/stream/test_stream_json.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/stream/test_stream_to_url.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/stream/test_stream_wrappers.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/test_api_http_session.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/test_api_validate.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/test_api_websocket.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/test_buffers.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/test_cache.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/test_logger.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/test_options.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/test_plugin.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/test_plugin_userinput.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/test_plugins.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/test_session.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/test_streamlink_api.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/testutils/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/testutils/handshake.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/testutils/test_handshake.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_args.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_cache.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_crypto.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_data.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_formatter.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_module.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_named_pipe.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_parse.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_path.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_processoutput.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_random.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_times.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/utils/test_url.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/webbrowser/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/webbrowser/cdp/__init__.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/webbrowser/cdp/conftest.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/webbrowser/cdp/test_client.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/webbrowser/cdp/test_connection.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/webbrowser/conftest.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/webbrowser/test_chromium.py +0 -0
- {streamlink-6.2.0 → streamlink-6.2.1}/tests/webbrowser/test_webbrowser.py +0 -0
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## streamlink 6.2.1 (2023-10-03)
|
|
4
|
+
|
|
5
|
+
Patch release:
|
|
6
|
+
|
|
7
|
+
- Added: official support for Python 3.12 ([#5576](https://github.com/streamlink/streamlink/pull/5576))
|
|
8
|
+
- Fixed plugins: goodgame ([#5557](https://github.com/streamlink/streamlink/pull/5557)), nos ([#5565](https://github.com/streamlink/streamlink/pull/5565)), pandalive ([#5569](https://github.com/streamlink/streamlink/pull/5569)), wwenetwork ([#5559](https://github.com/streamlink/streamlink/pull/5559))
|
|
9
|
+
- Build: added custom setuptools build-backend override which fixes issues with building Windows-specific wheels ([#5558](https://github.com/streamlink/streamlink/pull/5558))
|
|
10
|
+
|
|
11
|
+
[Full changelog](https://github.com/streamlink/streamlink/compare/6.2.0...6.2.1)
|
|
12
|
+
|
|
13
|
+
|
|
3
14
|
## streamlink 6.2.0 (2023-09-14)
|
|
4
15
|
|
|
5
16
|
Release highlights:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: streamlink
|
|
3
|
-
Version: 6.2.
|
|
3
|
+
Version: 6.2.1
|
|
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
|
|
@@ -23,6 +23,7 @@ Classifier: Programming Language :: Python :: 3.8
|
|
|
23
23
|
Classifier: Programming Language :: Python :: 3.9
|
|
24
24
|
Classifier: Programming Language :: Python :: 3.10
|
|
25
25
|
Classifier: Programming Language :: Python :: 3.11
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
26
27
|
Classifier: Topic :: Internet :: WWW/HTTP
|
|
27
28
|
Classifier: Topic :: Multimedia :: Sound/Audio
|
|
28
29
|
Classifier: Topic :: Multimedia :: Video
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import shlex
|
|
2
|
+
from typing import List, Optional, Tuple
|
|
3
|
+
|
|
4
|
+
from setuptools import build_meta as _build_meta
|
|
5
|
+
|
|
6
|
+
# re-export everything from `setuptools.build_meta`, so that we don't have to worry about any hooks which we don't override
|
|
7
|
+
# https://peps.python.org/pep-0517/
|
|
8
|
+
# https://peps.python.org/pep-0660/
|
|
9
|
+
# noinspection PyUnresolvedReferences
|
|
10
|
+
from setuptools.build_meta import * # noqa: F403
|
|
11
|
+
from setuptools.command.egg_info import egg_info as _egg_info
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# ----
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def get_requires_for_build_wheel( # type: ignore[no-redef]
|
|
18
|
+
config_settings: Optional[dict] = None,
|
|
19
|
+
) -> List[str]: # pragma: no cover
|
|
20
|
+
# Streamlink publishes three wheels on PyPI: the generic "any" wheel, the "win32" wheel and the "win-amd64" wheel:
|
|
21
|
+
# The Windows-wheels are special, because they include a "gui_scripts" entry point, which is used by the `pip` frontend
|
|
22
|
+
# to generate the "streamlinkw" launcher, which doesn't open a terminal window when launching it from a GUI application.
|
|
23
|
+
#
|
|
24
|
+
# In order to build these special Windows-wheels, the `--plat-name=...` CLI argument needs to get passed
|
|
25
|
+
# to the `bdist_wheel` setuptools command (provided by the `wheel` package). With the introduction of PEP517 however,
|
|
26
|
+
# setuptools's CLI is not used directly anymore, and instead, we have to build the wheels using the `build` package
|
|
27
|
+
# and the `--wheel --config-setting=--build-option=...` args, which are then forwarded to setuptools via the PEP517 hooks.
|
|
28
|
+
#
|
|
29
|
+
# Since `build==1.0.0` though, the `--config-setting` data now gets passed to all build-backend hooks involved,
|
|
30
|
+
# even `get_requires_for_build_wheel()`. This results in the build failing, as it executes setuptools's `egg_info` command,
|
|
31
|
+
# which doesn't accept the `--plat-name` argument or any other `bdist_wheel` command options.
|
|
32
|
+
#
|
|
33
|
+
# As a consequence of this, we need to override the build-backend and the `get_requires_for_build_wheel()` hook, so that
|
|
34
|
+
# we can filter out arguments which are not relevant to the `egg_info` command.
|
|
35
|
+
_filter_cmd_option_args(config_settings, "--build-option", _egg_info.user_options)
|
|
36
|
+
|
|
37
|
+
return _build_meta.get_requires_for_build_wheel(config_settings)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# ----
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _filter_cmd_option_args(
|
|
44
|
+
config_settings: Optional[dict],
|
|
45
|
+
key: str,
|
|
46
|
+
options: List[Tuple[str, Optional[str], str]],
|
|
47
|
+
) -> None:
|
|
48
|
+
"""Filter out args which are not recognized by a specific command and its options"""
|
|
49
|
+
|
|
50
|
+
if not config_settings or not config_settings.get(key):
|
|
51
|
+
return
|
|
52
|
+
|
|
53
|
+
parsed = shlex.split(config_settings[key])
|
|
54
|
+
|
|
55
|
+
result = []
|
|
56
|
+
val_next = False
|
|
57
|
+
for item in parsed:
|
|
58
|
+
if val_next:
|
|
59
|
+
val_next = False
|
|
60
|
+
result.append(item)
|
|
61
|
+
continue
|
|
62
|
+
for full, shorthand, *_ in options:
|
|
63
|
+
is_boolean = full[-1] != "="
|
|
64
|
+
is_shorthand = shorthand is not None and item == f"-{shorthand}"
|
|
65
|
+
if not is_boolean and (is_shorthand or item == f"--{full[:-1]}"):
|
|
66
|
+
val_next = True
|
|
67
|
+
result.append(item)
|
|
68
|
+
break
|
|
69
|
+
if (
|
|
70
|
+
is_boolean and (is_shorthand or item == f"--{full}")
|
|
71
|
+
or not is_boolean and item.startswith(f"--{full}")
|
|
72
|
+
):
|
|
73
|
+
result.append(item)
|
|
74
|
+
break
|
|
75
|
+
|
|
76
|
+
if result:
|
|
77
|
+
config_settings[key] = shlex.join(result)
|
|
78
|
+
else:
|
|
79
|
+
del config_settings[key]
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from setuptools.command.egg_info import egg_info
|
|
3
|
+
|
|
4
|
+
from build_backend import _filter_cmd_option_args
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@pytest.mark.parametrize(("config_settings", "expected", "options"), [
|
|
8
|
+
pytest.param(
|
|
9
|
+
None,
|
|
10
|
+
None,
|
|
11
|
+
egg_info.user_options,
|
|
12
|
+
id="Empty config_settings",
|
|
13
|
+
),
|
|
14
|
+
pytest.param(
|
|
15
|
+
{"foo": "bar"},
|
|
16
|
+
{"foo": "bar"},
|
|
17
|
+
egg_info.user_options,
|
|
18
|
+
id="No --build-option key",
|
|
19
|
+
),
|
|
20
|
+
pytest.param(
|
|
21
|
+
{"--build-option": "--egg-base=foo/bar -e baz/qux --tag-build foo -b bar --tag-date --no-date -D"},
|
|
22
|
+
{"--build-option": "--egg-base=foo/bar -e baz/qux --tag-build foo -b bar --tag-date --no-date -D"},
|
|
23
|
+
egg_info.user_options,
|
|
24
|
+
id="All egg_info options",
|
|
25
|
+
),
|
|
26
|
+
pytest.param(
|
|
27
|
+
{"--build-option": "--foo --bar --baz"},
|
|
28
|
+
{},
|
|
29
|
+
egg_info.user_options,
|
|
30
|
+
id="Options unknown to egg_info",
|
|
31
|
+
),
|
|
32
|
+
pytest.param(
|
|
33
|
+
{"--build-option": "-p win32 --plat-name win32 --plat-name=win32"},
|
|
34
|
+
{},
|
|
35
|
+
egg_info.user_options,
|
|
36
|
+
id="bdist_wheel --plat-name option",
|
|
37
|
+
),
|
|
38
|
+
])
|
|
39
|
+
def test_filter_cmd_option_args(config_settings: dict, expected: str, options: list):
|
|
40
|
+
_filter_cmd_option_args(config_settings, "--build-option", options)
|
|
41
|
+
assert config_settings == expected
|
|
@@ -14,7 +14,7 @@ pytest-cov
|
|
|
14
14
|
coverage[toml]
|
|
15
15
|
|
|
16
16
|
# code-linting
|
|
17
|
-
ruff ==0.0.
|
|
17
|
+
ruff ==0.0.291
|
|
18
18
|
|
|
19
19
|
# typing
|
|
20
20
|
mypy
|
|
@@ -22,6 +22,7 @@ lxml-stubs
|
|
|
22
22
|
trio-typing
|
|
23
23
|
types-freezegun
|
|
24
24
|
types-requests
|
|
25
|
+
types-setuptools
|
|
25
26
|
types-urllib3
|
|
26
27
|
|
|
27
28
|
# scripts
|
|
@@ -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" "Oct 03, 2023" "6.2.1" "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
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## streamlink 6.2.1 (2023-10-03)
|
|
4
|
+
|
|
5
|
+
Patch release:
|
|
6
|
+
|
|
7
|
+
- Added: official support for Python 3.12 ([#5576](https://github.com/streamlink/streamlink/pull/5576))
|
|
8
|
+
- Fixed plugins: goodgame ([#5557](https://github.com/streamlink/streamlink/pull/5557)), nos ([#5565](https://github.com/streamlink/streamlink/pull/5565)), pandalive ([#5569](https://github.com/streamlink/streamlink/pull/5569)), wwenetwork ([#5559](https://github.com/streamlink/streamlink/pull/5559))
|
|
9
|
+
- Build: added custom setuptools build-backend override which fixes issues with building Windows-specific wheels ([#5558](https://github.com/streamlink/streamlink/pull/5558))
|
|
10
|
+
|
|
11
|
+
[Full changelog](https://github.com/streamlink/streamlink/compare/6.2.0...6.2.1)
|
|
12
|
+
|
|
13
|
+
|
|
3
14
|
## streamlink 6.2.0 (2023-09-14)
|
|
4
15
|
|
|
5
16
|
Release highlights:
|
|
@@ -136,6 +136,12 @@ Linux and BSD
|
|
|
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
|
|
139
|
+
* - :octicon:`package-dependents` `Alpine Linux (edge, testing)`_
|
|
140
|
+
- .. code-block:: bash
|
|
141
|
+
|
|
142
|
+
sudo apk add streamlink
|
|
143
|
+
|
|
144
|
+
`Enabling the edge/testing repository`_
|
|
139
145
|
* - :octicon:`package-dependents` `Arch Linux`_
|
|
140
146
|
- .. code-block:: bash
|
|
141
147
|
|
|
@@ -167,6 +173,16 @@ Linux and BSD
|
|
|
167
173
|
- .. code-block:: bash
|
|
168
174
|
|
|
169
175
|
sudo dnf install streamlink
|
|
176
|
+
* - :octicon:`package-dependents` `FreeBSD (pkg)`_
|
|
177
|
+
- .. code-block:: bash
|
|
178
|
+
|
|
179
|
+
pkg install multimedia/streamlink
|
|
180
|
+
|
|
181
|
+
* - :octicon:`package-dependents` `FreeBSD (ports)`_
|
|
182
|
+
- .. code-block:: bash
|
|
183
|
+
|
|
184
|
+
cd /usr/ports/multimedia/streamlink
|
|
185
|
+
make config install clean
|
|
170
186
|
* - :octicon:`package-dependents` `Gentoo Linux`_
|
|
171
187
|
- .. code-block:: bash
|
|
172
188
|
|
|
@@ -195,20 +211,24 @@ Linux and BSD
|
|
|
195
211
|
|
|
196
212
|
sudo xbps-install streamlink
|
|
197
213
|
|
|
214
|
+
.. _Alpine Linux (edge, testing): https://pkgs.alpinelinux.org/packages?name=streamlink
|
|
198
215
|
.. _Arch Linux: https://archlinux.org/packages/extra/any/streamlink/
|
|
199
216
|
.. _Arch Linux (aur, git): https://aur.archlinux.org/packages/streamlink-git/
|
|
200
|
-
.. _Debian (sid, testing): https://packages.debian.org/
|
|
201
|
-
.. _Debian (stable): https://packages.debian.org/
|
|
217
|
+
.. _Debian (sid, testing): https://packages.debian.org/sid/streamlink
|
|
218
|
+
.. _Debian (stable): https://packages.debian.org/bullseye-backports/streamlink
|
|
202
219
|
.. _Fedora: https://src.fedoraproject.org/rpms/python-streamlink
|
|
220
|
+
.. _FreeBSD (pkg): https://ports.freebsd.org/cgi/ports.cgi?query=streamlink&stype=name
|
|
221
|
+
.. _FreeBSD (ports): https://www.freshports.org/multimedia/streamlink
|
|
203
222
|
.. _Gentoo Linux: https://packages.gentoo.org/package/net-misc/streamlink
|
|
204
223
|
.. _NetBSD (pkgsrc): https://pkgsrc.se/multimedia/streamlink
|
|
205
224
|
.. _NixOS: https://github.com/NixOS/nixpkgs/tree/master/pkgs/applications/video/streamlink
|
|
206
225
|
.. _openSUSE: https://build.opensuse.org/package/show/multimedia:apps/streamlink
|
|
207
|
-
.. _Solus: https://github.com/
|
|
226
|
+
.. _Solus: https://github.com/getsolus/packages/tree/main/packages/s/streamlink
|
|
208
227
|
.. _Void: https://github.com/void-linux/void-packages/tree/master/srcpkgs/streamlink
|
|
209
228
|
|
|
210
|
-
..
|
|
211
|
-
.. _Installing
|
|
229
|
+
.. _Enabling the edge/testing repository: https://wiki.alpinelinux.org/wiki/Repositories#Edge
|
|
230
|
+
.. _Installing AUR packages: https://wiki.archlinux.org/index.php/Arch_User_Repository
|
|
231
|
+
.. _Installing Debian backported packages: https://wiki.debian.org/Backports
|
|
212
232
|
.. _NixOS channel: https://search.nixos.org/packages?show=streamlink&query=streamlink
|
|
213
233
|
|
|
214
234
|
|
|
@@ -221,6 +241,8 @@ Package maintainers
|
|
|
221
241
|
|
|
222
242
|
* - Distribution / Platform
|
|
223
243
|
- Maintainer
|
|
244
|
+
* - Alpine Linux
|
|
245
|
+
- Robert Sacks <robert at sacks.email>
|
|
224
246
|
* - Arch
|
|
225
247
|
- Giancarlo Razzolini <grazzolini at archlinux.org>
|
|
226
248
|
* - Arch (aur, git)
|
|
@@ -231,6 +253,8 @@ Package maintainers
|
|
|
231
253
|
- Alexis Murzeau <amubtdx at gmail.com>
|
|
232
254
|
* - Fedora
|
|
233
255
|
- Mohamed El Morabity <melmorabity at fedoraproject.org>
|
|
256
|
+
* - FreeBSD
|
|
257
|
+
- Takefu <takefu at airport.fm>
|
|
234
258
|
* - Gentoo
|
|
235
259
|
- soredake <fdsfgs at krutt.org>
|
|
236
260
|
* - NetBSD
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
build-backend = "setuptools.build_meta"
|
|
3
2
|
requires = [
|
|
4
3
|
"setuptools >=64",
|
|
5
4
|
"wheel",
|
|
6
5
|
"versioningit >=2.0.0, <3",
|
|
7
6
|
]
|
|
7
|
+
# setuptools build-backend override
|
|
8
|
+
# https://setuptools.pypa.io/en/stable/build_meta.html
|
|
9
|
+
backend-path = ["build_backend"]
|
|
10
|
+
build-backend = "__init__"
|
|
8
11
|
|
|
9
12
|
|
|
10
13
|
# https://peps.python.org/pep-0621/
|
|
@@ -34,6 +37,7 @@ classifiers = [
|
|
|
34
37
|
"Programming Language :: Python :: 3.9",
|
|
35
38
|
"Programming Language :: Python :: 3.10",
|
|
36
39
|
"Programming Language :: Python :: 3.11",
|
|
40
|
+
"Programming Language :: Python :: 3.12",
|
|
37
41
|
"Topic :: Internet :: WWW/HTTP",
|
|
38
42
|
"Topic :: Multimedia :: Sound/Audio",
|
|
39
43
|
"Topic :: Multimedia :: Video",
|
|
@@ -110,6 +114,10 @@ build-file = "streamlink/_version.py"
|
|
|
110
114
|
# https://docs.pytest.org/en/latest/reference/customize.html#configuration
|
|
111
115
|
# https://docs.pytest.org/en/latest/reference/reference.html#ini-options-ref
|
|
112
116
|
[tool.pytest.ini_options]
|
|
117
|
+
testpaths = [
|
|
118
|
+
"build_backend",
|
|
119
|
+
"tests",
|
|
120
|
+
]
|
|
113
121
|
filterwarnings = [
|
|
114
122
|
"always",
|
|
115
123
|
"ignore:::pkg_resources",
|
|
@@ -121,6 +129,7 @@ filterwarnings = [
|
|
|
121
129
|
[tool.coverage.run]
|
|
122
130
|
branch = true
|
|
123
131
|
source = [
|
|
132
|
+
"build_backend",
|
|
124
133
|
"src",
|
|
125
134
|
"tests",
|
|
126
135
|
]
|
|
@@ -140,15 +149,20 @@ exclude_lines = [
|
|
|
140
149
|
]
|
|
141
150
|
|
|
142
151
|
|
|
143
|
-
# https://
|
|
152
|
+
# https://docs.astral.sh/ruff/configuration/
|
|
144
153
|
[tool.ruff]
|
|
145
|
-
src = [
|
|
154
|
+
src = [
|
|
155
|
+
"build_backend",
|
|
156
|
+
"src",
|
|
157
|
+
"tests",
|
|
158
|
+
]
|
|
146
159
|
target-version = "py38"
|
|
147
160
|
fix = false
|
|
148
161
|
ignore-init-module-imports = true
|
|
149
162
|
line-length = 128
|
|
150
163
|
show-source = true
|
|
151
|
-
format = "grouped"
|
|
164
|
+
output-format = "grouped"
|
|
165
|
+
preview = true
|
|
152
166
|
select = [
|
|
153
167
|
# pycodestyle
|
|
154
168
|
"E",
|
|
@@ -233,6 +247,7 @@ show_error_context = true
|
|
|
233
247
|
show_column_numbers = true
|
|
234
248
|
warn_no_return = false
|
|
235
249
|
files = [
|
|
250
|
+
"build_backend",
|
|
236
251
|
"src/streamlink/",
|
|
237
252
|
"src/streamlink_cli/",
|
|
238
253
|
"tests/",
|
|
@@ -12,4 +12,4 @@ def _get_version() -> str:
|
|
|
12
12
|
|
|
13
13
|
# The following _get_version() call will get replaced by versioningit with a static version string when building streamlink
|
|
14
14
|
# `pip install .` / `pip wheel .` / `python setup.py build` / `python setup.py bdist_wheel` / etc.
|
|
15
|
-
__version__ = "6.2.
|
|
15
|
+
__version__ = "6.2.1"
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
ANDROID = "Mozilla/5.0 (Linux; Android 13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/
|
|
2
|
-
CHROME = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/
|
|
1
|
+
ANDROID = "Mozilla/5.0 (Linux; Android 13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.5938.140 Mobile Safari/537.36"
|
|
2
|
+
CHROME = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
|
|
3
3
|
CHROME_OS = "Mozilla/5.0 (X11; CrOS x86_64 15359.58.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.5615.134 Safari/537.36"
|
|
4
|
-
FIREFOX = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/
|
|
4
|
+
FIREFOX = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0"
|
|
5
5
|
IE_11 = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
|
|
6
|
-
IPHONE = "Mozilla/5.0 (iPhone; CPU iPhone OS
|
|
7
|
-
OPERA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/
|
|
8
|
-
SAFARI = "Mozilla/5.0 (Macintosh; Intel Mac OS X
|
|
6
|
+
IPHONE = "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5 Mobile/15E148 Safari/604.1"
|
|
7
|
+
OPERA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 OPR/102.0.0.0"
|
|
8
|
+
SAFARI = "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5 Safari/605.1.15"
|
|
9
9
|
|
|
10
10
|
# Backwards compatibility
|
|
11
11
|
EDGE = CHROME
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"""
|
|
2
|
+
$description Russian live-streaming platform for live video game broadcasts.
|
|
3
|
+
$url goodgame.ru
|
|
4
|
+
$type live
|
|
5
|
+
$metadata id
|
|
6
|
+
$metadata author
|
|
7
|
+
$metadata category
|
|
8
|
+
$metadata title
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import logging
|
|
12
|
+
import re
|
|
13
|
+
import sys
|
|
14
|
+
from urllib.parse import urlparse, urlunparse
|
|
15
|
+
|
|
16
|
+
from streamlink.plugin import Plugin, pluginmatcher
|
|
17
|
+
from streamlink.plugin.api import validate
|
|
18
|
+
from streamlink.stream.hls import HLSStream
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
log = logging.getLogger(__name__)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@pluginmatcher(re.compile(
|
|
25
|
+
r"https?://(?:www\.)?goodgame\.ru/(?:channel/)?(?P<user>[^/]+)",
|
|
26
|
+
))
|
|
27
|
+
class GoodGame(Plugin):
|
|
28
|
+
@classmethod
|
|
29
|
+
def stream_weight(cls, stream):
|
|
30
|
+
if stream == "source":
|
|
31
|
+
return sys.maxsize, stream
|
|
32
|
+
return super().stream_weight(stream)
|
|
33
|
+
|
|
34
|
+
def __init__(self, *args, **kwargs):
|
|
35
|
+
super().__init__(*args, **kwargs)
|
|
36
|
+
|
|
37
|
+
# `/channel/user` returns different JSON data with less useful information
|
|
38
|
+
url = urlparse(self.url)
|
|
39
|
+
self.url = urlunparse(url._replace(path=re.sub(r"^/channel/", "/", url.path)))
|
|
40
|
+
|
|
41
|
+
def _get_streams(self):
|
|
42
|
+
data = self.session.http.get(
|
|
43
|
+
self.url,
|
|
44
|
+
schema=validate.Schema(
|
|
45
|
+
validate.parse_html(),
|
|
46
|
+
validate.xml_xpath_string(".//script[contains(text(),'channel:{')][1]/text()"),
|
|
47
|
+
re.compile(r"channel:(?P<json>{.+?}),?\n"),
|
|
48
|
+
validate.none_or_all(
|
|
49
|
+
validate.get("json"),
|
|
50
|
+
validate.parse_json(),
|
|
51
|
+
{
|
|
52
|
+
"status": bool,
|
|
53
|
+
"id": int,
|
|
54
|
+
"streamer": {"username": str},
|
|
55
|
+
"game": str,
|
|
56
|
+
"title": str,
|
|
57
|
+
"sources": validate.all(
|
|
58
|
+
{str: validate.url()},
|
|
59
|
+
validate.filter(lambda k, v: ".m3u8" in v),
|
|
60
|
+
),
|
|
61
|
+
},
|
|
62
|
+
validate.union_get(
|
|
63
|
+
"status",
|
|
64
|
+
"id",
|
|
65
|
+
("streamer", "username"),
|
|
66
|
+
"game",
|
|
67
|
+
"title",
|
|
68
|
+
"sources",
|
|
69
|
+
),
|
|
70
|
+
),
|
|
71
|
+
),
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
if not data:
|
|
75
|
+
log.error("Could not find channel info")
|
|
76
|
+
return
|
|
77
|
+
|
|
78
|
+
status, self.id, self.author, self.category, self.title, sources = data
|
|
79
|
+
|
|
80
|
+
if not status:
|
|
81
|
+
log.debug("Channel appears to be offline")
|
|
82
|
+
return
|
|
83
|
+
|
|
84
|
+
for name, url in sources.items():
|
|
85
|
+
name = f"{name}{'p' if name.isnumeric() else ''}"
|
|
86
|
+
yield name, HLSStream(self.session, url)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
__plugin__ = GoodGame
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"""
|
|
2
|
+
$description Live TV channels and video on-demand service from NOS, a Dutch public, state-owned broadcaster.
|
|
3
|
+
$url nos.nl
|
|
4
|
+
$type live, vod
|
|
5
|
+
$metadata id
|
|
6
|
+
$metadata title
|
|
7
|
+
$region Netherlands
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
import re
|
|
12
|
+
|
|
13
|
+
from streamlink.plugin import Plugin, pluginmatcher
|
|
14
|
+
from streamlink.plugin.api import validate
|
|
15
|
+
from streamlink.stream.hls import HLSStream
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
log = logging.getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@pluginmatcher(re.compile(
|
|
22
|
+
r"https?://(?:\w+\.)?nos\.nl/(?:live|video|collectie)",
|
|
23
|
+
))
|
|
24
|
+
class NOS(Plugin):
|
|
25
|
+
def _get_streams(self):
|
|
26
|
+
data = self.session.http.get(
|
|
27
|
+
self.url,
|
|
28
|
+
schema=validate.Schema(
|
|
29
|
+
validate.parse_html(),
|
|
30
|
+
validate.xml_xpath_string(".//script[@type='application/ld+json'][1]/text()"),
|
|
31
|
+
validate.none_or_all(
|
|
32
|
+
validate.parse_json(),
|
|
33
|
+
{
|
|
34
|
+
"@type": "VideoObject",
|
|
35
|
+
"encodingFormat": "application/vnd.apple.mpegurl",
|
|
36
|
+
"contentUrl": validate.url(),
|
|
37
|
+
"identifier": validate.any(int, str),
|
|
38
|
+
"name": str,
|
|
39
|
+
},
|
|
40
|
+
validate.union_get(
|
|
41
|
+
"contentUrl",
|
|
42
|
+
"identifier",
|
|
43
|
+
"name",
|
|
44
|
+
),
|
|
45
|
+
),
|
|
46
|
+
),
|
|
47
|
+
)
|
|
48
|
+
if not data:
|
|
49
|
+
return
|
|
50
|
+
|
|
51
|
+
hls_url, self.id, self.title = data
|
|
52
|
+
|
|
53
|
+
res = self.session.http.get(hls_url, raise_for_status=False)
|
|
54
|
+
if res.status_code >= 400:
|
|
55
|
+
log.error("Content is inaccessible or may have expired")
|
|
56
|
+
return
|
|
57
|
+
|
|
58
|
+
return HLSStream.parse_variant_playlist(self.session, hls_url)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
__plugin__ = NOS
|
|
@@ -18,7 +18,7 @@ log = logging.getLogger(__name__)
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
@pluginmatcher(re.compile(
|
|
21
|
-
r"https?://(?:www\.)?pandalive\.co\.kr/",
|
|
21
|
+
r"https?://(?:www\.)?pandalive\.co\.kr/live/play/[^/]+",
|
|
22
22
|
))
|
|
23
23
|
class Pandalive(Plugin):
|
|
24
24
|
def _get_streams(self):
|
|
@@ -34,10 +34,14 @@ class Pandalive(Plugin):
|
|
|
34
34
|
|
|
35
35
|
json = self.session.http.post(
|
|
36
36
|
"https://api.pandalive.co.kr/v1/live/play",
|
|
37
|
+
headers={
|
|
38
|
+
"Referer": self.url,
|
|
39
|
+
},
|
|
37
40
|
data={
|
|
38
41
|
"action": "watch",
|
|
39
42
|
"userId": media_code,
|
|
40
43
|
},
|
|
44
|
+
acceptable_status=(200, 400),
|
|
41
45
|
schema=validate.Schema(
|
|
42
46
|
validate.parse_json(),
|
|
43
47
|
validate.any(
|