streamlink 7.1.3__tar.gz → 7.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (618) hide show
  1. {streamlink-7.1.3 → streamlink-7.2.0}/CHANGELOG.md +22 -0
  2. {streamlink-7.1.3 → streamlink-7.2.0}/PKG-INFO +5 -2
  3. {streamlink-7.1.3 → streamlink-7.2.0}/completions/zsh/_streamlink +10 -9
  4. {streamlink-7.1.3 → streamlink-7.2.0}/dev-requirements.txt +1 -1
  5. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_build/man/streamlink.1 +11 -10
  6. {streamlink-7.1.3 → streamlink-7.2.0}/docs/api_guide/quickstart.rst +41 -5
  7. {streamlink-7.1.3 → streamlink-7.2.0}/docs/changelog.md +22 -0
  8. {streamlink-7.1.3 → streamlink-7.2.0}/docs/install.rst +11 -0
  9. {streamlink-7.1.3 → streamlink-7.2.0}/pyproject.toml +7 -1
  10. {streamlink-7.1.3 → streamlink-7.2.0}/setup.py +1 -1
  11. streamlink-7.2.0/src/streamlink/_version.py +1 -0
  12. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/logger.py +15 -20
  13. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/plugin.py +2 -0
  14. streamlink-7.2.0/src/streamlink/plugins/euronews.py +130 -0
  15. streamlink-7.2.0/src/streamlink/plugins/kick.py +200 -0
  16. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/nicolive.py +68 -19
  17. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/okru.py +12 -29
  18. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tf1.py +2 -2
  19. streamlink-7.2.0/src/streamlink/session/http_useragents.py +16 -0
  20. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/hls/hls.py +33 -7
  21. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/hls/m3u8.py +4 -1
  22. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/hls/segment.py +29 -2
  23. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/l10n.py +15 -3
  24. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/__init__.py +1 -1
  25. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/browser.py +55 -6
  26. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/debugger.py +60 -1
  27. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/dom.py +12 -8
  28. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/emulation.py +117 -2
  29. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/fetch.py +3 -1
  30. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/input_.py +1 -1
  31. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/inspector.py +1 -1
  32. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/io.py +1 -1
  33. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/network.py +193 -2
  34. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/page.py +91 -4
  35. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/runtime.py +8 -4
  36. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/security.py +1 -1
  37. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/target.py +39 -6
  38. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/devtools/util.py +1 -1
  39. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink.egg-info/PKG-INFO +5 -2
  40. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink.egg-info/SOURCES.txt +2 -3
  41. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink.egg-info/requires.txt +3 -0
  42. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/argparser.py +11 -10
  43. streamlink-7.2.0/src/streamlink_cli/console.py +134 -0
  44. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/main.py +37 -38
  45. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_check_file_output.py +33 -48
  46. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_handle_url.py +208 -22
  47. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_logging.py +139 -18
  48. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/test_argparser.py +9 -26
  49. streamlink-7.2.0/tests/cli/test_console.py +337 -0
  50. streamlink-7.2.0/tests/plugins/test_euronews.py +39 -0
  51. streamlink-7.2.0/tests/plugins/test_kick.py +33 -0
  52. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_soop.py +1 -1
  53. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tf1.py +2 -2
  54. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_vinhlongtv.py +1 -1
  55. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/hls/test_1.m3u8 +2 -2
  56. streamlink-7.1.3/tests/resources/hls/test_2.m3u8 → streamlink-7.2.0/tests/resources/hls/test_media_language.m3u8 +4 -3
  57. streamlink-7.2.0/tests/resources/hls/test_media_language_special.m3u8 +10 -0
  58. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/hls/test_hls.py +96 -6
  59. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/hls/test_m3u8.py +2 -2
  60. {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_logger.py +11 -32
  61. {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_plugin.py +13 -0
  62. streamlink-7.2.0/tests/test_plugin_userinput.py +74 -0
  63. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_l10n.py +11 -0
  64. {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/cdp/test_client.py +8 -8
  65. streamlink-7.1.3/src/streamlink/_version.py +0 -1
  66. streamlink-7.1.3/src/streamlink/plugins/euronews.py +0 -116
  67. streamlink-7.1.3/src/streamlink/plugins/kick.py +0 -205
  68. streamlink-7.1.3/src/streamlink/plugins/nowtvtr.py +0 -30
  69. streamlink-7.1.3/src/streamlink/session/http_useragents.py +0 -16
  70. streamlink-7.1.3/src/streamlink_cli/console.py +0 -92
  71. streamlink-7.1.3/tests/cli/test_console.py +0 -181
  72. streamlink-7.1.3/tests/plugins/test_euronews.py +0 -24
  73. streamlink-7.1.3/tests/plugins/test_kick.py +0 -13
  74. streamlink-7.1.3/tests/plugins/test_nowtvtr.py +0 -14
  75. streamlink-7.1.3/tests/test_plugin_userinput.py +0 -58
  76. {streamlink-7.1.3 → streamlink-7.2.0}/AUTHORS +0 -0
  77. {streamlink-7.1.3 → streamlink-7.2.0}/LICENSE +0 -0
  78. {streamlink-7.1.3 → streamlink-7.2.0}/MANIFEST.in +0 -0
  79. {streamlink-7.1.3 → streamlink-7.2.0}/README.md +0 -0
  80. {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/__init__.py +0 -0
  81. {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/commands.py +0 -0
  82. {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/onbuild.py +0 -0
  83. {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/plugins_json.py +0 -0
  84. {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/test_build_backend.py +0 -0
  85. {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/test_onbuild.py +0 -0
  86. {streamlink-7.1.3 → streamlink-7.2.0}/build_backend/test_plugins_json.py +0 -0
  87. {streamlink-7.1.3 → streamlink-7.2.0}/completions/bash/streamlink +0 -0
  88. {streamlink-7.1.3 → streamlink-7.2.0}/docs/Makefile +0 -0
  89. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_man.rst +0 -0
  90. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/apple-touch-icon.png +0 -0
  91. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/favicon-16x16.png +0 -0
  92. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/favicon-32x32.png +0 -0
  93. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/favicon.ico +0 -0
  94. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/icon-ffmpeg.svg +0 -0
  95. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/icon-python.svg +0 -0
  96. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/icon.svg +0 -0
  97. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/opengraph-image.png +0 -0
  98. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/site.webmanifest +0 -0
  99. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_static/styles/custom.css +0 -0
  100. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_templates/base.html +0 -0
  101. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_templates/page.html +0 -0
  102. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_templates/sidebar/brand.html +0 -0
  103. {streamlink-7.1.3 → streamlink-7.2.0}/docs/_templates/sidebar/github-buttons.html +0 -0
  104. {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/cache.rst +0 -0
  105. {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/exceptions.rst +0 -0
  106. {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/options.rst +0 -0
  107. {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/plugin.rst +0 -0
  108. {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/session.rst +0 -0
  109. {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/stream.rst +0 -0
  110. {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/streamlink.rst +0 -0
  111. {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/validate.rst +0 -0
  112. {streamlink-7.1.3 → streamlink-7.2.0}/docs/api/webbrowser.rst +0 -0
  113. {streamlink-7.1.3 → streamlink-7.2.0}/docs/api.rst +0 -0
  114. {streamlink-7.1.3 → streamlink-7.2.0}/docs/api_guide/validate.rst +0 -0
  115. {streamlink-7.1.3 → streamlink-7.2.0}/docs/api_guide.rst +0 -0
  116. {streamlink-7.1.3 → streamlink-7.2.0}/docs/applications.rst +0 -0
  117. {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/config.rst +0 -0
  118. {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/metadata.rst +0 -0
  119. {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/plugin-sideloading.rst +0 -0
  120. {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/plugins/twitch.rst +0 -0
  121. {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/plugins.rst +0 -0
  122. {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/protocols.rst +0 -0
  123. {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/proxy.rst +0 -0
  124. {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli/tutorial.rst +0 -0
  125. {streamlink-7.1.3 → streamlink-7.2.0}/docs/cli.rst +0 -0
  126. {streamlink-7.1.3 → streamlink-7.2.0}/docs/conf.py +0 -0
  127. {streamlink-7.1.3 → streamlink-7.2.0}/docs/deprecations.rst +0 -0
  128. {streamlink-7.1.3 → streamlink-7.2.0}/docs/developing.rst +0 -0
  129. {streamlink-7.1.3 → streamlink-7.2.0}/docs/docutils.conf +0 -0
  130. {streamlink-7.1.3 → streamlink-7.2.0}/docs/ext_argparse.py +0 -0
  131. {streamlink-7.1.3 → streamlink-7.2.0}/docs/ext_github.py +0 -0
  132. {streamlink-7.1.3 → streamlink-7.2.0}/docs/ext_html_template_vars.py +0 -0
  133. {streamlink-7.1.3 → streamlink-7.2.0}/docs/ext_plugins.py +0 -0
  134. {streamlink-7.1.3 → streamlink-7.2.0}/docs/ext_releaseref.py +0 -0
  135. {streamlink-7.1.3 → streamlink-7.2.0}/docs/index.rst +0 -0
  136. {streamlink-7.1.3 → streamlink-7.2.0}/docs/migrations.rst +0 -0
  137. {streamlink-7.1.3 → streamlink-7.2.0}/docs/players.rst +0 -0
  138. {streamlink-7.1.3 → streamlink-7.2.0}/docs/plugins.rst +0 -0
  139. {streamlink-7.1.3 → streamlink-7.2.0}/docs/support.rst +0 -0
  140. {streamlink-7.1.3 → streamlink-7.2.0}/docs/thirdparty.rst +0 -0
  141. {streamlink-7.1.3 → streamlink-7.2.0}/docs-requirements.txt +0 -0
  142. {streamlink-7.1.3 → streamlink-7.2.0}/icon.svg +0 -0
  143. {streamlink-7.1.3 → streamlink-7.2.0}/script/build-shell-completions.sh +0 -0
  144. {streamlink-7.1.3 → streamlink-7.2.0}/setup.cfg +0 -0
  145. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/__init__.py +0 -0
  146. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/__main__.py +0 -0
  147. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/api.py +0 -0
  148. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/buffers.py +0 -0
  149. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/cache.py +0 -0
  150. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/compat.py +0 -0
  151. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/exceptions.py +0 -0
  152. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/options.py +0 -0
  153. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/packages/__init__.py +0 -0
  154. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/packages/requests_file.py +0 -0
  155. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/__init__.py +0 -0
  156. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/api/__init__.py +0 -0
  157. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/api/useragents.py +0 -0
  158. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/api/validate.py +0 -0
  159. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/api/webbrowser/__init__.py +0 -0
  160. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/api/webbrowser/aws_waf.py +0 -0
  161. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugin/api/websocket.py +0 -0
  162. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/__init__.py +0 -0
  163. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/abematv.py +0 -0
  164. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/adultswim.py +0 -0
  165. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/albavision.py +0 -0
  166. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/aloula.py +0 -0
  167. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/app17.py +0 -0
  168. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ard_live.py +0 -0
  169. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ard_mediathek.py +0 -0
  170. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/artetv.py +0 -0
  171. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/atpchallenger.py +0 -0
  172. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/atresplayer.py +0 -0
  173. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/bbciplayer.py +0 -0
  174. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/bfmtv.py +0 -0
  175. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/bigo.py +0 -0
  176. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/bilibili.py +0 -0
  177. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/blazetv.py +0 -0
  178. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/bloomberg.py +0 -0
  179. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/brightcove.py +0 -0
  180. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/btv.py +0 -0
  181. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/cbsnews.py +0 -0
  182. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/cdnbg.py +0 -0
  183. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ceskatelevize.py +0 -0
  184. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/chzzk.py +0 -0
  185. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/cinergroup.py +0 -0
  186. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/clubbingtv.py +0 -0
  187. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/cmmedia.py +0 -0
  188. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/cnbce.py +0 -0
  189. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/cnews.py +0 -0
  190. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/dailymotion.py +0 -0
  191. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/dash.py +0 -0
  192. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/delfi.py +0 -0
  193. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/deutschewelle.py +0 -0
  194. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/dlive.py +0 -0
  195. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/dogan.py +0 -0
  196. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/dogus.py +0 -0
  197. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/douyin.py +0 -0
  198. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/drdk.py +0 -0
  199. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/earthcam.py +0 -0
  200. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/filmon.py +0 -0
  201. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/goltelevision.py +0 -0
  202. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/goodgame.py +0 -0
  203. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/googledrive.py +0 -0
  204. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/gulli.py +0 -0
  205. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/hiplayer.py +0 -0
  206. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/hls.py +0 -0
  207. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/http.py +0 -0
  208. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/htv.py +0 -0
  209. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/huajiao.py +0 -0
  210. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/huya.py +0 -0
  211. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/indihometv.py +0 -0
  212. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/invintus.py +0 -0
  213. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/kugou.py +0 -0
  214. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/livestream.py +0 -0
  215. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/lnk.py +0 -0
  216. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/lrt.py +0 -0
  217. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ltv_lsm_lv.py +0 -0
  218. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mangomolo.py +0 -0
  219. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mdstrm.py +0 -0
  220. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mediaklikk.py +0 -0
  221. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mediavitrina.py +0 -0
  222. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mitele.py +0 -0
  223. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mixcloud.py +0 -0
  224. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mjunoon.py +0 -0
  225. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/mrtmk.py +0 -0
  226. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/n13tv.py +0 -0
  227. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/nasaplus.py +0 -0
  228. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/nhkworld.py +0 -0
  229. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/nimotv.py +0 -0
  230. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/nos.py +0 -0
  231. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/nrk.py +0 -0
  232. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/olympicchannel.py +0 -0
  233. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/oneplusone.py +0 -0
  234. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/onetv.py +0 -0
  235. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/openrectv.py +0 -0
  236. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/pandalive.py +0 -0
  237. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/piaulizaportal.py +0 -0
  238. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/picarto.py +0 -0
  239. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/piczel.py +0 -0
  240. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/pixiv.py +0 -0
  241. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/pluto.py +0 -0
  242. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/pluzz.py +0 -0
  243. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/radiko.py +0 -0
  244. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/raiplay.py +0 -0
  245. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/reuters.py +0 -0
  246. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/rtpa.py +0 -0
  247. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/rtpplay.py +0 -0
  248. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/rtve.py +0 -0
  249. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/rtvs.py +0 -0
  250. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ruv.py +0 -0
  251. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/sbscokr.py +0 -0
  252. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/showroom.py +0 -0
  253. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/soop.py +0 -0
  254. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/sportal.py +0 -0
  255. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/sportschau.py +0 -0
  256. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ssh101.py +0 -0
  257. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/stadium.py +0 -0
  258. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/steam.py +0 -0
  259. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/streann.py +0 -0
  260. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/stv.py +0 -0
  261. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/svtplay.py +0 -0
  262. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/swisstxt.py +0 -0
  263. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/telefe.py +0 -0
  264. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/telemadrid.py +0 -0
  265. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tiktok.py +0 -0
  266. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/trovo.py +0 -0
  267. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/turkuvaz.py +0 -0
  268. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tv360.py +0 -0
  269. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tv3cat.py +0 -0
  270. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tv5monde.py +0 -0
  271. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tv8.py +0 -0
  272. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tv999.py +0 -0
  273. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tvibo.py +0 -0
  274. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tviplayer.py +0 -0
  275. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tvp.py +0 -0
  276. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/tvtoya.py +0 -0
  277. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/twitcasting.py +0 -0
  278. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/twitch.py +0 -0
  279. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ustreamtv.py +0 -0
  280. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/ustvnow.py +0 -0
  281. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/vidio.py +0 -0
  282. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/vimeo.py +0 -0
  283. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/vinhlongtv.py +0 -0
  284. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/vk.py +0 -0
  285. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/vkvideo.py +0 -0
  286. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/vtvgo.py +0 -0
  287. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/welt.py +0 -0
  288. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/wwenetwork.py +0 -0
  289. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/youtube.py +0 -0
  290. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/yupptv.py +0 -0
  291. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/zattoo.py +0 -0
  292. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/zdf_mediathek.py +0 -0
  293. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/plugins/zeenews.py +0 -0
  294. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/py.typed +0 -0
  295. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/session/__init__.py +0 -0
  296. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/session/http.py +0 -0
  297. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/session/http.pyi +0 -0
  298. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/session/options.py +0 -0
  299. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/session/plugins.py +0 -0
  300. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/session/session.py +0 -0
  301. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/__init__.py +0 -0
  302. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/dash/__init__.py +0 -0
  303. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/dash/dash.py +0 -0
  304. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/dash/manifest.py +0 -0
  305. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/dash/segment.py +0 -0
  306. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/ffmpegmux.py +0 -0
  307. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/file.py +0 -0
  308. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/filtered.py +0 -0
  309. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/hls/__init__.py +0 -0
  310. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/http.py +0 -0
  311. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/segmented/__init__.py +0 -0
  312. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/segmented/segment.py +0 -0
  313. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/segmented/segmented.py +0 -0
  314. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/stream.py +0 -0
  315. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/stream/wrappers.py +0 -0
  316. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/user_input.py +0 -0
  317. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/__init__.py +0 -0
  318. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/args.py +0 -0
  319. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/cache.py +0 -0
  320. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/crypto.py +0 -0
  321. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/data.py +0 -0
  322. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/formatter.py +0 -0
  323. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/module.py +0 -0
  324. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/named_pipe.py +0 -0
  325. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/parse.py +0 -0
  326. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/path.py +0 -0
  327. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/processoutput.py +0 -0
  328. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/random.py +0 -0
  329. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/socket.py +0 -0
  330. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/times.py +0 -0
  331. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/utils/url.py +0 -0
  332. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/validate/__init__.py +0 -0
  333. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/validate/_exception.py +0 -0
  334. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/validate/_schemas.py +0 -0
  335. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/validate/_validate.py +0 -0
  336. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/validate/_validators.py +0 -0
  337. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/__init__.py +0 -0
  338. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/__init__.py +0 -0
  339. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/client.py +0 -0
  340. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/connection.py +0 -0
  341. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/cdp/exceptions.py +0 -0
  342. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/chromium.py +0 -0
  343. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/exceptions.py +0 -0
  344. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink/webbrowser/webbrowser.py +0 -0
  345. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink.egg-info/dependency_links.txt +0 -0
  346. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink.egg-info/entry_points.txt +0 -0
  347. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink.egg-info/top_level.txt +0 -0
  348. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/__init__.py +0 -0
  349. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/__main__.py +0 -0
  350. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/_parser.py +0 -0
  351. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/compat.py +0 -0
  352. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/constants.py +0 -0
  353. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/exceptions.py +0 -0
  354. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/output/__init__.py +0 -0
  355. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/output/abc.py +0 -0
  356. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/output/file.py +0 -0
  357. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/output/http.py +0 -0
  358. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/output/player.py +0 -0
  359. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/py.typed +0 -0
  360. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/show_matchers.py +0 -0
  361. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/streamrunner.py +0 -0
  362. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/utils/__init__.py +0 -0
  363. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/utils/formatter.py +0 -0
  364. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/utils/path.py +0 -0
  365. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/utils/player.py +0 -0
  366. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/utils/progress.py +0 -0
  367. {streamlink-7.1.3 → streamlink-7.2.0}/src/streamlink_cli/utils/versioncheck.py +0 -0
  368. {streamlink-7.1.3 → streamlink-7.2.0}/tests/__init__.py +0 -0
  369. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/__init__.py +0 -0
  370. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/__init__.py +0 -0
  371. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/conftest.py +0 -0
  372. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_can_handle_url.py +0 -0
  373. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_create_output.py +0 -0
  374. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_formatter.py +0 -0
  375. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_output_stream.py +0 -0
  376. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_output_stream_passthrough.py +0 -0
  377. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_player_argv.py +0 -0
  378. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_resolve_stream_name.py +0 -0
  379. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_setup_config_args.py +0 -0
  380. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_show_matchers.py +0 -0
  381. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/main/test_version_check.py +0 -0
  382. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/output/__init__.py +0 -0
  383. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/output/test_file.py +0 -0
  384. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/output/test_player.py +0 -0
  385. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/test_compat.py +0 -0
  386. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/test_streamrunner.py +0 -0
  387. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/utils/__init__.py +0 -0
  388. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/utils/test_formatter.py +0 -0
  389. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/utils/test_path.py +0 -0
  390. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/utils/test_player.py +0 -0
  391. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/utils/test_progress.py +0 -0
  392. {streamlink-7.1.3 → streamlink-7.2.0}/tests/cli/utils/test_versioncheck.py +0 -0
  393. {streamlink-7.1.3 → streamlink-7.2.0}/tests/conftest.py +0 -0
  394. {streamlink-7.1.3 → streamlink-7.2.0}/tests/mixins/__init__.py +0 -0
  395. {streamlink-7.1.3 → streamlink-7.2.0}/tests/mixins/stream_hls.py +0 -0
  396. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugin/__init__.py +0 -0
  397. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugin/override/testplugin.py +0 -0
  398. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugin/testplugin.py +0 -0
  399. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugin/testplugin_invalid.py +0 -0
  400. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugin/testplugin_missing.py +0 -0
  401. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/__init__.py +0 -0
  402. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/conftest.py +0 -0
  403. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_abematv.py +0 -0
  404. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_adultswim.py +0 -0
  405. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_albavision.py +0 -0
  406. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_aloula.py +0 -0
  407. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_app17.py +0 -0
  408. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ard_live.py +0 -0
  409. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ard_mediathek.py +0 -0
  410. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_artetv.py +0 -0
  411. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_atpchallenger.py +0 -0
  412. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_atresplayer.py +0 -0
  413. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_bbciplayer.py +0 -0
  414. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_bfmtv.py +0 -0
  415. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_bigo.py +0 -0
  416. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_bilibili.py +0 -0
  417. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_blazetv.py +0 -0
  418. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_bloomberg.py +0 -0
  419. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_brightcove.py +0 -0
  420. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_btv.py +0 -0
  421. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_cbsnews.py +0 -0
  422. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_cdnbg.py +0 -0
  423. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ceskatelevize.py +0 -0
  424. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_chzzk.py +0 -0
  425. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_cinergroup.py +0 -0
  426. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_clubbingtv.py +0 -0
  427. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_cmmedia.py +0 -0
  428. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_cnbce.py +0 -0
  429. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_cnews.py +0 -0
  430. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_dailymotion.py +0 -0
  431. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_dash.py +0 -0
  432. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_delfi.py +0 -0
  433. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_deutschewelle.py +0 -0
  434. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_dlive.py +0 -0
  435. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_dogan.py +0 -0
  436. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_dogus.py +0 -0
  437. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_douyin.py +0 -0
  438. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_drdk.py +0 -0
  439. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_earthcam.py +0 -0
  440. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_filmon.py +0 -0
  441. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_goltelevision.py +0 -0
  442. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_goodgame.py +0 -0
  443. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_googledrive.py +0 -0
  444. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_gulli.py +0 -0
  445. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_hiplayer.py +0 -0
  446. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_hls.py +0 -0
  447. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_http.py +0 -0
  448. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_htv.py +0 -0
  449. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_huajiao.py +0 -0
  450. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_huya.py +0 -0
  451. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_indihometv.py +0 -0
  452. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_invintus.py +0 -0
  453. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_kugou.py +0 -0
  454. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_livestream.py +0 -0
  455. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_lnk.py +0 -0
  456. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_lrt.py +0 -0
  457. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ltv_lsm_lv.py +0 -0
  458. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mangomolo.py +0 -0
  459. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mdstrm.py +0 -0
  460. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mediaklikk.py +0 -0
  461. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mediavitrina.py +0 -0
  462. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mitele.py +0 -0
  463. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mixcloud.py +0 -0
  464. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mjunoon.py +0 -0
  465. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_mrtmk.py +0 -0
  466. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_n13tv.py +0 -0
  467. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_nasaplus.py +0 -0
  468. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_nhkworld.py +0 -0
  469. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_nicolive.py +0 -0
  470. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_nimotv.py +0 -0
  471. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_nos.py +0 -0
  472. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_nrk.py +0 -0
  473. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_okru.py +0 -0
  474. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_olympicchannel.py +0 -0
  475. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_oneplusone.py +0 -0
  476. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_onetv.py +0 -0
  477. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_openrectv.py +0 -0
  478. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_pandalive.py +0 -0
  479. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_piaulizaportal.py +0 -0
  480. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_picarto.py +0 -0
  481. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_piczel.py +0 -0
  482. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_pixiv.py +0 -0
  483. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_pluto.py +0 -0
  484. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_pluzz.py +0 -0
  485. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_radiko.py +0 -0
  486. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_raiplay.py +0 -0
  487. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_reuters.py +0 -0
  488. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_rtpa.py +0 -0
  489. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_rtpplay.py +0 -0
  490. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_rtve.py +0 -0
  491. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_rtvs.py +0 -0
  492. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ruv.py +0 -0
  493. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_sbscokr.py +0 -0
  494. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_showroom.py +0 -0
  495. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_sportal.py +0 -0
  496. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_sportschau.py +0 -0
  497. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ssh101.py +0 -0
  498. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_stadium.py +0 -0
  499. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_steam.py +0 -0
  500. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_streann.py +0 -0
  501. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_stv.py +0 -0
  502. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_svtplay.py +0 -0
  503. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_swisstxt.py +0 -0
  504. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_telefe.py +0 -0
  505. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_telemadrid.py +0 -0
  506. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tiktok.py +0 -0
  507. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_trovo.py +0 -0
  508. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_turkuvaz.py +0 -0
  509. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tv360.py +0 -0
  510. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tv3cat.py +0 -0
  511. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tv5monde.py +0 -0
  512. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tv8.py +0 -0
  513. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tv999.py +0 -0
  514. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tvibo.py +0 -0
  515. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tviplayer.py +0 -0
  516. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tvp.py +0 -0
  517. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_tvtoya.py +0 -0
  518. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_twitcasting.py +0 -0
  519. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_twitch.py +0 -0
  520. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ustreamtv.py +0 -0
  521. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_ustvnow.py +0 -0
  522. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_vidio.py +0 -0
  523. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_vimeo.py +0 -0
  524. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_vk.py +0 -0
  525. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_vkvideo.py +0 -0
  526. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_vtvgo.py +0 -0
  527. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_welt.py +0 -0
  528. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_wwenetwork.py +0 -0
  529. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_youtube.py +0 -0
  530. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_yupptv.py +0 -0
  531. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_zattoo.py +0 -0
  532. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_zdf_mediathek.py +0 -0
  533. {streamlink-7.1.3 → streamlink-7.2.0}/tests/plugins/test_zeenews.py +0 -0
  534. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/__init__.py +0 -0
  535. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/cli/config/custom +0 -0
  536. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/cli/config/primary +0 -0
  537. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/cli/config/primary.testplugin +0 -0
  538. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/cli/config/secondary +0 -0
  539. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/cli/config/secondary.testplugin +0 -0
  540. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_1.mpd +0 -0
  541. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_10.mpd +0 -0
  542. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_11_static.mpd +0 -0
  543. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_2.mpd +0 -0
  544. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_3.mpd +0 -0
  545. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_8.mpd +0 -0
  546. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_9.mpd +0 -0
  547. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_baseurl_nested.mpd +0 -0
  548. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_baseurl_urljoin.mpd +0 -0
  549. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_no_publish_time_timeline_with_start.mpd +0 -0
  550. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_no_publish_time_timeline_without_start.mpd +0 -0
  551. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_no_duration.mpd +0 -0
  552. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p1.mpd +0 -0
  553. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p2.mpd +0 -0
  554. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p3.mpd +0 -0
  555. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p4.mpd +0 -0
  556. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_segment_list_p5.mpd +0 -0
  557. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_timeline_continued_p1.mpd +0 -0
  558. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_dynamic_timeline_continued_p2.mpd +0 -0
  559. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_no_segment_list_or_template.mpd +0 -0
  560. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_segment_list.mpd +0 -0
  561. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_segments_byterange.mpd +0 -0
  562. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_segments_dynamic_number.mpd +0 -0
  563. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_static_no_publish_time.mpd +0 -0
  564. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_suggested_presentation_delay.mpd +0 -0
  565. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/dash/test_timeline_ids.mpd +0 -0
  566. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/hls/test_date.m3u8 +0 -0
  567. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/hls/test_master.m3u8 +0 -0
  568. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/hls/test_master_twitch_vod.m3u8 +0 -0
  569. {streamlink-7.1.3 → streamlink-7.2.0}/tests/resources/hls/test_multivariant_bandwidth.m3u8 +0 -0
  570. {streamlink-7.1.3 → streamlink-7.2.0}/tests/session/__init__.py +0 -0
  571. {streamlink-7.1.3 → streamlink-7.2.0}/tests/session/test_http.py +0 -0
  572. {streamlink-7.1.3 → streamlink-7.2.0}/tests/session/test_options.py +0 -0
  573. {streamlink-7.1.3 → streamlink-7.2.0}/tests/session/test_plugins.py +0 -0
  574. {streamlink-7.1.3 → streamlink-7.2.0}/tests/session/test_session.py +0 -0
  575. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/__init__.py +0 -0
  576. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/dash/__init__.py +0 -0
  577. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/dash/test_dash.py +0 -0
  578. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/dash/test_manifest.py +0 -0
  579. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/hls/__init__.py +0 -0
  580. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/hls/test_hls_filtered.py +0 -0
  581. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/test_ffmpegmux.py +0 -0
  582. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/test_file.py +0 -0
  583. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/test_segmented.py +0 -0
  584. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/test_stream_json.py +0 -0
  585. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/test_stream_to_url.py +0 -0
  586. {streamlink-7.1.3 → streamlink-7.2.0}/tests/stream/test_stream_wrappers.py +0 -0
  587. {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_api_websocket.py +0 -0
  588. {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_buffers.py +0 -0
  589. {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_cache.py +0 -0
  590. {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_compat.py +0 -0
  591. {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_options.py +0 -0
  592. {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_plugins.py +0 -0
  593. {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_streamlink_api.py +0 -0
  594. {streamlink-7.1.3 → streamlink-7.2.0}/tests/test_validate.py +0 -0
  595. {streamlink-7.1.3 → streamlink-7.2.0}/tests/testutils/__init__.py +0 -0
  596. {streamlink-7.1.3 → streamlink-7.2.0}/tests/testutils/handshake.py +0 -0
  597. {streamlink-7.1.3 → streamlink-7.2.0}/tests/testutils/test_handshake.py +0 -0
  598. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/__init__.py +0 -0
  599. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_args.py +0 -0
  600. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_cache.py +0 -0
  601. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_crypto.py +0 -0
  602. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_data.py +0 -0
  603. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_formatter.py +0 -0
  604. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_module.py +0 -0
  605. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_named_pipe.py +0 -0
  606. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_parse.py +0 -0
  607. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_path.py +0 -0
  608. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_processoutput.py +0 -0
  609. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_random.py +0 -0
  610. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_times.py +0 -0
  611. {streamlink-7.1.3 → streamlink-7.2.0}/tests/utils/test_url.py +0 -0
  612. {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/__init__.py +0 -0
  613. {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/cdp/__init__.py +0 -0
  614. {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/cdp/conftest.py +0 -0
  615. {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/cdp/test_connection.py +0 -0
  616. {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/conftest.py +0 -0
  617. {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/test_chromium.py +0 -0
  618. {streamlink-7.1.3 → streamlink-7.2.0}/tests/webbrowser/test_webbrowser.py +0 -0
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## streamlink 7.2.0 (2025-04-04)
4
+
5
+ - Added: `decompress` extras marker to Streamlink's optional dependencies for installing `brotli` and `zstandard`, which were previously implied optional dependencies via the transitive dependency `urllib3` ([#6451](https://github.com/streamlink/streamlink/pull/6451))
6
+ - Changed: `--retry-streams` to allow a value of `0`, so it can be unset again if set previously ([#6455](https://github.com/streamlink/streamlink/pull/6455))
7
+ - Changed: `--quiet` to suppress all text output including errors, not just log output ([#6461](https://github.com/streamlink/streamlink/pull/6461))
8
+ - Fixed: `--logfile` affecting the console output stream ([#6461](https://github.com/streamlink/streamlink/pull/6461))
9
+ - Fixed: broken user input prompt behavior on missing or non-interactive I/O streams ([#6461](https://github.com/streamlink/streamlink/pull/6461))
10
+ - Fixed: `Plugin` classes not requiring a matching matcher ([#6466](https://github.com/streamlink/streamlink/pull/6466))
11
+ - Fixed: `--hls-audio-select` not being case-insensitive and only comparing input values rather than resolved language codes ([#6469](https://github.com/streamlink/streamlink/pull/6469), [#6479](https://github.com/streamlink/streamlink/pull/6479))
12
+ - Updated: Chrome Devtool Protocol interfaces, to match recent Chromium versions ([#6481](https://github.com/streamlink/streamlink/pull/6481))
13
+ - Updated plugins:
14
+ - euronews: rewritten and fixed plugin ([#6452](https://github.com/streamlink/streamlink/pull/6452))
15
+ - kick: refactored plugin, fixed clip matcher and 403 API responses ([#6491](https://github.com/streamlink/streamlink/pull/6491))
16
+ - nicolive: fixed plugin not loading cookies from WebSocket messages ([#6441](https://github.com/streamlink/streamlink/pull/6441))
17
+ - nicolive: made the plugin always filter out blank HLS segments ([#6476](https://github.com/streamlink/streamlink/pull/6476))
18
+ - nowtvtr: removed plugin ([#6488](https://github.com/streamlink/streamlink/pull/6488))
19
+ - okru: canonicalize mobile URLs ([#6444](https://github.com/streamlink/streamlink/pull/6444))
20
+ - tf1: fixed stream matcher ([#6439](https://github.com/streamlink/streamlink/pull/6439))
21
+
22
+ [Full changelog](https://github.com/streamlink/streamlink/compare/7.1.3...7.2.0)
23
+
24
+
3
25
  ## streamlink 7.1.3 (2025-02-14)
4
26
 
5
27
  - Fixed: `validate.contains()` to allow all kinds of `Container` object inputs ([#6421](https://github.com/streamlink/streamlink/pull/6421))
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: streamlink
3
- Version: 7.1.3
3
+ Version: 7.2.0
4
4
  Summary: Streamlink is a command-line utility that extracts streams from various services and pipes them into a video player of choice.
5
5
  Author: Streamlink
6
6
  Author-email: streamlink@protonmail.com
@@ -44,6 +44,9 @@ Requires-Dist: trio<1,>=0.22.0; python_version < "3.13"
44
44
  Requires-Dist: trio-websocket<1,>=0.9.0
45
45
  Requires-Dist: urllib3<3,>=1.26.0
46
46
  Requires-Dist: websocket-client<2,>=1.2.1
47
+ Provides-Extra: decompress
48
+ Requires-Dist: urllib3[brotli,zstd]<3,>=1.26.0; extra == "decompress"
49
+ Dynamic: license-file
47
50
 
48
51
  <h1 align="center"><a href="https://streamlink.github.io/">Streamlink<br><img height="150" alt="Streamlink" src="https://raw.githubusercontent.com/streamlink/streamlink/master/icon.svg"></a></h1>
49
52
 
@@ -128,9 +128,7 @@ _shtab_streamlink_cli_options=(
128
128
  \$\{XDG_STATE_HOME\:-\$\{HOME\}\/.local\/state\}\/streamlink\/logs
129
129
  ]:logfile:"
130
130
  {-Q,--quiet}"[
131
- Hide all log output.
132
-
133
- Alias for --loglevel\=none.
131
+ Suppress all console and log output, and also disable user prompts.
134
132
  ]"
135
133
  {-j,--json}"[
136
134
  Output JSON representations instead of the normal text output.
@@ -368,16 +366,19 @@ _shtab_streamlink_cli_options=(
368
366
  ]"
369
367
  "--retry-streams[
370
368
  Retry fetching the list of available streams until streams are found
371
- while waiting \`DELAY\` second(s) between each attempt. If unset, only one
372
- 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.
373
373
 
374
- 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.
375
376
  ]:retry_streams:"
376
377
  "--retry-max[
377
- When using --retry-streams, stop retrying the fetch after \`COUNT\` retry
378
- attempt(s). Fetch will retry infinitely if \`COUNT\` is zero or unset.
378
+ Stop fetching the list of available streams after \`COUNT\` retry attempt(s).
379
379
 
380
- 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.
381
382
  ]:retry_max:"
382
383
  "--retry-open[
383
384
  After a successful fetch, try \`ATTEMPTS\` time(s) to open the stream until giving up.
@@ -14,7 +14,7 @@ pytest-cov
14
14
  coverage[toml]
15
15
 
16
16
  # code-linting / code-formatting
17
- ruff ==0.9.5
17
+ ruff ==0.11.2
18
18
 
19
19
  # typing
20
20
  mypy[faster-cache] ==1.15.0
@@ -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" "Feb 14, 2025" "7.1.3" "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
@@ -267,9 +267,7 @@ ${XDG_STATE_HOME:\-${HOME}/.local/state}/streamlink/logs
267
267
  .B \-Q
268
268
  .TP
269
269
  .B \-\-quiet
270
- Hide all log output.
271
- .sp
272
- Alias for \fI\%\-\-loglevel=none\fP\&.
270
+ Suppress all console and log output, and also disable user prompts.
273
271
  .UNINDENT
274
272
  .INDENT 0.0
275
273
  .TP
@@ -639,18 +637,21 @@ If possible, translate the resolved stream to a URL and print it.
639
637
  .TP
640
638
  .B \-\-retry\-streams DELAY
641
639
  Retry fetching the list of available streams until streams are found
642
- while waiting \fBDELAY\fP second(s) between each attempt. If unset, only one
643
- 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\&.
644
644
  .sp
645
- 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.
646
647
  .UNINDENT
647
648
  .INDENT 0.0
648
649
  .TP
649
650
  .B \-\-retry\-max COUNT
650
- When using \fI\%\-\-retry\-streams\fP, stop retrying the fetch after \fBCOUNT\fP retry
651
- attempt(s). Fetch will retry infinitely if \fBCOUNT\fP is zero or unset.
651
+ Stop fetching the list of available streams after \fBCOUNT\fP retry attempt(s).
652
652
  .sp
653
- 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.
654
655
  .UNINDENT
655
656
  .INDENT 0.0
656
657
  .TP
@@ -17,7 +17,7 @@ The simplest use of the Streamlink API looks like this:
17
17
 
18
18
  This simply attempts to find a plugin and use it to extract streams from
19
19
  the URL. This works great in simple cases but if you want more
20
- fine tuning you need to use a `session object`_ instead.
20
+ fine tuning you need to use a `session object`_ instead and `fetch streams <fetching streams_>`_ manually.
21
21
 
22
22
  The returned value is a dict containing :py:class:`Stream <streamlink.stream.Stream>` objects:
23
23
 
@@ -80,19 +80,55 @@ when extracting streams more than once. You start by creating a
80
80
  .. code-block:: python
81
81
 
82
82
  >>> from streamlink import Streamlink
83
- >>> session = Streamlink()
83
+ >>> session = Streamlink({"optional-session-option": 123})
84
84
 
85
- 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,27 @@
1
1
  # Changelog
2
2
 
3
+ ## streamlink 7.2.0 (2025-04-04)
4
+
5
+ - Added: `decompress` extras marker to Streamlink's optional dependencies for installing `brotli` and `zstandard`, which were previously implied optional dependencies via the transitive dependency `urllib3` ([#6451](https://github.com/streamlink/streamlink/pull/6451))
6
+ - Changed: `--retry-streams` to allow a value of `0`, so it can be unset again if set previously ([#6455](https://github.com/streamlink/streamlink/pull/6455))
7
+ - Changed: `--quiet` to suppress all text output including errors, not just log output ([#6461](https://github.com/streamlink/streamlink/pull/6461))
8
+ - Fixed: `--logfile` affecting the console output stream ([#6461](https://github.com/streamlink/streamlink/pull/6461))
9
+ - Fixed: broken user input prompt behavior on missing or non-interactive I/O streams ([#6461](https://github.com/streamlink/streamlink/pull/6461))
10
+ - Fixed: `Plugin` classes not requiring a matching matcher ([#6466](https://github.com/streamlink/streamlink/pull/6466))
11
+ - Fixed: `--hls-audio-select` not being case-insensitive and only comparing input values rather than resolved language codes ([#6469](https://github.com/streamlink/streamlink/pull/6469), [#6479](https://github.com/streamlink/streamlink/pull/6479))
12
+ - Updated: Chrome Devtool Protocol interfaces, to match recent Chromium versions ([#6481](https://github.com/streamlink/streamlink/pull/6481))
13
+ - Updated plugins:
14
+ - euronews: rewritten and fixed plugin ([#6452](https://github.com/streamlink/streamlink/pull/6452))
15
+ - kick: refactored plugin, fixed clip matcher and 403 API responses ([#6491](https://github.com/streamlink/streamlink/pull/6491))
16
+ - nicolive: fixed plugin not loading cookies from WebSocket messages ([#6441](https://github.com/streamlink/streamlink/pull/6441))
17
+ - nicolive: made the plugin always filter out blank HLS segments ([#6476](https://github.com/streamlink/streamlink/pull/6476))
18
+ - nowtvtr: removed plugin ([#6488](https://github.com/streamlink/streamlink/pull/6488))
19
+ - okru: canonicalize mobile URLs ([#6444](https://github.com/streamlink/streamlink/pull/6444))
20
+ - tf1: fixed stream matcher ([#6439](https://github.com/streamlink/streamlink/pull/6439))
21
+
22
+ [Full changelog](https://github.com/streamlink/streamlink/compare/7.1.3...7.2.0)
23
+
24
+
3
25
  ## streamlink 7.1.3 (2025-02-14)
4
26
 
5
27
  - Fixed: `validate.contains()` to allow all kinds of `Container` object inputs ([#6421](https://github.com/streamlink/streamlink/pull/6421))
@@ -501,6 +501,14 @@ Streamlink defines a `build system <pyproject.toml_>`__ according to `PEP-517`_
501
501
 
502
502
  - DASH streams with video and audio content always have to get remuxed.
503
503
  - HLS streams optionally need to get remuxed depending on the stream selection.
504
+ * - optional
505
+ - | `brotli`_
506
+ | ``decompress`` extras marker
507
+ - Used for decompressing HTTP responses
508
+ * - optional
509
+ - | `zstandard`_
510
+ | ``decompress`` extras marker
511
+ - Used for decompressing HTTP responses
504
512
 
505
513
  .. _pyproject.toml: https://github.com/streamlink/streamlink/blob/master/pyproject.toml
506
514
  .. _PEP-517: https://peps.python.org/pep-0517/
@@ -524,6 +532,9 @@ Streamlink defines a `build system <pyproject.toml_>`__ according to `PEP-517`_
524
532
  .. _urllib3: https://urllib3.readthedocs.io/en/stable/
525
533
  .. _websocket-client: https://pypi.org/project/websocket-client/
526
534
 
535
+ .. _brotli: https://pypi.org/project/Brotli/
536
+ .. _zstandard: https://pypi.org/project/zstandard/
537
+
527
538
  .. _FFmpeg: https://www.ffmpeg.org/
528
539
  .. _muxing: https://en.wikipedia.org/wiki/Multiplexing#Video_processing
529
540
 
@@ -70,6 +70,13 @@ dependencies = [
70
70
  "websocket-client >=1.2.1,<2",
71
71
  ]
72
72
 
73
+ [project.optional-dependencies]
74
+ decompress = [
75
+ # don't define brotli or zstandard library versions here
76
+ # and instead rely on urllib3's version requirements
77
+ "urllib3[brotli,zstd] >=1.26.0,<3"
78
+ ]
79
+
73
80
  [project.urls]
74
81
  Homepage = "https://github.com/streamlink/streamlink"
75
82
  Documentation = "https://streamlink.github.io/"
@@ -166,7 +173,6 @@ src = [
166
173
  "src",
167
174
  "tests",
168
175
  ]
169
- target-version = "py39"
170
176
  fix = false
171
177
  line-length = 128
172
178
  output-format = "full"
@@ -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.3",
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
 
@@ -0,0 +1,130 @@
1
+ """
2
+ $description French television news network, covering world news from the European perspective.
3
+ $url euronews.com
4
+ $type live, vod
5
+ $notes Euronews ignores the HTTP client's data decompression capabilities.
6
+ $notes Streamlink's optional brotli dependency is therefore strictly required.
7
+ """
8
+
9
+ import logging
10
+ import re
11
+
12
+ from streamlink.plugin import Plugin, pluginmatcher
13
+ from streamlink.plugin.api import validate
14
+ from streamlink.stream.hls import HLSStream
15
+ from streamlink.stream.http import HTTPStream
16
+
17
+
18
+ log = logging.getLogger(__name__)
19
+
20
+
21
+ @pluginmatcher(
22
+ name="live",
23
+ pattern=re.compile(r"https?://(?:(?P<subdomain>\w+)\.)?euronews\.com/live[?#]?"),
24
+ )
25
+ @pluginmatcher(
26
+ name="vod",
27
+ pattern=re.compile(r"https?://(?:\w+\.)?euronews\.com/(?!live)\S+"),
28
+ )
29
+ class Euronews(Plugin):
30
+ API_URL = "https://{subdomain}.euronews.com/api/live/data"
31
+
32
+ def _get_live(self):
33
+ log.debug("Querying live API")
34
+ subdomain = self.match["subdomain"] or "www"
35
+ streamtype, streamdata = self.session.http.get(
36
+ self.API_URL.format(subdomain=subdomain),
37
+ params={"locale": subdomain},
38
+ schema=validate.Schema(
39
+ validate.parse_json(),
40
+ validate.any(
41
+ validate.all(
42
+ {
43
+ "videoPrimaryUrl": validate.url(path=validate.endswith(".m3u8")),
44
+ },
45
+ validate.transform(lambda data: ("hls", data["videoPrimaryUrl"])),
46
+ ),
47
+ validate.all(
48
+ {
49
+ "player": "pfp",
50
+ "videoId": str,
51
+ },
52
+ validate.transform(lambda data: ("youtube", data["videoId"])),
53
+ ),
54
+ ),
55
+ ),
56
+ )
57
+
58
+ if streamtype == "hls":
59
+ return HLSStream.parse_variant_playlist(self.session, streamdata)
60
+ if streamtype == "youtube":
61
+ return self.session.streams(f"https://www.youtube.com/watch?v={streamdata}")
62
+
63
+ def _get_vod(self):
64
+ log.debug("Looking for VOD")
65
+ videotype, videodata = self.session.http.get(
66
+ self.url,
67
+ schema=validate.Schema(
68
+ validate.parse_html(),
69
+ validate.any(
70
+ validate.all(
71
+ validate.xml_xpath_string(".//meta[@property='og:video'][1]/@content"),
72
+ validate.url(),
73
+ validate.transform(lambda d: ("httpstream", d)),
74
+ ),
75
+ validate.all(
76
+ validate.xml_xpath_string(
77
+ ".//iframe[@id='pfpPlayer'][starts-with(@src,'https://www.youtube.com/')][1]/@src",
78
+ ),
79
+ validate.url(),
80
+ validate.transform(lambda d: ("plugin", d)),
81
+ ),
82
+ validate.all(
83
+ validate.xml_xpath_string("""
84
+ .//div
85
+ [@data-video]
86
+ [contains(@data-video, //head/meta[@rel='canonical'][@href][1]/@href)]
87
+ [1]
88
+ /@data-video
89
+ """),
90
+ str,
91
+ validate.parse_json(),
92
+ validate.any(
93
+ validate.all(
94
+ {"url": validate.url()},
95
+ validate.transform(lambda d: ("httpstream", d["url"])),
96
+ ),
97
+ validate.all(
98
+ {
99
+ "player": "dailymotion",
100
+ "id": str,
101
+ },
102
+ validate.transform(lambda d: ("plugin", f"https://www.dailymotion.com/embed/video/{d['id']}")),
103
+ ),
104
+ validate.all(
105
+ {
106
+ "player": "pfp",
107
+ validate.optional("videoId"): str,
108
+ validate.optional("id"): str,
109
+ },
110
+ validate.transform(lambda d: d.get("videoId") or d.get("id")),
111
+ str,
112
+ validate.transform(lambda d: ("plugin", f"https://www.youtube.com/watch?v={d}")),
113
+ ),
114
+ ),
115
+ ),
116
+ validate.transform(lambda *_: ("error", None)),
117
+ ),
118
+ ),
119
+ )
120
+
121
+ if videotype == "httpstream":
122
+ return dict(vod=HTTPStream(self.session, videodata))
123
+ if videotype == "plugin":
124
+ return self.session.streams(videodata)
125
+
126
+ def _get_streams(self):
127
+ return self._get_live() if self.matches["live"] else self._get_vod()
128
+
129
+
130
+ __plugin__ = Euronews