streamlink 7.1.2__tar.gz → 7.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (625) hide show
  1. {streamlink-7.1.2 → streamlink-7.2.0}/CHANGELOG.md +41 -0
  2. {streamlink-7.1.2 → streamlink-7.2.0}/PKG-INFO +5 -2
  3. {streamlink-7.1.2 → streamlink-7.2.0}/completions/zsh/_streamlink +25 -12
  4. {streamlink-7.1.2 → streamlink-7.2.0}/dev-requirements.txt +3 -3
  5. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_build/man/streamlink.1 +26 -13
  6. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/styles/custom.css +0 -1
  7. {streamlink-7.1.2 → streamlink-7.2.0}/docs/api_guide/quickstart.rst +41 -5
  8. {streamlink-7.1.2 → streamlink-7.2.0}/docs/changelog.md +41 -0
  9. {streamlink-7.1.2 → streamlink-7.2.0}/docs/install.rst +39 -20
  10. {streamlink-7.1.2 → streamlink-7.2.0}/pyproject.toml +8 -2
  11. {streamlink-7.1.2 → streamlink-7.2.0}/setup.py +1 -1
  12. streamlink-7.2.0/src/streamlink/_version.py +1 -0
  13. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/logger.py +15 -20
  14. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/plugin.py +2 -0
  15. streamlink-7.2.0/src/streamlink/plugins/ceskatelevize.py +160 -0
  16. streamlink-7.2.0/src/streamlink/plugins/euronews.py +130 -0
  17. streamlink-7.2.0/src/streamlink/plugins/kick.py +200 -0
  18. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/nicolive.py +68 -19
  19. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/nos.py +8 -2
  20. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/okru.py +12 -29
  21. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/pandalive.py +32 -9
  22. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/pluzz.py +50 -54
  23. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tf1.py +3 -3
  24. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/twitch.py +54 -50
  25. streamlink-7.2.0/src/streamlink/plugins/wwenetwork.py +172 -0
  26. streamlink-7.2.0/src/streamlink/session/http_useragents.py +16 -0
  27. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/ffmpegmux.py +1 -1
  28. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/hls/hls.py +33 -7
  29. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/hls/m3u8.py +4 -1
  30. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/hls/segment.py +29 -2
  31. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/l10n.py +15 -3
  32. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/validate/_schemas.py +4 -4
  33. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/validate/_validators.py +19 -9
  34. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/__init__.py +1 -1
  35. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/browser.py +55 -6
  36. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/debugger.py +60 -1
  37. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/dom.py +12 -8
  38. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/emulation.py +117 -2
  39. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/fetch.py +3 -1
  40. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/input_.py +1 -1
  41. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/inspector.py +1 -1
  42. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/io.py +1 -1
  43. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/network.py +193 -2
  44. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/page.py +91 -4
  45. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/runtime.py +8 -4
  46. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/security.py +1 -1
  47. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/target.py +39 -6
  48. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/util.py +1 -1
  49. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink.egg-info/PKG-INFO +5 -2
  50. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink.egg-info/SOURCES.txt +2 -7
  51. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink.egg-info/requires.txt +3 -0
  52. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/argparser.py +25 -12
  53. streamlink-7.2.0/src/streamlink_cli/console.py +134 -0
  54. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/main.py +37 -38
  55. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_check_file_output.py +33 -48
  56. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_handle_url.py +208 -22
  57. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_logging.py +139 -18
  58. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/test_argparser.py +9 -26
  59. streamlink-7.2.0/tests/cli/test_console.py +337 -0
  60. streamlink-7.2.0/tests/plugins/test_ceskatelevize.py +21 -0
  61. streamlink-7.2.0/tests/plugins/test_euronews.py +39 -0
  62. streamlink-7.2.0/tests/plugins/test_kick.py +33 -0
  63. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_nos.py +6 -1
  64. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_pandalive.py +3 -2
  65. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_soop.py +1 -1
  66. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tf1.py +2 -2
  67. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_twitch.py +100 -27
  68. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_vinhlongtv.py +1 -1
  69. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/hls/test_1.m3u8 +2 -2
  70. streamlink-7.1.2/tests/resources/hls/test_2.m3u8 → streamlink-7.2.0/tests/resources/hls/test_media_language.m3u8 +4 -3
  71. streamlink-7.2.0/tests/resources/hls/test_media_language_special.m3u8 +10 -0
  72. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/hls/test_hls.py +96 -6
  73. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/hls/test_m3u8.py +2 -2
  74. {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_logger.py +11 -32
  75. {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_plugin.py +13 -0
  76. streamlink-7.2.0/tests/test_plugin_userinput.py +74 -0
  77. {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_validate.py +35 -4
  78. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_l10n.py +11 -0
  79. {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/cdp/test_client.py +8 -8
  80. streamlink-7.1.2/src/streamlink/_version.py +0 -1
  81. streamlink-7.1.2/src/streamlink/plugins/ceskatelevize.py +0 -223
  82. streamlink-7.1.2/src/streamlink/plugins/euronews.py +0 -116
  83. streamlink-7.1.2/src/streamlink/plugins/kick.py +0 -205
  84. streamlink-7.1.2/src/streamlink/plugins/nowtvtr.py +0 -30
  85. streamlink-7.1.2/src/streamlink/plugins/streamable.py +0 -48
  86. streamlink-7.1.2/src/streamlink/plugins/tv4play.py +0 -97
  87. streamlink-7.1.2/src/streamlink/plugins/wwenetwork.py +0 -145
  88. streamlink-7.1.2/src/streamlink/session/http_useragents.py +0 -16
  89. streamlink-7.1.2/src/streamlink_cli/console.py +0 -92
  90. streamlink-7.1.2/tests/cli/test_console.py +0 -181
  91. streamlink-7.1.2/tests/plugins/test_ceskatelevize.py +0 -22
  92. streamlink-7.1.2/tests/plugins/test_euronews.py +0 -24
  93. streamlink-7.1.2/tests/plugins/test_kick.py +0 -13
  94. streamlink-7.1.2/tests/plugins/test_nowtvtr.py +0 -14
  95. streamlink-7.1.2/tests/plugins/test_streamable.py +0 -10
  96. streamlink-7.1.2/tests/plugins/test_tv4play.py +0 -37
  97. streamlink-7.1.2/tests/test_plugin_userinput.py +0 -58
  98. {streamlink-7.1.2 → streamlink-7.2.0}/AUTHORS +0 -0
  99. {streamlink-7.1.2 → streamlink-7.2.0}/LICENSE +0 -0
  100. {streamlink-7.1.2 → streamlink-7.2.0}/MANIFEST.in +0 -0
  101. {streamlink-7.1.2 → streamlink-7.2.0}/README.md +0 -0
  102. {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/__init__.py +0 -0
  103. {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/commands.py +0 -0
  104. {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/onbuild.py +0 -0
  105. {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/plugins_json.py +0 -0
  106. {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/test_build_backend.py +0 -0
  107. {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/test_onbuild.py +0 -0
  108. {streamlink-7.1.2 → streamlink-7.2.0}/build_backend/test_plugins_json.py +0 -0
  109. {streamlink-7.1.2 → streamlink-7.2.0}/completions/bash/streamlink +0 -0
  110. {streamlink-7.1.2 → streamlink-7.2.0}/docs/Makefile +0 -0
  111. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_man.rst +0 -0
  112. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/apple-touch-icon.png +0 -0
  113. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/favicon-16x16.png +0 -0
  114. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/favicon-32x32.png +0 -0
  115. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/favicon.ico +0 -0
  116. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/icon-ffmpeg.svg +0 -0
  117. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/icon-python.svg +0 -0
  118. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/icon.svg +0 -0
  119. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/opengraph-image.png +0 -0
  120. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_static/site.webmanifest +0 -0
  121. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_templates/base.html +0 -0
  122. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_templates/page.html +0 -0
  123. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_templates/sidebar/brand.html +0 -0
  124. {streamlink-7.1.2 → streamlink-7.2.0}/docs/_templates/sidebar/github-buttons.html +0 -0
  125. {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/cache.rst +0 -0
  126. {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/exceptions.rst +0 -0
  127. {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/options.rst +0 -0
  128. {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/plugin.rst +0 -0
  129. {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/session.rst +0 -0
  130. {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/stream.rst +0 -0
  131. {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/streamlink.rst +0 -0
  132. {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/validate.rst +0 -0
  133. {streamlink-7.1.2 → streamlink-7.2.0}/docs/api/webbrowser.rst +0 -0
  134. {streamlink-7.1.2 → streamlink-7.2.0}/docs/api.rst +0 -0
  135. {streamlink-7.1.2 → streamlink-7.2.0}/docs/api_guide/validate.rst +0 -0
  136. {streamlink-7.1.2 → streamlink-7.2.0}/docs/api_guide.rst +0 -0
  137. {streamlink-7.1.2 → streamlink-7.2.0}/docs/applications.rst +0 -0
  138. {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/config.rst +0 -0
  139. {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/metadata.rst +0 -0
  140. {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/plugin-sideloading.rst +0 -0
  141. {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/plugins/twitch.rst +0 -0
  142. {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/plugins.rst +0 -0
  143. {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/protocols.rst +0 -0
  144. {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/proxy.rst +0 -0
  145. {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli/tutorial.rst +0 -0
  146. {streamlink-7.1.2 → streamlink-7.2.0}/docs/cli.rst +0 -0
  147. {streamlink-7.1.2 → streamlink-7.2.0}/docs/conf.py +0 -0
  148. {streamlink-7.1.2 → streamlink-7.2.0}/docs/deprecations.rst +0 -0
  149. {streamlink-7.1.2 → streamlink-7.2.0}/docs/developing.rst +0 -0
  150. {streamlink-7.1.2 → streamlink-7.2.0}/docs/docutils.conf +0 -0
  151. {streamlink-7.1.2 → streamlink-7.2.0}/docs/ext_argparse.py +0 -0
  152. {streamlink-7.1.2 → streamlink-7.2.0}/docs/ext_github.py +0 -0
  153. {streamlink-7.1.2 → streamlink-7.2.0}/docs/ext_html_template_vars.py +0 -0
  154. {streamlink-7.1.2 → streamlink-7.2.0}/docs/ext_plugins.py +0 -0
  155. {streamlink-7.1.2 → streamlink-7.2.0}/docs/ext_releaseref.py +0 -0
  156. {streamlink-7.1.2 → streamlink-7.2.0}/docs/index.rst +0 -0
  157. {streamlink-7.1.2 → streamlink-7.2.0}/docs/migrations.rst +0 -0
  158. {streamlink-7.1.2 → streamlink-7.2.0}/docs/players.rst +0 -0
  159. {streamlink-7.1.2 → streamlink-7.2.0}/docs/plugins.rst +0 -0
  160. {streamlink-7.1.2 → streamlink-7.2.0}/docs/support.rst +0 -0
  161. {streamlink-7.1.2 → streamlink-7.2.0}/docs/thirdparty.rst +0 -0
  162. {streamlink-7.1.2 → streamlink-7.2.0}/docs-requirements.txt +0 -0
  163. {streamlink-7.1.2 → streamlink-7.2.0}/icon.svg +0 -0
  164. {streamlink-7.1.2 → streamlink-7.2.0}/script/build-shell-completions.sh +0 -0
  165. {streamlink-7.1.2 → streamlink-7.2.0}/setup.cfg +0 -0
  166. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/__init__.py +0 -0
  167. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/__main__.py +0 -0
  168. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/api.py +0 -0
  169. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/buffers.py +0 -0
  170. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/cache.py +0 -0
  171. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/compat.py +0 -0
  172. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/exceptions.py +0 -0
  173. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/options.py +0 -0
  174. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/packages/__init__.py +0 -0
  175. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/packages/requests_file.py +0 -0
  176. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/__init__.py +0 -0
  177. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/api/__init__.py +0 -0
  178. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/api/useragents.py +0 -0
  179. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/api/validate.py +0 -0
  180. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/api/webbrowser/__init__.py +0 -0
  181. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/api/webbrowser/aws_waf.py +0 -0
  182. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugin/api/websocket.py +0 -0
  183. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/__init__.py +0 -0
  184. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/abematv.py +0 -0
  185. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/adultswim.py +0 -0
  186. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/albavision.py +0 -0
  187. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/aloula.py +0 -0
  188. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/app17.py +0 -0
  189. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ard_live.py +0 -0
  190. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ard_mediathek.py +0 -0
  191. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/artetv.py +0 -0
  192. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/atpchallenger.py +0 -0
  193. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/atresplayer.py +0 -0
  194. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/bbciplayer.py +0 -0
  195. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/bfmtv.py +0 -0
  196. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/bigo.py +0 -0
  197. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/bilibili.py +0 -0
  198. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/blazetv.py +0 -0
  199. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/bloomberg.py +0 -0
  200. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/brightcove.py +0 -0
  201. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/btv.py +0 -0
  202. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/cbsnews.py +0 -0
  203. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/cdnbg.py +0 -0
  204. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/chzzk.py +0 -0
  205. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/cinergroup.py +0 -0
  206. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/clubbingtv.py +0 -0
  207. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/cmmedia.py +0 -0
  208. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/cnbce.py +0 -0
  209. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/cnews.py +0 -0
  210. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/dailymotion.py +0 -0
  211. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/dash.py +0 -0
  212. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/delfi.py +0 -0
  213. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/deutschewelle.py +0 -0
  214. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/dlive.py +0 -0
  215. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/dogan.py +0 -0
  216. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/dogus.py +0 -0
  217. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/douyin.py +0 -0
  218. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/drdk.py +0 -0
  219. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/earthcam.py +0 -0
  220. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/filmon.py +0 -0
  221. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/goltelevision.py +0 -0
  222. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/goodgame.py +0 -0
  223. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/googledrive.py +0 -0
  224. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/gulli.py +0 -0
  225. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/hiplayer.py +0 -0
  226. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/hls.py +0 -0
  227. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/http.py +0 -0
  228. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/htv.py +0 -0
  229. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/huajiao.py +0 -0
  230. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/huya.py +0 -0
  231. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/indihometv.py +0 -0
  232. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/invintus.py +0 -0
  233. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/kugou.py +0 -0
  234. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/livestream.py +0 -0
  235. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/lnk.py +0 -0
  236. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/lrt.py +0 -0
  237. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ltv_lsm_lv.py +0 -0
  238. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mangomolo.py +0 -0
  239. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mdstrm.py +0 -0
  240. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mediaklikk.py +0 -0
  241. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mediavitrina.py +0 -0
  242. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mitele.py +0 -0
  243. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mixcloud.py +0 -0
  244. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mjunoon.py +0 -0
  245. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/mrtmk.py +0 -0
  246. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/n13tv.py +0 -0
  247. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/nasaplus.py +0 -0
  248. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/nhkworld.py +0 -0
  249. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/nimotv.py +0 -0
  250. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/nrk.py +0 -0
  251. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/olympicchannel.py +0 -0
  252. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/oneplusone.py +0 -0
  253. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/onetv.py +0 -0
  254. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/openrectv.py +0 -0
  255. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/piaulizaportal.py +0 -0
  256. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/picarto.py +0 -0
  257. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/piczel.py +0 -0
  258. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/pixiv.py +0 -0
  259. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/pluto.py +0 -0
  260. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/radiko.py +0 -0
  261. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/raiplay.py +0 -0
  262. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/reuters.py +0 -0
  263. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/rtpa.py +0 -0
  264. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/rtpplay.py +0 -0
  265. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/rtve.py +0 -0
  266. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/rtvs.py +0 -0
  267. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ruv.py +0 -0
  268. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/sbscokr.py +0 -0
  269. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/showroom.py +0 -0
  270. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/soop.py +0 -0
  271. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/sportal.py +0 -0
  272. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/sportschau.py +0 -0
  273. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ssh101.py +0 -0
  274. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/stadium.py +0 -0
  275. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/steam.py +0 -0
  276. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/streann.py +0 -0
  277. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/stv.py +0 -0
  278. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/svtplay.py +0 -0
  279. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/swisstxt.py +0 -0
  280. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/telefe.py +0 -0
  281. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/telemadrid.py +0 -0
  282. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tiktok.py +0 -0
  283. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/trovo.py +0 -0
  284. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/turkuvaz.py +0 -0
  285. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tv360.py +0 -0
  286. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tv3cat.py +0 -0
  287. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tv5monde.py +0 -0
  288. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tv8.py +0 -0
  289. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tv999.py +0 -0
  290. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tvibo.py +0 -0
  291. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tviplayer.py +0 -0
  292. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tvp.py +0 -0
  293. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/tvtoya.py +0 -0
  294. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/twitcasting.py +0 -0
  295. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ustreamtv.py +0 -0
  296. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/ustvnow.py +0 -0
  297. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/vidio.py +0 -0
  298. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/vimeo.py +0 -0
  299. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/vinhlongtv.py +0 -0
  300. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/vk.py +0 -0
  301. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/vkvideo.py +0 -0
  302. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/vtvgo.py +0 -0
  303. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/welt.py +0 -0
  304. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/youtube.py +0 -0
  305. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/yupptv.py +0 -0
  306. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/zattoo.py +0 -0
  307. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/zdf_mediathek.py +0 -0
  308. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/plugins/zeenews.py +0 -0
  309. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/py.typed +0 -0
  310. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/session/__init__.py +0 -0
  311. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/session/http.py +0 -0
  312. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/session/http.pyi +0 -0
  313. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/session/options.py +0 -0
  314. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/session/plugins.py +0 -0
  315. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/session/session.py +0 -0
  316. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/__init__.py +0 -0
  317. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/dash/__init__.py +0 -0
  318. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/dash/dash.py +0 -0
  319. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/dash/manifest.py +0 -0
  320. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/dash/segment.py +0 -0
  321. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/file.py +0 -0
  322. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/filtered.py +0 -0
  323. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/hls/__init__.py +0 -0
  324. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/http.py +0 -0
  325. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/segmented/__init__.py +0 -0
  326. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/segmented/segment.py +0 -0
  327. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/segmented/segmented.py +0 -0
  328. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/stream.py +0 -0
  329. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/stream/wrappers.py +0 -0
  330. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/user_input.py +0 -0
  331. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/__init__.py +0 -0
  332. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/args.py +0 -0
  333. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/cache.py +0 -0
  334. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/crypto.py +0 -0
  335. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/data.py +0 -0
  336. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/formatter.py +0 -0
  337. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/module.py +0 -0
  338. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/named_pipe.py +0 -0
  339. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/parse.py +0 -0
  340. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/path.py +0 -0
  341. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/processoutput.py +0 -0
  342. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/random.py +0 -0
  343. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/socket.py +0 -0
  344. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/times.py +0 -0
  345. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/utils/url.py +0 -0
  346. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/validate/__init__.py +0 -0
  347. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/validate/_exception.py +0 -0
  348. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/validate/_validate.py +0 -0
  349. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/__init__.py +0 -0
  350. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/__init__.py +0 -0
  351. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/client.py +0 -0
  352. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/connection.py +0 -0
  353. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/exceptions.py +0 -0
  354. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/chromium.py +0 -0
  355. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/exceptions.py +0 -0
  356. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink/webbrowser/webbrowser.py +0 -0
  357. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink.egg-info/dependency_links.txt +0 -0
  358. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink.egg-info/entry_points.txt +0 -0
  359. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink.egg-info/top_level.txt +0 -0
  360. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/__init__.py +0 -0
  361. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/__main__.py +0 -0
  362. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/_parser.py +0 -0
  363. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/compat.py +0 -0
  364. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/constants.py +0 -0
  365. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/exceptions.py +0 -0
  366. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/output/__init__.py +0 -0
  367. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/output/abc.py +0 -0
  368. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/output/file.py +0 -0
  369. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/output/http.py +0 -0
  370. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/output/player.py +0 -0
  371. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/py.typed +0 -0
  372. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/show_matchers.py +0 -0
  373. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/streamrunner.py +0 -0
  374. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/utils/__init__.py +0 -0
  375. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/utils/formatter.py +0 -0
  376. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/utils/path.py +0 -0
  377. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/utils/player.py +0 -0
  378. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/utils/progress.py +0 -0
  379. {streamlink-7.1.2 → streamlink-7.2.0}/src/streamlink_cli/utils/versioncheck.py +0 -0
  380. {streamlink-7.1.2 → streamlink-7.2.0}/tests/__init__.py +0 -0
  381. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/__init__.py +0 -0
  382. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/__init__.py +0 -0
  383. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/conftest.py +0 -0
  384. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_can_handle_url.py +0 -0
  385. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_create_output.py +0 -0
  386. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_formatter.py +0 -0
  387. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_output_stream.py +0 -0
  388. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_output_stream_passthrough.py +0 -0
  389. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_player_argv.py +0 -0
  390. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_resolve_stream_name.py +0 -0
  391. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_setup_config_args.py +0 -0
  392. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_show_matchers.py +0 -0
  393. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/main/test_version_check.py +0 -0
  394. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/output/__init__.py +0 -0
  395. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/output/test_file.py +0 -0
  396. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/output/test_player.py +0 -0
  397. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/test_compat.py +0 -0
  398. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/test_streamrunner.py +0 -0
  399. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/utils/__init__.py +0 -0
  400. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/utils/test_formatter.py +0 -0
  401. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/utils/test_path.py +0 -0
  402. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/utils/test_player.py +0 -0
  403. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/utils/test_progress.py +0 -0
  404. {streamlink-7.1.2 → streamlink-7.2.0}/tests/cli/utils/test_versioncheck.py +0 -0
  405. {streamlink-7.1.2 → streamlink-7.2.0}/tests/conftest.py +0 -0
  406. {streamlink-7.1.2 → streamlink-7.2.0}/tests/mixins/__init__.py +0 -0
  407. {streamlink-7.1.2 → streamlink-7.2.0}/tests/mixins/stream_hls.py +0 -0
  408. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugin/__init__.py +0 -0
  409. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugin/override/testplugin.py +0 -0
  410. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugin/testplugin.py +0 -0
  411. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugin/testplugin_invalid.py +0 -0
  412. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugin/testplugin_missing.py +0 -0
  413. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/__init__.py +0 -0
  414. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/conftest.py +0 -0
  415. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_abematv.py +0 -0
  416. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_adultswim.py +0 -0
  417. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_albavision.py +0 -0
  418. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_aloula.py +0 -0
  419. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_app17.py +0 -0
  420. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ard_live.py +0 -0
  421. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ard_mediathek.py +0 -0
  422. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_artetv.py +0 -0
  423. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_atpchallenger.py +0 -0
  424. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_atresplayer.py +0 -0
  425. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_bbciplayer.py +0 -0
  426. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_bfmtv.py +0 -0
  427. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_bigo.py +0 -0
  428. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_bilibili.py +0 -0
  429. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_blazetv.py +0 -0
  430. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_bloomberg.py +0 -0
  431. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_brightcove.py +0 -0
  432. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_btv.py +0 -0
  433. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_cbsnews.py +0 -0
  434. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_cdnbg.py +0 -0
  435. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_chzzk.py +0 -0
  436. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_cinergroup.py +0 -0
  437. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_clubbingtv.py +0 -0
  438. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_cmmedia.py +0 -0
  439. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_cnbce.py +0 -0
  440. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_cnews.py +0 -0
  441. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_dailymotion.py +0 -0
  442. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_dash.py +0 -0
  443. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_delfi.py +0 -0
  444. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_deutschewelle.py +0 -0
  445. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_dlive.py +0 -0
  446. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_dogan.py +0 -0
  447. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_dogus.py +0 -0
  448. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_douyin.py +0 -0
  449. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_drdk.py +0 -0
  450. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_earthcam.py +0 -0
  451. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_filmon.py +0 -0
  452. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_goltelevision.py +0 -0
  453. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_goodgame.py +0 -0
  454. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_googledrive.py +0 -0
  455. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_gulli.py +0 -0
  456. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_hiplayer.py +0 -0
  457. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_hls.py +0 -0
  458. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_http.py +0 -0
  459. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_htv.py +0 -0
  460. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_huajiao.py +0 -0
  461. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_huya.py +0 -0
  462. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_indihometv.py +0 -0
  463. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_invintus.py +0 -0
  464. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_kugou.py +0 -0
  465. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_livestream.py +0 -0
  466. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_lnk.py +0 -0
  467. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_lrt.py +0 -0
  468. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ltv_lsm_lv.py +0 -0
  469. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mangomolo.py +0 -0
  470. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mdstrm.py +0 -0
  471. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mediaklikk.py +0 -0
  472. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mediavitrina.py +0 -0
  473. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mitele.py +0 -0
  474. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mixcloud.py +0 -0
  475. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mjunoon.py +0 -0
  476. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_mrtmk.py +0 -0
  477. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_n13tv.py +0 -0
  478. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_nasaplus.py +0 -0
  479. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_nhkworld.py +0 -0
  480. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_nicolive.py +0 -0
  481. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_nimotv.py +0 -0
  482. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_nrk.py +0 -0
  483. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_okru.py +0 -0
  484. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_olympicchannel.py +0 -0
  485. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_oneplusone.py +0 -0
  486. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_onetv.py +0 -0
  487. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_openrectv.py +0 -0
  488. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_piaulizaportal.py +0 -0
  489. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_picarto.py +0 -0
  490. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_piczel.py +0 -0
  491. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_pixiv.py +0 -0
  492. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_pluto.py +0 -0
  493. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_pluzz.py +0 -0
  494. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_radiko.py +0 -0
  495. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_raiplay.py +0 -0
  496. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_reuters.py +0 -0
  497. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_rtpa.py +0 -0
  498. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_rtpplay.py +0 -0
  499. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_rtve.py +0 -0
  500. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_rtvs.py +0 -0
  501. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ruv.py +0 -0
  502. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_sbscokr.py +0 -0
  503. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_showroom.py +0 -0
  504. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_sportal.py +0 -0
  505. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_sportschau.py +0 -0
  506. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ssh101.py +0 -0
  507. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_stadium.py +0 -0
  508. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_steam.py +0 -0
  509. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_streann.py +0 -0
  510. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_stv.py +0 -0
  511. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_svtplay.py +0 -0
  512. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_swisstxt.py +0 -0
  513. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_telefe.py +0 -0
  514. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_telemadrid.py +0 -0
  515. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tiktok.py +0 -0
  516. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_trovo.py +0 -0
  517. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_turkuvaz.py +0 -0
  518. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tv360.py +0 -0
  519. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tv3cat.py +0 -0
  520. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tv5monde.py +0 -0
  521. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tv8.py +0 -0
  522. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tv999.py +0 -0
  523. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tvibo.py +0 -0
  524. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tviplayer.py +0 -0
  525. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tvp.py +0 -0
  526. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_tvtoya.py +0 -0
  527. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_twitcasting.py +0 -0
  528. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ustreamtv.py +0 -0
  529. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_ustvnow.py +0 -0
  530. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_vidio.py +0 -0
  531. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_vimeo.py +0 -0
  532. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_vk.py +0 -0
  533. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_vkvideo.py +0 -0
  534. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_vtvgo.py +0 -0
  535. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_welt.py +0 -0
  536. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_wwenetwork.py +0 -0
  537. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_youtube.py +0 -0
  538. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_yupptv.py +0 -0
  539. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_zattoo.py +0 -0
  540. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_zdf_mediathek.py +0 -0
  541. {streamlink-7.1.2 → streamlink-7.2.0}/tests/plugins/test_zeenews.py +0 -0
  542. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/__init__.py +0 -0
  543. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/cli/config/custom +0 -0
  544. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/cli/config/primary +0 -0
  545. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/cli/config/primary.testplugin +0 -0
  546. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/cli/config/secondary +0 -0
  547. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/cli/config/secondary.testplugin +0 -0
  548. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_1.mpd +0 -0
  549. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_10.mpd +0 -0
  550. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_11_static.mpd +0 -0
  551. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_2.mpd +0 -0
  552. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_3.mpd +0 -0
  553. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_8.mpd +0 -0
  554. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_9.mpd +0 -0
  555. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_baseurl_nested.mpd +0 -0
  556. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_baseurl_urljoin.mpd +0 -0
  557. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_no_publish_time_timeline_with_start.mpd +0 -0
  558. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_no_publish_time_timeline_without_start.mpd +0 -0
  559. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_no_duration.mpd +0 -0
  560. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p1.mpd +0 -0
  561. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p2.mpd +0 -0
  562. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p3.mpd +0 -0
  563. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p4.mpd +0 -0
  564. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p5.mpd +0 -0
  565. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_timeline_continued_p1.mpd +0 -0
  566. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_timeline_continued_p2.mpd +0 -0
  567. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_no_segment_list_or_template.mpd +0 -0
  568. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_segment_list.mpd +0 -0
  569. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_segments_byterange.mpd +0 -0
  570. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_segments_dynamic_number.mpd +0 -0
  571. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_static_no_publish_time.mpd +0 -0
  572. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_suggested_presentation_delay.mpd +0 -0
  573. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/dash/test_timeline_ids.mpd +0 -0
  574. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/hls/test_date.m3u8 +0 -0
  575. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/hls/test_master.m3u8 +0 -0
  576. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/hls/test_master_twitch_vod.m3u8 +0 -0
  577. {streamlink-7.1.2 → streamlink-7.2.0}/tests/resources/hls/test_multivariant_bandwidth.m3u8 +0 -0
  578. {streamlink-7.1.2 → streamlink-7.2.0}/tests/session/__init__.py +0 -0
  579. {streamlink-7.1.2 → streamlink-7.2.0}/tests/session/test_http.py +0 -0
  580. {streamlink-7.1.2 → streamlink-7.2.0}/tests/session/test_options.py +0 -0
  581. {streamlink-7.1.2 → streamlink-7.2.0}/tests/session/test_plugins.py +0 -0
  582. {streamlink-7.1.2 → streamlink-7.2.0}/tests/session/test_session.py +0 -0
  583. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/__init__.py +0 -0
  584. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/dash/__init__.py +0 -0
  585. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/dash/test_dash.py +0 -0
  586. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/dash/test_manifest.py +0 -0
  587. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/hls/__init__.py +0 -0
  588. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/hls/test_hls_filtered.py +0 -0
  589. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/test_ffmpegmux.py +0 -0
  590. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/test_file.py +0 -0
  591. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/test_segmented.py +0 -0
  592. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/test_stream_json.py +0 -0
  593. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/test_stream_to_url.py +0 -0
  594. {streamlink-7.1.2 → streamlink-7.2.0}/tests/stream/test_stream_wrappers.py +0 -0
  595. {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_api_websocket.py +0 -0
  596. {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_buffers.py +0 -0
  597. {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_cache.py +0 -0
  598. {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_compat.py +0 -0
  599. {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_options.py +0 -0
  600. {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_plugins.py +0 -0
  601. {streamlink-7.1.2 → streamlink-7.2.0}/tests/test_streamlink_api.py +0 -0
  602. {streamlink-7.1.2 → streamlink-7.2.0}/tests/testutils/__init__.py +0 -0
  603. {streamlink-7.1.2 → streamlink-7.2.0}/tests/testutils/handshake.py +0 -0
  604. {streamlink-7.1.2 → streamlink-7.2.0}/tests/testutils/test_handshake.py +0 -0
  605. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/__init__.py +0 -0
  606. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_args.py +0 -0
  607. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_cache.py +0 -0
  608. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_crypto.py +0 -0
  609. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_data.py +0 -0
  610. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_formatter.py +0 -0
  611. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_module.py +0 -0
  612. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_named_pipe.py +0 -0
  613. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_parse.py +0 -0
  614. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_path.py +0 -0
  615. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_processoutput.py +0 -0
  616. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_random.py +0 -0
  617. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_times.py +0 -0
  618. {streamlink-7.1.2 → streamlink-7.2.0}/tests/utils/test_url.py +0 -0
  619. {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/__init__.py +0 -0
  620. {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/cdp/__init__.py +0 -0
  621. {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/cdp/conftest.py +0 -0
  622. {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/cdp/test_connection.py +0 -0
  623. {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/conftest.py +0 -0
  624. {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/test_chromium.py +0 -0
  625. {streamlink-7.1.2 → streamlink-7.2.0}/tests/webbrowser/test_webbrowser.py +0 -0
@@ -1,5 +1,46 @@
1
1
  # Changelog
2
2
 
3
+ ## streamlink 7.2.0 (2025-04-04)
4
+
5
+ - Added: `decompress` extras marker to Streamlink's optional dependencies for installing `brotli` and `zstandard`, which were previously implied optional dependencies via the transitive dependency `urllib3` ([#6451](https://github.com/streamlink/streamlink/pull/6451))
6
+ - Changed: `--retry-streams` to allow a value of `0`, so it can be unset again if set previously ([#6455](https://github.com/streamlink/streamlink/pull/6455))
7
+ - Changed: `--quiet` to suppress all text output including errors, not just log output ([#6461](https://github.com/streamlink/streamlink/pull/6461))
8
+ - Fixed: `--logfile` affecting the console output stream ([#6461](https://github.com/streamlink/streamlink/pull/6461))
9
+ - Fixed: broken user input prompt behavior on missing or non-interactive I/O streams ([#6461](https://github.com/streamlink/streamlink/pull/6461))
10
+ - Fixed: `Plugin` classes not requiring a matching matcher ([#6466](https://github.com/streamlink/streamlink/pull/6466))
11
+ - Fixed: `--hls-audio-select` not being case-insensitive and only comparing input values rather than resolved language codes ([#6469](https://github.com/streamlink/streamlink/pull/6469), [#6479](https://github.com/streamlink/streamlink/pull/6479))
12
+ - Updated: Chrome Devtool Protocol interfaces, to match recent Chromium versions ([#6481](https://github.com/streamlink/streamlink/pull/6481))
13
+ - Updated plugins:
14
+ - euronews: rewritten and fixed plugin ([#6452](https://github.com/streamlink/streamlink/pull/6452))
15
+ - kick: refactored plugin, fixed clip matcher and 403 API responses ([#6491](https://github.com/streamlink/streamlink/pull/6491))
16
+ - nicolive: fixed plugin not loading cookies from WebSocket messages ([#6441](https://github.com/streamlink/streamlink/pull/6441))
17
+ - nicolive: made the plugin always filter out blank HLS segments ([#6476](https://github.com/streamlink/streamlink/pull/6476))
18
+ - nowtvtr: removed plugin ([#6488](https://github.com/streamlink/streamlink/pull/6488))
19
+ - okru: canonicalize mobile URLs ([#6444](https://github.com/streamlink/streamlink/pull/6444))
20
+ - tf1: fixed stream matcher ([#6439](https://github.com/streamlink/streamlink/pull/6439))
21
+
22
+ [Full changelog](https://github.com/streamlink/streamlink/compare/7.1.3...7.2.0)
23
+
24
+
25
+ ## streamlink 7.1.3 (2025-02-14)
26
+
27
+ - Fixed: `validate.contains()` to allow all kinds of `Container` object inputs ([#6421](https://github.com/streamlink/streamlink/pull/6421))
28
+ - Updated plugins:
29
+ - ceskatelevize: rewritten and fixed plugin ([#6397](https://github.com/streamlink/streamlink/pull/6397))
30
+ - nos: fixed validation schema, updated matcher ([#6420](https://github.com/streamlink/streamlink/pull/6420))
31
+ - pandalive: fixed user\_id retieval, updated matcher ([#6433](https://github.com/streamlink/streamlink/pull/6433))
32
+ - pluzz: fixed video ID schemas ([#6428](https://github.com/streamlink/streamlink/pull/6428))
33
+ - streamable: removed plugin ([#6435](https://github.com/streamlink/streamlink/pull/6435))
34
+ - tv4play: removed plugin ([#6399](https://github.com/streamlink/streamlink/pull/6399))
35
+ - twitch: refactored TwitchAPI class and access token retrieval ([#6403](https://github.com/streamlink/streamlink/pull/6403))
36
+ - wwenetwork: rewritten and fixed plugin ([#6404](https://github.com/streamlink/streamlink/pull/6404))
37
+ - Docs: replaced Windows and Linux AppImage nightly builds with preview builds triggered on each commit to `master` ([#6425](https://github.com/streamlink/streamlink/pull/6425))
38
+ - Docs: added optional/secondary Linux AppImage builds with FFmpeg being bundled ([#6415](https://github.com/streamlink/streamlink/pull/6415))
39
+ - Tests: bumped `freezegun` requirement to `>=1.5.0` ([#6406](https://github.com/streamlink/streamlink/pull/6406))
40
+
41
+ [Full changelog](https://github.com/streamlink/streamlink/compare/7.1.2...7.1.3)
42
+
43
+
3
44
  ## streamlink 7.1.2 (2025-01-08)
4
45
 
5
46
  - Updated plugins:
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: streamlink
3
- Version: 7.1.2
3
+ Version: 7.2.0
4
4
  Summary: Streamlink is a command-line utility that extracts streams from various services and pipes them into a video player of choice.
5
5
  Author: Streamlink
6
6
  Author-email: streamlink@protonmail.com
@@ -44,6 +44,9 @@ Requires-Dist: trio<1,>=0.22.0; python_version < "3.13"
44
44
  Requires-Dist: trio-websocket<1,>=0.9.0
45
45
  Requires-Dist: urllib3<3,>=1.26.0
46
46
  Requires-Dist: websocket-client<2,>=1.2.1
47
+ Provides-Extra: decompress
48
+ Requires-Dist: urllib3[brotli,zstd]<3,>=1.26.0; extra == "decompress"
49
+ Dynamic: license-file
47
50
 
48
51
  <h1 align="center"><a href="https://streamlink.github.io/">Streamlink<br><img height="150" alt="Streamlink" src="https://raw.githubusercontent.com/streamlink/streamlink/master/icon.svg"></a></h1>
49
52
 
@@ -82,7 +82,13 @@ _shtab_streamlink_cli_options=(
82
82
  See the Python standard library\'s \`logging.Formatter\` docs for more information about the logging format
83
83
  and the available \`LogRecord\` attributes. Streamlink\'s formatter uses the curly brace style.
84
84
 
85
- The default format depends on the chosen log level (may include the \`asctime\` attribute).
85
+ The default format depends on the chosen log level.
86
+
87
+ For verbose levels (\`trace\` and \`all\`)\:
88
+
89
+ Default is \"\[\{asctime\}\]\[\{name\}\]\[\{levelname\}\] \{message\}\".
90
+
91
+ Otherwise\:
86
92
 
87
93
  Default is \"\[\{name\}\]\[\{levelname\}\] \{message\}\".
88
94
  ]:logformat:"
@@ -91,7 +97,13 @@ _shtab_streamlink_cli_options=(
91
97
 
92
98
  This formats the \`LogRecord\`\'s \`asctime\` attribute via \`strftime()\`.
93
99
 
94
- The default date format depends on the chosen log level (may include fractions).
100
+ The default date format depends on the chosen log level.
101
+
102
+ For verbose levels (\`trace\` and \`all\`)\:
103
+
104
+ Default is \"\%H\:\%M\:\%S.\%f\".
105
+
106
+ Otherwise\:
95
107
 
96
108
  Default is \"\%H\:\%M\:\%S\".
97
109
  ]:logdateformat:"
@@ -116,9 +128,7 @@ _shtab_streamlink_cli_options=(
116
128
  \$\{XDG_STATE_HOME\:-\$\{HOME\}\/.local\/state\}\/streamlink\/logs
117
129
  ]:logfile:"
118
130
  {-Q,--quiet}"[
119
- Hide all log output.
120
-
121
- Alias for --loglevel\=none.
131
+ Suppress all console and log output, and also disable user prompts.
122
132
  ]"
123
133
  {-j,--json}"[
124
134
  Output JSON representations instead of the normal text output.
@@ -356,16 +366,19 @@ _shtab_streamlink_cli_options=(
356
366
  ]"
357
367
  "--retry-streams[
358
368
  Retry fetching the list of available streams until streams are found
359
- while waiting \`DELAY\` second(s) between each attempt. If unset, only one
360
- attempt will be made to fetch the list of streams available.
369
+ while waiting \`DELAY\` second(s) between each attempt.
370
+
371
+ The number of retry attempts can be capped with --retry-max.
372
+ A default value of \`\`1\`\` is implied for non-zero values of --retry-max.
361
373
 
362
- The number of fetch retry attempts can be capped with --retry-max.
374
+ If both --retry-streams and --retry-max are set to \`0\`, then only one attempt will be made
375
+ to fetch the list of available streams. This is the default behavior.
363
376
  ]:retry_streams:"
364
377
  "--retry-max[
365
- When using --retry-streams, stop retrying the fetch after \`COUNT\` retry
366
- attempt(s). Fetch will retry infinitely if \`COUNT\` is zero or unset.
378
+ Stop fetching the list of available streams after \`COUNT\` retry attempt(s).
367
379
 
368
- If --retry-max is set without setting --retry-streams, the delay between retries will default to 1 second.
380
+ A value of \`0\` makes Streamlink fetch streams indefinitely if --retry-streams is set to a non-zero value.
381
+ If --retry-streams is unset, then the default delay between fetching available streams is 1 second.
369
382
  ]:retry_max:"
370
383
  "--retry-open[
371
384
  After a successful fetch, try \`ATTEMPTS\` time(s) to open the stream until giving up.
@@ -737,7 +750,7 @@ _shtab_streamlink_cli_options=(
737
750
  "--steam-password[A Steam account password to use with --steam-email.]:steam_password:"
738
751
  "--streann-url[Source URL where the iframe is located, only required for direct URLs of ott.streann.com]:streann_url:"
739
752
  "--tf1-email[The email address used to register with tf1.fr.]:tf1_email:"
740
- "--tf1-password[A tf1.fr account password to use with --tf1-username.]:tf1_password:"
753
+ "--tf1-password[A tf1.fr account password to use with --tf1-email.]:tf1_password:"
741
754
  "--tf1-purge-credentials[Purge cached tf1.fr credentials to initiate a new session and reauthenticate.]"
742
755
  "--twitcasting-password[Password for private Twitcasting streams.]:twitcasting_password:"
743
756
  "--twitch-disable-ads[
@@ -7,17 +7,17 @@ versioningit >=2.0.0,<4 # required for being able to run editable installs
7
7
  pytest >=8.0.0
8
8
  pytest-trio
9
9
  requests-mock
10
- freezegun >=1.0.0
10
+ freezegun >=1.5.0
11
11
 
12
12
  # code-coverage
13
13
  pytest-cov
14
14
  coverage[toml]
15
15
 
16
16
  # code-linting / code-formatting
17
- ruff ==0.8.6
17
+ ruff ==0.11.2
18
18
 
19
19
  # typing
20
- mypy[faster-cache] ==1.14.1
20
+ mypy[faster-cache] ==1.15.0
21
21
  typing-extensions >=4.0.0
22
22
  lxml-stubs
23
23
  trio-typing
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
27
27
  .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
28
28
  .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
29
29
  ..
30
- .TH "STREAMLINK" "1" "Jan 08, 2025" "7.1.2" "Streamlink"
30
+ .TH "STREAMLINK" "1" "Apr 04, 2025" "7.2.0" "Streamlink"
31
31
  .SH NAME
32
32
  streamlink \- extracts streams from various services and pipes them into a video player of choice
33
33
  .SH SYNOPSIS
@@ -195,7 +195,13 @@ Set a custom logging format.
195
195
  See the Python standard library\(aqs \fBlogging.Formatter\fP docs for more information about the logging format
196
196
  and the available \fBLogRecord\fP attributes. Streamlink\(aqs formatter uses the curly brace style.
197
197
  .sp
198
- The default format depends on the chosen log level (may include the \fBasctime\fP attribute).
198
+ The default format depends on the chosen log level.
199
+ .sp
200
+ For verbose levels (\fBtrace\fP and \fBall\fP):
201
+ .sp
202
+ Default is: \fB\(dq[{asctime}][{name}][{levelname}] {message}\(dq\fP\&.
203
+ .sp
204
+ Otherwise:
199
205
  .sp
200
206
  Default is: \fB\(dq[{name}][{levelname}] {message}\(dq\fP\&.
201
207
  .UNINDENT
@@ -206,7 +212,13 @@ Set a custom logging date format.
206
212
  .sp
207
213
  This formats the \fBLogRecord\fP\(aqs \fBasctime\fP attribute via \fBstrftime()\fP\&.
208
214
  .sp
209
- The default date format depends on the chosen log level (may include fractions).
215
+ The default date format depends on the chosen log level.
216
+ .sp
217
+ For verbose levels (\fBtrace\fP and \fBall\fP):
218
+ .sp
219
+ Default is: \fB\(dq%H:%M:%S.%f\(dq\fP\&.
220
+ .sp
221
+ Otherwise:
210
222
  .sp
211
223
  Default is: \fB\(dq%H:%M:%S\(dq\fP\&.
212
224
  .UNINDENT
@@ -255,9 +267,7 @@ ${XDG_STATE_HOME:\-${HOME}/.local/state}/streamlink/logs
255
267
  .B \-Q
256
268
  .TP
257
269
  .B \-\-quiet
258
- Hide all log output.
259
- .sp
260
- Alias for \fI\%\-\-loglevel=none\fP\&.
270
+ Suppress all console and log output, and also disable user prompts.
261
271
  .UNINDENT
262
272
  .INDENT 0.0
263
273
  .TP
@@ -627,18 +637,21 @@ If possible, translate the resolved stream to a URL and print it.
627
637
  .TP
628
638
  .B \-\-retry\-streams DELAY
629
639
  Retry fetching the list of available streams until streams are found
630
- while waiting \fBDELAY\fP second(s) between each attempt. If unset, only one
631
- attempt will be made to fetch the list of streams available.
640
+ while waiting \fBDELAY\fP second(s) between each attempt.
641
+ .sp
642
+ The number of retry attempts can be capped with \fI\%\-\-retry\-max\fP\&.
643
+ A default value of \fB1\fP is implied for non\-zero values of \fI\%\-\-retry\-max\fP\&.
632
644
  .sp
633
- The number of fetch retry attempts can be capped with \fI\%\-\-retry\-max\fP\&.
645
+ If both \fI\%\-\-retry\-streams\fP and \fI\%\-\-retry\-max\fP are set to \fB0\fP, then only one attempt will be made
646
+ to fetch the list of available streams. This is the default behavior.
634
647
  .UNINDENT
635
648
  .INDENT 0.0
636
649
  .TP
637
650
  .B \-\-retry\-max COUNT
638
- When using \fI\%\-\-retry\-streams\fP, stop retrying the fetch after \fBCOUNT\fP retry
639
- attempt(s). Fetch will retry infinitely if \fBCOUNT\fP is zero or unset.
651
+ Stop fetching the list of available streams after \fBCOUNT\fP retry attempt(s).
640
652
  .sp
641
- If \fI\%\-\-retry\-max\fP is set without setting \fI\%\-\-retry\-streams\fP, the delay between retries will default to 1 second.
653
+ A value of \fB0\fP makes Streamlink fetch streams indefinitely if \fI\%\-\-retry\-streams\fP is set to a non\-zero value.
654
+ If \fI\%\-\-retry\-streams\fP is unset, then the default delay between fetching available streams is 1 second.
642
655
  .UNINDENT
643
656
  .INDENT 0.0
644
657
  .TP
@@ -1281,7 +1294,7 @@ The email address used to register with tf1.fr.
1281
1294
  .INDENT 0.0
1282
1295
  .TP
1283
1296
  .B \-\-tf1\-password PASSWORD
1284
- A tf1.fr account password to use with \-\-tf1\-username.
1297
+ A tf1.fr account password to use with \fI\%\-\-tf1\-email\fP\&.
1285
1298
  .UNINDENT
1286
1299
  .INDENT 0.0
1287
1300
  .TP
@@ -304,7 +304,6 @@ table.table-custom-layout.table-custom-layout-dependencies tbody td {
304
304
 
305
305
  .grid-with-icons .sd-card-body .fas {
306
306
  padding-right: 0.1em;
307
- font-size: 1.75em;
308
307
  vertical-align: middle;
309
308
  }
310
309
 
@@ -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
- You can then set options like this:
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
- and extract streams like this:
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
- See :py:meth:`Streamlink.set_option() <streamlink.session.Streamlink.set_option>` to see which options are available.
133
+ Available plugin options are defined using the :py:meth:`@pluginargument <streamlink.plugin.pluginargument>`
134
+ Plugin class decorator in each plugin's module.
@@ -1,5 +1,46 @@
1
1
  # Changelog
2
2
 
3
+ ## streamlink 7.2.0 (2025-04-04)
4
+
5
+ - Added: `decompress` extras marker to Streamlink's optional dependencies for installing `brotli` and `zstandard`, which were previously implied optional dependencies via the transitive dependency `urllib3` ([#6451](https://github.com/streamlink/streamlink/pull/6451))
6
+ - Changed: `--retry-streams` to allow a value of `0`, so it can be unset again if set previously ([#6455](https://github.com/streamlink/streamlink/pull/6455))
7
+ - Changed: `--quiet` to suppress all text output including errors, not just log output ([#6461](https://github.com/streamlink/streamlink/pull/6461))
8
+ - Fixed: `--logfile` affecting the console output stream ([#6461](https://github.com/streamlink/streamlink/pull/6461))
9
+ - Fixed: broken user input prompt behavior on missing or non-interactive I/O streams ([#6461](https://github.com/streamlink/streamlink/pull/6461))
10
+ - Fixed: `Plugin` classes not requiring a matching matcher ([#6466](https://github.com/streamlink/streamlink/pull/6466))
11
+ - Fixed: `--hls-audio-select` not being case-insensitive and only comparing input values rather than resolved language codes ([#6469](https://github.com/streamlink/streamlink/pull/6469), [#6479](https://github.com/streamlink/streamlink/pull/6479))
12
+ - Updated: Chrome Devtool Protocol interfaces, to match recent Chromium versions ([#6481](https://github.com/streamlink/streamlink/pull/6481))
13
+ - Updated plugins:
14
+ - euronews: rewritten and fixed plugin ([#6452](https://github.com/streamlink/streamlink/pull/6452))
15
+ - kick: refactored plugin, fixed clip matcher and 403 API responses ([#6491](https://github.com/streamlink/streamlink/pull/6491))
16
+ - nicolive: fixed plugin not loading cookies from WebSocket messages ([#6441](https://github.com/streamlink/streamlink/pull/6441))
17
+ - nicolive: made the plugin always filter out blank HLS segments ([#6476](https://github.com/streamlink/streamlink/pull/6476))
18
+ - nowtvtr: removed plugin ([#6488](https://github.com/streamlink/streamlink/pull/6488))
19
+ - okru: canonicalize mobile URLs ([#6444](https://github.com/streamlink/streamlink/pull/6444))
20
+ - tf1: fixed stream matcher ([#6439](https://github.com/streamlink/streamlink/pull/6439))
21
+
22
+ [Full changelog](https://github.com/streamlink/streamlink/compare/7.1.3...7.2.0)
23
+
24
+
25
+ ## streamlink 7.1.3 (2025-02-14)
26
+
27
+ - Fixed: `validate.contains()` to allow all kinds of `Container` object inputs ([#6421](https://github.com/streamlink/streamlink/pull/6421))
28
+ - Updated plugins:
29
+ - ceskatelevize: rewritten and fixed plugin ([#6397](https://github.com/streamlink/streamlink/pull/6397))
30
+ - nos: fixed validation schema, updated matcher ([#6420](https://github.com/streamlink/streamlink/pull/6420))
31
+ - pandalive: fixed user\_id retieval, updated matcher ([#6433](https://github.com/streamlink/streamlink/pull/6433))
32
+ - pluzz: fixed video ID schemas ([#6428](https://github.com/streamlink/streamlink/pull/6428))
33
+ - streamable: removed plugin ([#6435](https://github.com/streamlink/streamlink/pull/6435))
34
+ - tv4play: removed plugin ([#6399](https://github.com/streamlink/streamlink/pull/6399))
35
+ - twitch: refactored TwitchAPI class and access token retrieval ([#6403](https://github.com/streamlink/streamlink/pull/6403))
36
+ - wwenetwork: rewritten and fixed plugin ([#6404](https://github.com/streamlink/streamlink/pull/6404))
37
+ - Docs: replaced Windows and Linux AppImage nightly builds with preview builds triggered on each commit to `master` ([#6425](https://github.com/streamlink/streamlink/pull/6425))
38
+ - Docs: added optional/secondary Linux AppImage builds with FFmpeg being bundled ([#6415](https://github.com/streamlink/streamlink/pull/6415))
39
+ - Tests: bumped `freezegun` requirement to `>=1.5.0` ([#6406](https://github.com/streamlink/streamlink/pull/6406))
40
+
41
+ [Full changelog](https://github.com/streamlink/streamlink/compare/7.1.2...7.1.3)
42
+
43
+
3
44
  ## streamlink 7.1.2 (2025-01-08)
4
45
 
5
46
  - Updated plugins:
@@ -63,7 +63,7 @@ Windows
63
63
  - See the `Windows binaries`_ section below
64
64
  * - :octicon:`verified` Portable
65
65
  - See the `Windows binaries`_ section below
66
- * - :octicon:`verified` Nightly builds
66
+ * - :octicon:`verified` Preview builds
67
67
  - See the `Windows binaries`_ section below
68
68
  * - :octicon:`verified` Python pip
69
69
  - See the `PyPI package and source code`_ section below
@@ -132,7 +132,7 @@ Linux and BSD
132
132
  - Installing
133
133
  * - :octicon:`verified` AppImage
134
134
  - See the `Linux AppImages`_ section below
135
- * - :octicon:`verified` AppImage nightly builds
135
+ * - :octicon:`verified` AppImage preview builds
136
136
  - See the `Linux AppImages`_ section below
137
137
  * - :octicon:`verified` Python pip
138
138
  - See the `PyPI package and source code`_ section below
@@ -302,9 +302,6 @@ PyPI package and source code
302
302
  If a package is not available on your platform, or if it's out of date,
303
303
  then Streamlink can be installed via `pip`_, the Python package manager.
304
304
 
305
- Before running :command:`pip`, make sure that it's the Python 3 version of `pip`_ (to check, run :command:`pip --version`).
306
- On some systems, this isn't the case by default and an alternative, like :command:`pip3` for example, needs to be run instead.
307
-
308
305
  .. warning::
309
306
 
310
307
  On Linux, when not using a `virtual environment`_, it is recommended to **install custom python packages like this
@@ -504,6 +501,14 @@ Streamlink defines a `build system <pyproject.toml_>`__ according to `PEP-517`_
504
501
 
505
502
  - DASH streams with video and audio content always have to get remuxed.
506
503
  - HLS streams optionally need to get remuxed depending on the stream selection.
504
+ * - optional
505
+ - | `brotli`_
506
+ | ``decompress`` extras marker
507
+ - Used for decompressing HTTP responses
508
+ * - optional
509
+ - | `zstandard`_
510
+ | ``decompress`` extras marker
511
+ - Used for decompressing HTTP responses
507
512
 
508
513
  .. _pyproject.toml: https://github.com/streamlink/streamlink/blob/master/pyproject.toml
509
514
  .. _PEP-517: https://peps.python.org/pep-0517/
@@ -527,6 +532,9 @@ Streamlink defines a `build system <pyproject.toml_>`__ according to `PEP-517`_
527
532
  .. _urllib3: https://urllib3.readthedocs.io/en/stable/
528
533
  .. _websocket-client: https://pypi.org/project/websocket-client/
529
534
 
535
+ .. _brotli: https://pypi.org/project/Brotli/
536
+ .. _zstandard: https://pypi.org/project/zstandard/
537
+
530
538
  .. _FFmpeg: https://www.ffmpeg.org/
531
539
  .. _muxing: https://en.wikipedia.org/wiki/Multiplexing#Video_processing
532
540
 
@@ -546,21 +554,21 @@ Windows binaries
546
554
 
547
555
  **Windows stable releases**
548
556
  ^^^
549
- :fas:`download` GitHub releases page
557
+ :fas:`download;fa-2x` GitHub releases page
550
558
 
551
- The most recent Streamlink release
559
+ :fas:`check-circle;sd-text-success fa-lg` The most recent Streamlink release
552
560
 
553
561
  .. grid-item-card::
554
562
  :padding: 3
555
- :link: https://github.com/streamlink/windows-builds/actions?query=event%3Aschedule+is%3Asuccess+branch%3Amaster
556
- :link-alt: Windows nightly builds
563
+ :link: https://github.com/streamlink/windows-builds/actions/workflows/preview-build.yml
564
+ :link-alt: Windows preview builds
557
565
  :text-align: center
558
566
 
559
- **Windows nightly builds**
567
+ **Windows preview builds**
560
568
  ^^^
561
- :fas:`download` GitHub actions build artifacts
569
+ :fas:`download;fa-2x` GitHub actions build artifacts
562
570
 
563
- Built once each day at midnight UTC |br| :sub:`GitHub account required`
571
+ :fab:`github;fa-lg` Account required
564
572
 
565
573
  **Flavors**
566
574
 
@@ -657,21 +665,21 @@ Linux AppImages
657
665
 
658
666
  **AppImage stable releases**
659
667
  ^^^
660
- :fas:`download` GitHub releases page
668
+ :fas:`download;fa-2x` GitHub releases page
661
669
 
662
- The most recent Streamlink release
670
+ :fas:`check-circle;sd-text-success fa-lg` The most recent Streamlink release
663
671
 
664
672
  .. grid-item-card::
665
673
  :padding: 3
666
- :link: https://github.com/streamlink/streamlink-appimage/actions?query=event%3Aschedule+is%3Asuccess+branch%3Amaster
667
- :link-alt: AppImage nightly builds
674
+ :link: https://github.com/streamlink/streamlink-appimage/actions/workflows/preview-build.yml
675
+ :link-alt: AppImage preview builds
668
676
  :text-align: center
669
677
 
670
- **AppImage nightly builds**
678
+ **AppImage preview builds**
671
679
  ^^^
672
- :fas:`download` GitHub actions build artifacts
680
+ :fas:`download;fa-2x` GitHub actions build artifacts
673
681
 
674
- Built once each day at midnight UTC |br| :sub:`GitHub account required`
682
+ :fab:`github;fa-lg` Account required
675
683
 
676
684
  **Architectures**
677
685
 
@@ -692,7 +700,7 @@ Linux AppImages
692
700
 
693
701
  **Contents**
694
702
 
695
- .. grid:: 2
703
+ .. grid:: 3
696
704
  :padding: 0
697
705
  :class-container: grid-with-images
698
706
 
@@ -718,6 +726,17 @@ Linux AppImages
718
726
 
719
727
  Streamlink |br| :sub:`and dependencies`
720
728
 
729
+ .. grid-item-card::
730
+ :padding: 3
731
+ :link: https://github.com/streamlink/FFmpeg-Builds
732
+ :link-alt: FFmpeg, required for muxing streams
733
+ :text-align: center
734
+
735
+ .. image:: _static/icon-ffmpeg.svg
736
+ :alt: FFmpeg
737
+
738
+ FFmpeg |br| :sub:`for muxing streams` |br| :sub:`(optional)`
739
+
721
740
  **How-To**
722
741
 
723
742
  1. Verify that the system is running on at least
@@ -70,6 +70,13 @@ dependencies = [
70
70
  "websocket-client >=1.2.1,<2",
71
71
  ]
72
72
 
73
+ [project.optional-dependencies]
74
+ decompress = [
75
+ # don't define brotli or zstandard library versions here
76
+ # and instead rely on urllib3's version requirements
77
+ "urllib3[brotli,zstd] >=1.26.0,<3"
78
+ ]
79
+
73
80
  [project.urls]
74
81
  Homepage = "https://github.com/streamlink/streamlink"
75
82
  Documentation = "https://streamlink.github.io/"
@@ -166,7 +173,6 @@ src = [
166
173
  "src",
167
174
  "tests",
168
175
  ]
169
- target-version = "py39"
170
176
  fix = false
171
177
  line-length = 128
172
178
  output-format = "full"
@@ -233,7 +239,7 @@ select = [
233
239
  ]
234
240
  ignore = [
235
241
  "A003", # builtin-attribute-shadowing
236
- "A005", # builtin-module-shadowing
242
+ "A005", # stdlib-module-shadowing
237
243
  "ASYNC109", # async-function-with-timeout
238
244
  "C408", # unnecessary-collection-call
239
245
  "ISC003", # explicit-string-concatenation
@@ -97,5 +97,5 @@ if __name__ == "__main__":
97
97
  cmdclass=get_cmdclasses(cmdclass),
98
98
  entry_points=entry_points,
99
99
  data_files=data_files,
100
- version="7.1.2",
100
+ version="7.2.0",
101
101
  )
@@ -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
- else:
221
+ elif stream is not None:
225
222
  handler = StreamHandler(stream)
226
- # logging.StreamHandler internally falls back to sys.stderr if stream is None
227
- # sys.stderr however can also be None if fd2 doesn't exist, so use a devnull FileHandler in this case instead
228
- if not handler.stream:
229
- handler = logging.FileHandler(devnull)
230
-
231
- formatter = StringFormatter(
232
- fmt=format,
233
- datefmt=datefmt,
234
- style=style,
235
- remove_base=remove_base or REMOVE_BASE,
236
- )
237
- handler.setFormatter(formatter)
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