streamlink 7.3.0__tar.gz → 7.4.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.3.0 → streamlink-7.4.0}/CHANGELOG.md +19 -0
  2. {streamlink-7.3.0 → streamlink-7.4.0}/PKG-INFO +1 -1
  3. {streamlink-7.3.0 → streamlink-7.4.0}/dev-requirements.txt +3 -2
  4. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_build/man/streamlink.1 +1 -1
  5. {streamlink-7.3.0 → streamlink-7.4.0}/docs/changelog.md +19 -0
  6. {streamlink-7.3.0 → streamlink-7.4.0}/docs/install.rst +9 -41
  7. {streamlink-7.3.0 → streamlink-7.4.0}/setup.py +1 -1
  8. streamlink-7.4.0/src/streamlink/_version.py +1 -0
  9. streamlink-7.4.0/src/streamlink/plugins/blasttv.py +114 -0
  10. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/kick.py +79 -16
  11. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/nicolive.py +1 -0
  12. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/picarto.py +12 -19
  13. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/tvp.py +70 -64
  14. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/twitcasting.py +32 -59
  15. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/session/http.py +4 -0
  16. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/session/http.pyi +7 -0
  17. streamlink-7.4.0/src/streamlink/session/http_useragents.py +16 -0
  18. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/dash/dash.py +16 -3
  19. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/dash/manifest.py +1 -0
  20. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/hls/hls.py +1 -1
  21. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink.egg-info/PKG-INFO +1 -1
  22. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink.egg-info/SOURCES.txt +3 -2
  23. streamlink-7.4.0/tests/plugins/test_blasttv.py +37 -0
  24. streamlink-7.4.0/tests/plugins/test_tvp.py +62 -0
  25. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/__init__.py +2 -3
  26. streamlink-7.4.0/tests/resources/dash/test_period_selection.mpd +50 -0
  27. {streamlink-7.3.0 → streamlink-7.4.0}/tests/session/test_http.py +71 -0
  28. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/dash/test_dash.py +36 -0
  29. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/hls/test_hls.py +8 -0
  30. {streamlink-7.3.0 → streamlink-7.4.0}/tests/test_cache.py +3 -4
  31. {streamlink-7.3.0 → streamlink-7.4.0}/tests/test_compat.py +5 -5
  32. {streamlink-7.3.0 → streamlink-7.4.0}/tests/test_validate.py +13 -6
  33. streamlink-7.3.0/src/streamlink/_version.py +0 -1
  34. streamlink-7.3.0/src/streamlink/plugins/vtvgo.py +0 -79
  35. streamlink-7.3.0/src/streamlink/session/http_useragents.py +0 -16
  36. streamlink-7.3.0/tests/plugins/test_tvp.py +0 -50
  37. streamlink-7.3.0/tests/plugins/test_vtvgo.py +0 -25
  38. {streamlink-7.3.0 → streamlink-7.4.0}/AUTHORS +0 -0
  39. {streamlink-7.3.0 → streamlink-7.4.0}/LICENSE +0 -0
  40. {streamlink-7.3.0 → streamlink-7.4.0}/MANIFEST.in +0 -0
  41. {streamlink-7.3.0 → streamlink-7.4.0}/README.md +0 -0
  42. {streamlink-7.3.0 → streamlink-7.4.0}/build_backend/__init__.py +0 -0
  43. {streamlink-7.3.0 → streamlink-7.4.0}/build_backend/commands.py +0 -0
  44. {streamlink-7.3.0 → streamlink-7.4.0}/build_backend/onbuild.py +0 -0
  45. {streamlink-7.3.0 → streamlink-7.4.0}/build_backend/plugins_json.py +0 -0
  46. {streamlink-7.3.0 → streamlink-7.4.0}/build_backend/test_build_backend.py +0 -0
  47. {streamlink-7.3.0 → streamlink-7.4.0}/build_backend/test_onbuild.py +0 -0
  48. {streamlink-7.3.0 → streamlink-7.4.0}/build_backend/test_plugins_json.py +0 -0
  49. {streamlink-7.3.0 → streamlink-7.4.0}/completions/bash/streamlink +0 -0
  50. {streamlink-7.3.0 → streamlink-7.4.0}/completions/zsh/_streamlink +0 -0
  51. {streamlink-7.3.0 → streamlink-7.4.0}/docs/Makefile +0 -0
  52. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_man.rst +0 -0
  53. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_static/apple-touch-icon.png +0 -0
  54. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_static/favicon-16x16.png +0 -0
  55. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_static/favicon-32x32.png +0 -0
  56. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_static/favicon.ico +0 -0
  57. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_static/icon-ffmpeg.svg +0 -0
  58. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_static/icon-python.svg +0 -0
  59. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_static/icon.svg +0 -0
  60. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_static/opengraph-image.png +0 -0
  61. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_static/site.webmanifest +0 -0
  62. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_static/styles/custom.css +0 -0
  63. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_templates/base.html +0 -0
  64. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_templates/page.html +0 -0
  65. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_templates/sidebar/brand.html +0 -0
  66. {streamlink-7.3.0 → streamlink-7.4.0}/docs/_templates/sidebar/github-buttons.html +0 -0
  67. {streamlink-7.3.0 → streamlink-7.4.0}/docs/api/cache.rst +0 -0
  68. {streamlink-7.3.0 → streamlink-7.4.0}/docs/api/exceptions.rst +0 -0
  69. {streamlink-7.3.0 → streamlink-7.4.0}/docs/api/options.rst +0 -0
  70. {streamlink-7.3.0 → streamlink-7.4.0}/docs/api/plugin.rst +0 -0
  71. {streamlink-7.3.0 → streamlink-7.4.0}/docs/api/session.rst +0 -0
  72. {streamlink-7.3.0 → streamlink-7.4.0}/docs/api/stream.rst +0 -0
  73. {streamlink-7.3.0 → streamlink-7.4.0}/docs/api/streamlink.rst +0 -0
  74. {streamlink-7.3.0 → streamlink-7.4.0}/docs/api/validate.rst +0 -0
  75. {streamlink-7.3.0 → streamlink-7.4.0}/docs/api/webbrowser.rst +0 -0
  76. {streamlink-7.3.0 → streamlink-7.4.0}/docs/api.rst +0 -0
  77. {streamlink-7.3.0 → streamlink-7.4.0}/docs/api_guide/quickstart.rst +0 -0
  78. {streamlink-7.3.0 → streamlink-7.4.0}/docs/api_guide/validate.rst +0 -0
  79. {streamlink-7.3.0 → streamlink-7.4.0}/docs/api_guide.rst +0 -0
  80. {streamlink-7.3.0 → streamlink-7.4.0}/docs/applications.rst +0 -0
  81. {streamlink-7.3.0 → streamlink-7.4.0}/docs/cli/config.rst +0 -0
  82. {streamlink-7.3.0 → streamlink-7.4.0}/docs/cli/metadata.rst +0 -0
  83. {streamlink-7.3.0 → streamlink-7.4.0}/docs/cli/plugin-sideloading.rst +0 -0
  84. {streamlink-7.3.0 → streamlink-7.4.0}/docs/cli/plugins/twitch.rst +0 -0
  85. {streamlink-7.3.0 → streamlink-7.4.0}/docs/cli/plugins.rst +0 -0
  86. {streamlink-7.3.0 → streamlink-7.4.0}/docs/cli/protocols.rst +0 -0
  87. {streamlink-7.3.0 → streamlink-7.4.0}/docs/cli/proxy.rst +0 -0
  88. {streamlink-7.3.0 → streamlink-7.4.0}/docs/cli/tutorial.rst +0 -0
  89. {streamlink-7.3.0 → streamlink-7.4.0}/docs/cli.rst +0 -0
  90. {streamlink-7.3.0 → streamlink-7.4.0}/docs/conf.py +0 -0
  91. {streamlink-7.3.0 → streamlink-7.4.0}/docs/deprecations.rst +0 -0
  92. {streamlink-7.3.0 → streamlink-7.4.0}/docs/developing.rst +0 -0
  93. {streamlink-7.3.0 → streamlink-7.4.0}/docs/docutils.conf +0 -0
  94. {streamlink-7.3.0 → streamlink-7.4.0}/docs/ext_argparse.py +0 -0
  95. {streamlink-7.3.0 → streamlink-7.4.0}/docs/ext_github.py +0 -0
  96. {streamlink-7.3.0 → streamlink-7.4.0}/docs/ext_html_template_vars.py +0 -0
  97. {streamlink-7.3.0 → streamlink-7.4.0}/docs/ext_plugins.py +0 -0
  98. {streamlink-7.3.0 → streamlink-7.4.0}/docs/ext_releaseref.py +0 -0
  99. {streamlink-7.3.0 → streamlink-7.4.0}/docs/index.rst +0 -0
  100. {streamlink-7.3.0 → streamlink-7.4.0}/docs/migrations.rst +0 -0
  101. {streamlink-7.3.0 → streamlink-7.4.0}/docs/players.rst +0 -0
  102. {streamlink-7.3.0 → streamlink-7.4.0}/docs/plugins.rst +0 -0
  103. {streamlink-7.3.0 → streamlink-7.4.0}/docs/support.rst +0 -0
  104. {streamlink-7.3.0 → streamlink-7.4.0}/docs/thirdparty.rst +0 -0
  105. {streamlink-7.3.0 → streamlink-7.4.0}/docs-requirements.txt +0 -0
  106. {streamlink-7.3.0 → streamlink-7.4.0}/icon.svg +0 -0
  107. {streamlink-7.3.0 → streamlink-7.4.0}/pyproject.toml +0 -0
  108. {streamlink-7.3.0 → streamlink-7.4.0}/script/build-shell-completions.sh +0 -0
  109. {streamlink-7.3.0 → streamlink-7.4.0}/setup.cfg +0 -0
  110. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/__init__.py +0 -0
  111. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/__main__.py +0 -0
  112. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/api.py +0 -0
  113. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/buffers.py +0 -0
  114. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/cache.py +0 -0
  115. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/compat.py +0 -0
  116. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/exceptions.py +0 -0
  117. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/logger.py +0 -0
  118. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/options.py +0 -0
  119. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/packages/__init__.py +0 -0
  120. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/packages/requests_file.py +0 -0
  121. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugin/__init__.py +0 -0
  122. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugin/api/__init__.py +0 -0
  123. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugin/api/useragents.py +0 -0
  124. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugin/api/validate.py +0 -0
  125. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugin/api/webbrowser/__init__.py +0 -0
  126. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugin/api/webbrowser/aws_waf.py +0 -0
  127. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugin/api/websocket.py +0 -0
  128. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugin/plugin.py +0 -0
  129. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/__init__.py +0 -0
  130. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/abematv.py +0 -0
  131. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/adultswim.py +0 -0
  132. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/albavision.py +0 -0
  133. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/aloula.py +0 -0
  134. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/app17.py +0 -0
  135. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/ard_live.py +0 -0
  136. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/ard_mediathek.py +0 -0
  137. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/artetv.py +0 -0
  138. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/atpchallenger.py +0 -0
  139. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/atresplayer.py +0 -0
  140. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/bbciplayer.py +0 -0
  141. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/bfmtv.py +0 -0
  142. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/bigo.py +0 -0
  143. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/bilibili.py +0 -0
  144. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/blazetv.py +0 -0
  145. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/bloomberg.py +0 -0
  146. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/brightcove.py +0 -0
  147. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/btv.py +0 -0
  148. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/cbsnews.py +0 -0
  149. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/cdnbg.py +0 -0
  150. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/ceskatelevize.py +0 -0
  151. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/chzzk.py +0 -0
  152. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/cinergroup.py +0 -0
  153. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/clubbingtv.py +0 -0
  154. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/cmmedia.py +0 -0
  155. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/cnbce.py +0 -0
  156. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/cnews.py +0 -0
  157. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/dailymotion.py +0 -0
  158. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/dash.py +0 -0
  159. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/delfi.py +0 -0
  160. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/deutschewelle.py +0 -0
  161. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/dlive.py +0 -0
  162. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/dogan.py +0 -0
  163. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/dogus.py +0 -0
  164. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/douyin.py +0 -0
  165. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/drdk.py +0 -0
  166. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/earthcam.py +0 -0
  167. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/euronews.py +0 -0
  168. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/filmon.py +0 -0
  169. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/goltelevision.py +0 -0
  170. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/goodgame.py +0 -0
  171. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/googledrive.py +0 -0
  172. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/gulli.py +0 -0
  173. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/hiplayer.py +0 -0
  174. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/hls.py +0 -0
  175. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/http.py +0 -0
  176. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/htv.py +0 -0
  177. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/huajiao.py +0 -0
  178. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/huya.py +0 -0
  179. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/indihometv.py +0 -0
  180. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/invintus.py +0 -0
  181. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/kugou.py +0 -0
  182. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/livestream.py +0 -0
  183. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/lnk.py +0 -0
  184. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/lrt.py +0 -0
  185. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/ltv_lsm_lv.py +0 -0
  186. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/mangomolo.py +0 -0
  187. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/mdstrm.py +0 -0
  188. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/mediaklikk.py +0 -0
  189. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/mediavitrina.py +0 -0
  190. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/mitele.py +0 -0
  191. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/mixcloud.py +0 -0
  192. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/mjunoon.py +0 -0
  193. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/mrtmk.py +0 -0
  194. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/n13tv.py +0 -0
  195. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/nasaplus.py +0 -0
  196. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/nhkworld.py +0 -0
  197. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/nimotv.py +0 -0
  198. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/nos.py +0 -0
  199. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/nrk.py +0 -0
  200. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/okru.py +0 -0
  201. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/olympicchannel.py +0 -0
  202. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/oneplusone.py +0 -0
  203. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/onetv.py +0 -0
  204. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/openrectv.py +0 -0
  205. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/pandalive.py +0 -0
  206. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/piaulizaportal.py +0 -0
  207. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/piczel.py +0 -0
  208. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/pixiv.py +0 -0
  209. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/pluto.py +0 -0
  210. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/pluzz.py +0 -0
  211. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/radiko.py +0 -0
  212. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/raiplay.py +0 -0
  213. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/reuters.py +0 -0
  214. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/rtpa.py +0 -0
  215. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/rtpplay.py +0 -0
  216. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/rtve.py +0 -0
  217. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/rtvs.py +0 -0
  218. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/ruv.py +0 -0
  219. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/sbscokr.py +0 -0
  220. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/showroom.py +0 -0
  221. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/soop.py +0 -0
  222. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/sportal.py +0 -0
  223. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/sportschau.py +0 -0
  224. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/ssh101.py +0 -0
  225. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/stadium.py +0 -0
  226. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/steam.py +0 -0
  227. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/streann.py +0 -0
  228. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/stv.py +0 -0
  229. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/svtplay.py +0 -0
  230. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/swisstxt.py +0 -0
  231. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/telefe.py +0 -0
  232. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/telemadrid.py +0 -0
  233. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/tf1.py +0 -0
  234. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/tiktok.py +0 -0
  235. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/trovo.py +0 -0
  236. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/turkuvaz.py +0 -0
  237. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/tv360.py +0 -0
  238. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/tv3cat.py +0 -0
  239. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/tv5monde.py +0 -0
  240. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/tv8.py +0 -0
  241. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/tv999.py +0 -0
  242. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/tvibo.py +0 -0
  243. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/tviplayer.py +0 -0
  244. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/tvtoya.py +0 -0
  245. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/twitch.py +0 -0
  246. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/ustreamtv.py +0 -0
  247. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/ustvnow.py +0 -0
  248. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/vidio.py +0 -0
  249. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/vimeo.py +0 -0
  250. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/vinhlongtv.py +0 -0
  251. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/vk.py +0 -0
  252. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/vkvideo.py +0 -0
  253. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/welt.py +0 -0
  254. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/wwenetwork.py +0 -0
  255. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/youtube.py +0 -0
  256. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/yupptv.py +0 -0
  257. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/zattoo.py +0 -0
  258. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/zdf_mediathek.py +0 -0
  259. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/plugins/zeenews.py +0 -0
  260. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/py.typed +0 -0
  261. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/session/__init__.py +0 -0
  262. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/session/options.py +0 -0
  263. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/session/plugins.py +0 -0
  264. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/session/session.py +0 -0
  265. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/__init__.py +0 -0
  266. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/dash/__init__.py +0 -0
  267. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/dash/segment.py +0 -0
  268. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/ffmpegmux.py +0 -0
  269. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/file.py +0 -0
  270. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/filtered.py +0 -0
  271. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/hls/__init__.py +0 -0
  272. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/hls/m3u8.py +0 -0
  273. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/hls/segment.py +0 -0
  274. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/http.py +0 -0
  275. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/segmented/__init__.py +0 -0
  276. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/segmented/segment.py +0 -0
  277. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/segmented/segmented.py +0 -0
  278. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/stream.py +0 -0
  279. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/stream/wrappers.py +0 -0
  280. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/user_input.py +0 -0
  281. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/__init__.py +0 -0
  282. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/args.py +0 -0
  283. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/cache.py +0 -0
  284. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/crypto.py +0 -0
  285. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/data.py +0 -0
  286. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/formatter.py +0 -0
  287. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/l10n.py +0 -0
  288. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/module.py +0 -0
  289. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/named_pipe.py +0 -0
  290. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/parse.py +0 -0
  291. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/path.py +0 -0
  292. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/processoutput.py +0 -0
  293. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/random.py +0 -0
  294. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/socket.py +0 -0
  295. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/times.py +0 -0
  296. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/utils/url.py +0 -0
  297. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/validate/__init__.py +0 -0
  298. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/validate/_exception.py +0 -0
  299. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/validate/_schemas.py +0 -0
  300. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/validate/_validate.py +0 -0
  301. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/validate/_validators.py +0 -0
  302. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/__init__.py +0 -0
  303. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/__init__.py +0 -0
  304. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/client.py +0 -0
  305. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/connection.py +0 -0
  306. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/__init__.py +0 -0
  307. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/browser.py +0 -0
  308. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/debugger.py +0 -0
  309. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/dom.py +0 -0
  310. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/emulation.py +0 -0
  311. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/fetch.py +0 -0
  312. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/input_.py +0 -0
  313. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/inspector.py +0 -0
  314. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/io.py +0 -0
  315. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/network.py +0 -0
  316. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/page.py +0 -0
  317. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/runtime.py +0 -0
  318. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/security.py +0 -0
  319. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/target.py +0 -0
  320. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/devtools/util.py +0 -0
  321. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/cdp/exceptions.py +0 -0
  322. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/chromium.py +0 -0
  323. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/exceptions.py +0 -0
  324. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink/webbrowser/webbrowser.py +0 -0
  325. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink.egg-info/dependency_links.txt +0 -0
  326. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink.egg-info/entry_points.txt +0 -0
  327. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink.egg-info/requires.txt +0 -0
  328. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink.egg-info/top_level.txt +0 -0
  329. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/__init__.py +0 -0
  330. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/__main__.py +0 -0
  331. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/_parser.py +0 -0
  332. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/argparser.py +0 -0
  333. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/compat.py +0 -0
  334. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/console/__init__.py +0 -0
  335. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/console/console.py +0 -0
  336. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/console/progress.py +0 -0
  337. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/console/stream.py +0 -0
  338. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/console/stream_wrapper.py +0 -0
  339. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/console/stream_wrapper.pyi +0 -0
  340. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/console/terminal.py +0 -0
  341. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/console/user_input.py +0 -0
  342. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/console/windows.py +0 -0
  343. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/constants.py +0 -0
  344. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/exceptions.py +0 -0
  345. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/main.py +0 -0
  346. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/output/__init__.py +0 -0
  347. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/output/abc.py +0 -0
  348. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/output/file.py +0 -0
  349. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/output/http.py +0 -0
  350. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/output/player.py +0 -0
  351. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/py.typed +0 -0
  352. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/show_matchers.py +0 -0
  353. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/streamrunner.py +0 -0
  354. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/utils/__init__.py +0 -0
  355. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/utils/formatter.py +0 -0
  356. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/utils/path.py +0 -0
  357. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/utils/player.py +0 -0
  358. {streamlink-7.3.0 → streamlink-7.4.0}/src/streamlink_cli/utils/versioncheck.py +0 -0
  359. {streamlink-7.3.0 → streamlink-7.4.0}/tests/__init__.py +0 -0
  360. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/__init__.py +0 -0
  361. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/console/__init__.py +0 -0
  362. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/console/test_console.py +0 -0
  363. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/console/test_progress.py +0 -0
  364. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/console/test_stream.py +0 -0
  365. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/console/test_stream_wrapper.py +0 -0
  366. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/console/test_terminal.py +0 -0
  367. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/console/test_windows.py +0 -0
  368. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/__init__.py +0 -0
  369. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/conftest.py +0 -0
  370. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/test_can_handle_url.py +0 -0
  371. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/test_check_file_output.py +0 -0
  372. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/test_create_output.py +0 -0
  373. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/test_formatter.py +0 -0
  374. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/test_handle_url.py +0 -0
  375. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/test_logging.py +0 -0
  376. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/test_output_stream.py +0 -0
  377. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/test_output_stream_passthrough.py +0 -0
  378. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/test_player_argv.py +0 -0
  379. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/test_resolve_stream_name.py +0 -0
  380. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/test_setup_config_args.py +0 -0
  381. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/test_show_matchers.py +0 -0
  382. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/main/test_version_check.py +0 -0
  383. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/output/__init__.py +0 -0
  384. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/output/test_file.py +0 -0
  385. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/output/test_player.py +0 -0
  386. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/test_argparser.py +0 -0
  387. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/test_compat.py +0 -0
  388. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/test_streamrunner.py +0 -0
  389. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/utils/__init__.py +0 -0
  390. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/utils/test_formatter.py +0 -0
  391. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/utils/test_path.py +0 -0
  392. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/utils/test_player.py +0 -0
  393. {streamlink-7.3.0 → streamlink-7.4.0}/tests/cli/utils/test_versioncheck.py +0 -0
  394. {streamlink-7.3.0 → streamlink-7.4.0}/tests/conftest.py +0 -0
  395. {streamlink-7.3.0 → streamlink-7.4.0}/tests/mixins/__init__.py +0 -0
  396. {streamlink-7.3.0 → streamlink-7.4.0}/tests/mixins/stream_hls.py +0 -0
  397. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugin/__init__.py +0 -0
  398. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugin/override/testplugin.py +0 -0
  399. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugin/testplugin.py +0 -0
  400. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugin/testplugin_invalid.py +0 -0
  401. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugin/testplugin_missing.py +0 -0
  402. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/__init__.py +0 -0
  403. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/conftest.py +0 -0
  404. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_abematv.py +0 -0
  405. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_adultswim.py +0 -0
  406. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_albavision.py +0 -0
  407. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_aloula.py +0 -0
  408. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_app17.py +0 -0
  409. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_ard_live.py +0 -0
  410. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_ard_mediathek.py +0 -0
  411. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_artetv.py +0 -0
  412. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_atpchallenger.py +0 -0
  413. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_atresplayer.py +0 -0
  414. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_bbciplayer.py +0 -0
  415. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_bfmtv.py +0 -0
  416. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_bigo.py +0 -0
  417. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_bilibili.py +0 -0
  418. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_blazetv.py +0 -0
  419. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_bloomberg.py +0 -0
  420. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_brightcove.py +0 -0
  421. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_btv.py +0 -0
  422. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_cbsnews.py +0 -0
  423. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_cdnbg.py +0 -0
  424. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_ceskatelevize.py +0 -0
  425. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_chzzk.py +0 -0
  426. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_cinergroup.py +0 -0
  427. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_clubbingtv.py +0 -0
  428. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_cmmedia.py +0 -0
  429. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_cnbce.py +0 -0
  430. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_cnews.py +0 -0
  431. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_dailymotion.py +0 -0
  432. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_dash.py +0 -0
  433. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_delfi.py +0 -0
  434. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_deutschewelle.py +0 -0
  435. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_dlive.py +0 -0
  436. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_dogan.py +0 -0
  437. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_dogus.py +0 -0
  438. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_douyin.py +0 -0
  439. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_drdk.py +0 -0
  440. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_earthcam.py +0 -0
  441. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_euronews.py +0 -0
  442. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_filmon.py +0 -0
  443. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_goltelevision.py +0 -0
  444. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_goodgame.py +0 -0
  445. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_googledrive.py +0 -0
  446. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_gulli.py +0 -0
  447. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_hiplayer.py +0 -0
  448. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_hls.py +0 -0
  449. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_http.py +0 -0
  450. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_htv.py +0 -0
  451. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_huajiao.py +0 -0
  452. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_huya.py +0 -0
  453. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_indihometv.py +0 -0
  454. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_invintus.py +0 -0
  455. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_kick.py +0 -0
  456. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_kugou.py +0 -0
  457. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_livestream.py +0 -0
  458. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_lnk.py +0 -0
  459. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_lrt.py +0 -0
  460. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_ltv_lsm_lv.py +0 -0
  461. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_mangomolo.py +0 -0
  462. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_mdstrm.py +0 -0
  463. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_mediaklikk.py +0 -0
  464. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_mediavitrina.py +0 -0
  465. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_mitele.py +0 -0
  466. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_mixcloud.py +0 -0
  467. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_mjunoon.py +0 -0
  468. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_mrtmk.py +0 -0
  469. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_n13tv.py +0 -0
  470. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_nasaplus.py +0 -0
  471. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_nhkworld.py +0 -0
  472. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_nicolive.py +0 -0
  473. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_nimotv.py +0 -0
  474. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_nos.py +0 -0
  475. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_nrk.py +0 -0
  476. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_okru.py +0 -0
  477. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_olympicchannel.py +0 -0
  478. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_oneplusone.py +0 -0
  479. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_onetv.py +0 -0
  480. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_openrectv.py +0 -0
  481. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_pandalive.py +0 -0
  482. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_piaulizaportal.py +0 -0
  483. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_picarto.py +0 -0
  484. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_piczel.py +0 -0
  485. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_pixiv.py +0 -0
  486. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_pluto.py +0 -0
  487. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_pluzz.py +0 -0
  488. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_radiko.py +0 -0
  489. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_raiplay.py +0 -0
  490. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_reuters.py +0 -0
  491. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_rtpa.py +0 -0
  492. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_rtpplay.py +0 -0
  493. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_rtve.py +0 -0
  494. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_rtvs.py +0 -0
  495. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_ruv.py +0 -0
  496. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_sbscokr.py +0 -0
  497. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_showroom.py +0 -0
  498. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_soop.py +0 -0
  499. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_sportal.py +0 -0
  500. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_sportschau.py +0 -0
  501. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_ssh101.py +0 -0
  502. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_stadium.py +0 -0
  503. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_steam.py +0 -0
  504. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_streann.py +0 -0
  505. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_stv.py +0 -0
  506. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_svtplay.py +0 -0
  507. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_swisstxt.py +0 -0
  508. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_telefe.py +0 -0
  509. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_telemadrid.py +0 -0
  510. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_tf1.py +0 -0
  511. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_tiktok.py +0 -0
  512. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_trovo.py +0 -0
  513. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_turkuvaz.py +0 -0
  514. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_tv360.py +0 -0
  515. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_tv3cat.py +0 -0
  516. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_tv5monde.py +0 -0
  517. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_tv8.py +0 -0
  518. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_tv999.py +0 -0
  519. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_tvibo.py +0 -0
  520. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_tviplayer.py +0 -0
  521. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_tvtoya.py +0 -0
  522. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_twitcasting.py +0 -0
  523. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_twitch.py +0 -0
  524. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_ustreamtv.py +0 -0
  525. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_ustvnow.py +0 -0
  526. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_vidio.py +0 -0
  527. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_vimeo.py +0 -0
  528. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_vinhlongtv.py +0 -0
  529. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_vk.py +0 -0
  530. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_vkvideo.py +0 -0
  531. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_welt.py +0 -0
  532. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_wwenetwork.py +0 -0
  533. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_youtube.py +0 -0
  534. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_yupptv.py +0 -0
  535. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_zattoo.py +0 -0
  536. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_zdf_mediathek.py +0 -0
  537. {streamlink-7.3.0 → streamlink-7.4.0}/tests/plugins/test_zeenews.py +0 -0
  538. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/cli/config/custom +0 -0
  539. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/cli/config/primary +0 -0
  540. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/cli/config/primary.testplugin +0 -0
  541. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/cli/config/secondary +0 -0
  542. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/cli/config/secondary.testplugin +0 -0
  543. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_1.mpd +0 -0
  544. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_10.mpd +0 -0
  545. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_11_static.mpd +0 -0
  546. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_2.mpd +0 -0
  547. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_3.mpd +0 -0
  548. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_8.mpd +0 -0
  549. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_9.mpd +0 -0
  550. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_baseurl_nested.mpd +0 -0
  551. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_baseurl_urljoin.mpd +0 -0
  552. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_dynamic_no_publish_time_timeline_with_start.mpd +0 -0
  553. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_dynamic_no_publish_time_timeline_without_start.mpd +0 -0
  554. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_dynamic_segment_list_no_duration.mpd +0 -0
  555. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_dynamic_segment_list_p1.mpd +0 -0
  556. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_dynamic_segment_list_p2.mpd +0 -0
  557. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_dynamic_segment_list_p3.mpd +0 -0
  558. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_dynamic_segment_list_p4.mpd +0 -0
  559. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_dynamic_segment_list_p5.mpd +0 -0
  560. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_dynamic_timeline_continued_p1.mpd +0 -0
  561. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_dynamic_timeline_continued_p2.mpd +0 -0
  562. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_no_segment_list_or_template.mpd +0 -0
  563. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_segment_list.mpd +0 -0
  564. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_segments_byterange.mpd +0 -0
  565. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_segments_dynamic_number.mpd +0 -0
  566. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_static_no_publish_time.mpd +0 -0
  567. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_suggested_presentation_delay.mpd +0 -0
  568. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/dash/test_timeline_ids.mpd +0 -0
  569. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/hls/test_1.m3u8 +0 -0
  570. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/hls/test_date.m3u8 +0 -0
  571. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/hls/test_master.m3u8 +0 -0
  572. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/hls/test_master_twitch_vod.m3u8 +0 -0
  573. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/hls/test_media_language.m3u8 +0 -0
  574. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/hls/test_media_language_special.m3u8 +0 -0
  575. {streamlink-7.3.0 → streamlink-7.4.0}/tests/resources/hls/test_multivariant_bandwidth.m3u8 +0 -0
  576. {streamlink-7.3.0 → streamlink-7.4.0}/tests/session/__init__.py +0 -0
  577. {streamlink-7.3.0 → streamlink-7.4.0}/tests/session/test_options.py +0 -0
  578. {streamlink-7.3.0 → streamlink-7.4.0}/tests/session/test_plugins.py +0 -0
  579. {streamlink-7.3.0 → streamlink-7.4.0}/tests/session/test_session.py +0 -0
  580. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/__init__.py +0 -0
  581. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/dash/__init__.py +0 -0
  582. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/dash/test_manifest.py +0 -0
  583. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/hls/__init__.py +0 -0
  584. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/hls/test_hls_filtered.py +0 -0
  585. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/hls/test_m3u8.py +0 -0
  586. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/test_ffmpegmux.py +0 -0
  587. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/test_file.py +0 -0
  588. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/test_segmented.py +0 -0
  589. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/test_stream_json.py +0 -0
  590. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/test_stream_to_url.py +0 -0
  591. {streamlink-7.3.0 → streamlink-7.4.0}/tests/stream/test_stream_wrappers.py +0 -0
  592. {streamlink-7.3.0 → streamlink-7.4.0}/tests/test_api_websocket.py +0 -0
  593. {streamlink-7.3.0 → streamlink-7.4.0}/tests/test_buffers.py +0 -0
  594. {streamlink-7.3.0 → streamlink-7.4.0}/tests/test_logger.py +0 -0
  595. {streamlink-7.3.0 → streamlink-7.4.0}/tests/test_options.py +0 -0
  596. {streamlink-7.3.0 → streamlink-7.4.0}/tests/test_plugin.py +0 -0
  597. {streamlink-7.3.0 → streamlink-7.4.0}/tests/test_plugin_userinput.py +0 -0
  598. {streamlink-7.3.0 → streamlink-7.4.0}/tests/test_plugins.py +0 -0
  599. {streamlink-7.3.0 → streamlink-7.4.0}/tests/test_streamlink_api.py +0 -0
  600. {streamlink-7.3.0 → streamlink-7.4.0}/tests/testutils/__init__.py +0 -0
  601. {streamlink-7.3.0 → streamlink-7.4.0}/tests/testutils/handshake.py +0 -0
  602. {streamlink-7.3.0 → streamlink-7.4.0}/tests/testutils/test_handshake.py +0 -0
  603. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/__init__.py +0 -0
  604. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_args.py +0 -0
  605. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_cache.py +0 -0
  606. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_crypto.py +0 -0
  607. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_data.py +0 -0
  608. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_formatter.py +0 -0
  609. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_l10n.py +0 -0
  610. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_module.py +0 -0
  611. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_named_pipe.py +0 -0
  612. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_parse.py +0 -0
  613. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_path.py +0 -0
  614. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_processoutput.py +0 -0
  615. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_random.py +0 -0
  616. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_times.py +0 -0
  617. {streamlink-7.3.0 → streamlink-7.4.0}/tests/utils/test_url.py +0 -0
  618. {streamlink-7.3.0 → streamlink-7.4.0}/tests/webbrowser/__init__.py +0 -0
  619. {streamlink-7.3.0 → streamlink-7.4.0}/tests/webbrowser/cdp/__init__.py +0 -0
  620. {streamlink-7.3.0 → streamlink-7.4.0}/tests/webbrowser/cdp/conftest.py +0 -0
  621. {streamlink-7.3.0 → streamlink-7.4.0}/tests/webbrowser/cdp/test_client.py +0 -0
  622. {streamlink-7.3.0 → streamlink-7.4.0}/tests/webbrowser/cdp/test_connection.py +0 -0
  623. {streamlink-7.3.0 → streamlink-7.4.0}/tests/webbrowser/conftest.py +0 -0
  624. {streamlink-7.3.0 → streamlink-7.4.0}/tests/webbrowser/test_chromium.py +0 -0
  625. {streamlink-7.3.0 → streamlink-7.4.0}/tests/webbrowser/test_webbrowser.py +0 -0
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## streamlink 7.4.0 (2025-06-08)
4
+
5
+ - Added: `encoding` keyword to all HTTP request methods to override the response content encoding ([#6544](https://github.com/streamlink/streamlink/pull/6544))
6
+ - Added: debug log message for the available DASH periods (id or index) ([#6521](https://github.com/streamlink/streamlink/pull/6521))
7
+ - Fixed: `LookupError` when selecting an invalid DASH period ([#6518](https://github.com/streamlink/streamlink/pull/6518))
8
+ - Updated plugins:
9
+ - blasttv: new plugin ([#6547](https://github.com/streamlink/streamlink/pull/6547))
10
+ - kick: fixed 403 API responses by solving the JS challenge using the webbrowser API ([#6500](https://github.com/streamlink/streamlink/pull/6500))
11
+ - nicolive: fixed plugin metadata by forcing UTF-8 encoding ([#6544](https://github.com/streamlink/streamlink/pull/6544))
12
+ - picarto: fixed validation schema and fixed multi-stream selection ([#6512](https://github.com/streamlink/streamlink/pull/6512))
13
+ - tvp: rewritten and fixed plugin ([#6535](https://github.com/streamlink/streamlink/pull/6535))
14
+ - twitcasting: fixed plugin by switching to new websocket+HLS streams ([#6540](https://github.com/streamlink/streamlink/pull/6540))
15
+ - vtvgo: removed plugin ([#6516](https://github.com/streamlink/streamlink/pull/6516))
16
+ - Tests: fixed py314 test failures ([#6527](https://github.com/streamlink/streamlink/pull/6527))
17
+ - Tests: fixed some HLS tests failing in rare cases ([#6536](https://github.com/streamlink/streamlink/pull/6536))
18
+
19
+ [Full changelog](https://github.com/streamlink/streamlink/compare/7.3.0...7.4.0)
20
+
21
+
3
22
  ## streamlink 7.3.0 (2025-04-26)
4
23
 
5
24
  - Changed: download progress to use the console output stream rather than always `stderr`, which previously caused log and progress messages to be interweaved ([#6497](https://github.com/streamlink/streamlink/pull/6497), [#6496](https://github.com/streamlink/streamlink/pull/6496))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: streamlink
3
- Version: 7.3.0
3
+ Version: 7.4.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
@@ -14,10 +14,11 @@ pytest-cov
14
14
  coverage[toml]
15
15
 
16
16
  # code-linting / code-formatting
17
- ruff ==0.11.5
17
+ ruff ==0.11.12
18
18
 
19
19
  # typing
20
- mypy[faster-cache] ==1.15.0
20
+ mypy[faster-cache] ==1.16.0 ; python_version<'3.14'
21
+ mypy ==1.16.0 ; python_version>='3.14' # orjson (faster-cache mypy extra) currently fails building on 3.14
21
22
  typing-extensions >=4.0.0
22
23
  lxml-stubs
23
24
  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" "Apr 26, 2025" "7.3.0" "Streamlink"
30
+ .TH "STREAMLINK" "1" "Jun 08, 2025" "7.4.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
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## streamlink 7.4.0 (2025-06-08)
4
+
5
+ - Added: `encoding` keyword to all HTTP request methods to override the response content encoding ([#6544](https://github.com/streamlink/streamlink/pull/6544))
6
+ - Added: debug log message for the available DASH periods (id or index) ([#6521](https://github.com/streamlink/streamlink/pull/6521))
7
+ - Fixed: `LookupError` when selecting an invalid DASH period ([#6518](https://github.com/streamlink/streamlink/pull/6518))
8
+ - Updated plugins:
9
+ - blasttv: new plugin ([#6547](https://github.com/streamlink/streamlink/pull/6547))
10
+ - kick: fixed 403 API responses by solving the JS challenge using the webbrowser API ([#6500](https://github.com/streamlink/streamlink/pull/6500))
11
+ - nicolive: fixed plugin metadata by forcing UTF-8 encoding ([#6544](https://github.com/streamlink/streamlink/pull/6544))
12
+ - picarto: fixed validation schema and fixed multi-stream selection ([#6512](https://github.com/streamlink/streamlink/pull/6512))
13
+ - tvp: rewritten and fixed plugin ([#6535](https://github.com/streamlink/streamlink/pull/6535))
14
+ - twitcasting: fixed plugin by switching to new websocket+HLS streams ([#6540](https://github.com/streamlink/streamlink/pull/6540))
15
+ - vtvgo: removed plugin ([#6516](https://github.com/streamlink/streamlink/pull/6516))
16
+ - Tests: fixed py314 test failures ([#6527](https://github.com/streamlink/streamlink/pull/6527))
17
+ - Tests: fixed some HLS tests failing in rare cases ([#6536](https://github.com/streamlink/streamlink/pull/6536))
18
+
19
+ [Full changelog](https://github.com/streamlink/streamlink/compare/7.3.0...7.4.0)
20
+
21
+
3
22
  ## streamlink 7.3.0 (2025-04-26)
4
23
 
5
24
  - Changed: download progress to use the console output stream rather than always `stderr`, which previously caused log and progress messages to be interweaved ([#6497](https://github.com/streamlink/streamlink/pull/6497), [#6496](https://github.com/streamlink/streamlink/pull/6496))
@@ -73,6 +73,13 @@ Windows
73
73
  choco install streamlink
74
74
 
75
75
  `Installing Chocolatey packages`_
76
+ * - :octicon:`package` `MSYS2`_
77
+ - .. code-block:: bat
78
+
79
+ pacman -Ss streamlink
80
+ pacman -S mingw-w64-x86_64-streamlink
81
+
82
+ `Installing MSYS2 packages`_
76
83
  * - :octicon:`package-dependents` `Scoop`_
77
84
  - .. code-block::
78
85
 
@@ -88,9 +95,11 @@ Windows
88
95
  `Installing Winget packages`_
89
96
 
90
97
  .. _Chocolatey: https://chocolatey.org/packages/streamlink
98
+ .. _MSYS2: https://packages.msys2.org/base/mingw-w64-streamlink
91
99
  .. _Scoop: https://scoop.sh/#/apps?q=streamlink&s=0&d=1&o=true
92
100
  .. _Windows Package Manager: https://github.com/microsoft/winget-pkgs/tree/master/manifests/s/Streamlink/Streamlink
93
101
  .. _Installing Chocolatey packages: https://chocolatey.org
102
+ .. _Installing MSYS2 packages: https://www.msys2.org
94
103
  .. _Installing Scoop packages: https://scoop.sh
95
104
  .. _Installing Winget packages: https://docs.microsoft.com/en-us/windows/package-manager/
96
105
 
@@ -235,47 +244,6 @@ Linux and BSD
235
244
  .. _NixOS channel: https://search.nixos.org/packages?show=streamlink&query=streamlink
236
245
 
237
246
 
238
- Package maintainers
239
- -------------------
240
-
241
- .. list-table::
242
- :header-rows: 1
243
- :class: table-custom-layout
244
-
245
- * - Distribution / Platform
246
- - Maintainer
247
- * - Alpine Linux
248
- - Hoang Nguyen <folliekazetani at protonmail.com>
249
- * - ALT Linux
250
- - Vitaly Lipatov <lav at altlinux.ru>
251
- * - Arch
252
- - Giancarlo Razzolini <grazzolini at archlinux.org>
253
- * - Arch (aur, git)
254
- - Josip Ponjavic <josipponjavic at gmail.com>
255
- * - Chocolatey
256
- - Scott Walters <me at scowalt.com>
257
- * - Debian
258
- - Alexis Murzeau <amubtdx at gmail.com>
259
- * - Fedora
260
- - Mohamed El Morabity <melmorabity at fedoraproject.org>
261
- * - FreeBSD
262
- - Takefu <takefu at airport.fm>
263
- * - Gentoo
264
- - soredake <fdsfgs at krutt.org>
265
- * - NixOS
266
- - Tuomas Tynkkynen <tuomas.tynkkynen at iki.fi>
267
- * - openSUSE
268
- - Simon Puchert <simonpuchert at alice.de>
269
- * - Solus
270
- - Joey Riches <josephriches at gmail.com>
271
- * - Void
272
- - Tom Strausbaugh <tstrausbaugh at straustech.net>
273
- * - Windows binaries
274
- - Sebastian Meyer <mail at bastimeyer.de>
275
- * - Linux AppImages
276
- - Sebastian Meyer <mail at bastimeyer.de>
277
-
278
-
279
247
  Package availability
280
248
  --------------------
281
249
 
@@ -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.3.0",
100
+ version="7.4.0",
101
101
  )
@@ -0,0 +1 @@
1
+ __version__ = "7.4.0"
@@ -0,0 +1,114 @@
1
+ """
2
+ $description Esports tournaments run by BlastTV, based in Denmark.
3
+ $url blast.tv
4
+ $type live, vod
5
+ $metadata id
6
+ $metadata title
7
+ """
8
+
9
+ import re
10
+
11
+ from streamlink.plugin import Plugin, pluginmatcher
12
+ from streamlink.plugin.api import validate
13
+ from streamlink.stream.hls import HLSStream
14
+
15
+
16
+ @pluginmatcher(
17
+ name="live",
18
+ pattern=re.compile(r"^https?://(?:www\.)?blast\.tv(?:/?$|/live(?:/(?P<channel>[a-z0-9_-]+))?)"),
19
+ )
20
+ @pluginmatcher(
21
+ name="vod",
22
+ pattern=re.compile(r"^https?://(?:www\.)?blast\.tv/(?P<game>[^/]+)/tournaments/[^/]+/match/(?P<shortid>\w+)/"),
23
+ )
24
+ class BlastTv(Plugin):
25
+ _URL_API_LIVE = "https://api.blast.tv/v1/broadcasts/live"
26
+ _URL_API_MATCHES = "https://api.blast.tv/v2/games/{game}/matches/{shortid}"
27
+ _URL_API_REWATCH = "https://api.blast.tv/v1/videos/rewatch/{id}"
28
+
29
+ def _get_live(self):
30
+ channel = self.match["channel"]
31
+
32
+ live_channels = self.session.http.get(
33
+ self._URL_API_LIVE,
34
+ schema=validate.Schema(
35
+ validate.parse_json(),
36
+ [
37
+ {
38
+ "id": str,
39
+ "slug": str,
40
+ "priority": int,
41
+ "title": str,
42
+ "videoSrc": validate.any("", validate.url(path=validate.endswith(".m3u8"))),
43
+ "videoAlternativeSrc": validate.any("", validate.url(scheme="http")),
44
+ },
45
+ ],
46
+ ),
47
+ )
48
+
49
+ for live_channel in sorted(live_channels, key=lambda x: x["priority"]):
50
+ if channel and channel != live_channel["slug"]:
51
+ continue
52
+
53
+ if live_channel["videoSrc"]:
54
+ self.id = live_channel["id"]
55
+ self.title = live_channel["title"]
56
+ return HLSStream.parse_variant_playlist(self.session, live_channel["videoSrc"])
57
+
58
+ if live_channel["videoAlternativeSrc"]:
59
+ return self.session.streams(live_channel["videoAlternativeSrc"])
60
+
61
+ def _get_vod(self):
62
+ self.id, external_stream_url = self.session.http.get(
63
+ self._URL_API_MATCHES.format(
64
+ game=self.match["game"],
65
+ shortid=self.match["shortid"],
66
+ ),
67
+ acceptable_status=(200, 404),
68
+ schema=validate.Schema(
69
+ validate.parse_json(),
70
+ {
71
+ validate.optional("id"): str,
72
+ validate.optional("metadata"): validate.all(
73
+ {
74
+ validate.optional("externalStreamUrl"): validate.any("", validate.url(scheme="http")),
75
+ },
76
+ validate.get("externalStreamUrl"),
77
+ ),
78
+ },
79
+ validate.union_get(
80
+ "id",
81
+ "metadata",
82
+ ),
83
+ ),
84
+ )
85
+ if not self.id:
86
+ return
87
+
88
+ if external_stream_url:
89
+ return self.session.streams(external_stream_url)
90
+
91
+ hls_url = self.session.http.get(
92
+ self._URL_API_REWATCH.format(id=self.id),
93
+ acceptable_status=(200, 404),
94
+ schema=validate.Schema(
95
+ validate.parse_json(),
96
+ {
97
+ validate.optional("src"): validate.url(path=validate.endswith(".m3u8")),
98
+ },
99
+ validate.get("src"),
100
+ ),
101
+ )
102
+ if not hls_url:
103
+ return
104
+
105
+ return HLSStream.parse_variant_playlist(self.session, hls_url)
106
+
107
+ def _get_streams(self):
108
+ if self.matches["live"]:
109
+ return self._get_live()
110
+ if self.matches["vod"]:
111
+ return self._get_vod()
112
+
113
+
114
+ __plugin__ = BlastTv
@@ -2,12 +2,16 @@
2
2
  $description Global live-streaming and video hosting social platform owned by Kick Streaming Pty Ltd.
3
3
  $url kick.com
4
4
  $type live, vod
5
+ $webbrowser Required for solving a JS challenge that allows access to the Kick API
5
6
  $metadata id
6
7
  $metadata author
7
8
  $metadata category
8
9
  $metadata title
9
10
  """
10
11
 
12
+ from __future__ import annotations
13
+
14
+ import logging
11
15
  import re
12
16
  from ssl import OP_NO_TICKET
13
17
 
@@ -18,6 +22,9 @@ from streamlink.session.http import SSLContextAdapter
18
22
  from streamlink.stream.hls import HLSStream
19
23
 
20
24
 
25
+ log = logging.getLogger(__name__)
26
+
27
+
21
28
  class KickAdapter(SSLContextAdapter):
22
29
  def get_ssl_context(self):
23
30
  ctx = super().get_ssl_context()
@@ -39,6 +46,9 @@ class KickAdapter(SSLContextAdapter):
39
46
  pattern=re.compile(r"https?://(?:\w+\.)?kick\.com/(?!video/)(?P<channel>[^/?]+)(?:\?clip=|/clips/)(?P<clip>[^?&]+)"),
40
47
  )
41
48
  class Kick(Plugin):
49
+ _CACHE_HEADERS = "headers"
50
+ _CACHE_EXPIRATION = 3600 * 24 * 30
51
+
42
52
  _URL_API_LIVESTREAM = "https://kick.com/api/v2/channels/{channel}/livestream"
43
53
  _URL_API_VOD = "https://kick.com/api/v1/video/{vod}"
44
54
  _URL_API_CLIP = "https://kick.com/api/v2/clips/{clip}"
@@ -46,14 +56,62 @@ class Kick(Plugin):
46
56
  def __init__(self, *args, **kwargs):
47
57
  super().__init__(*args, **kwargs)
48
58
  self.session.http.mount("https://kick.com/", KickAdapter())
59
+ self.session.http.headers.update(self.cache.get(self._CACHE_HEADERS, {}))
49
60
  self.session.http.headers.update({
50
61
  "Referer": self.url,
51
- "User-Agent": useragents.CHROME,
52
62
  })
53
63
 
54
- @staticmethod
55
- def _get_api_headers():
56
- if not (m := re.search(r"Chrome/(?P<full>(?P<main>\d+)\S+)", useragents.CHROME)):
64
+ def _get_cookies_from_webbrowser(self) -> bool:
65
+ from streamlink.compat import BaseExceptionGroup # noqa: PLC0415
66
+ from streamlink.webbrowser.cdp import CDPClient, CDPClientSession # noqa: PLC0415
67
+ from streamlink.webbrowser.cdp.devtools import fetch, network # noqa: PLC0415
68
+
69
+ async def on_main(client_session: CDPClientSession, request: fetch.RequestPaused):
70
+ # get Chromium's request headers, update HTTP session headers and also cache them
71
+ self.session.http.headers.update(request.request.headers)
72
+ self.cache.set(self._CACHE_HEADERS, request.request.headers, expires=self._CACHE_EXPIRATION)
73
+ await client_session.continue_request(request)
74
+
75
+ async def get_challenge_cookies(client: CDPClient):
76
+ client_session: CDPClientSession
77
+ async with client.session() as client_session:
78
+ client_session.add_request_handler(on_main, url_pattern=self.url, on_request=True)
79
+ async with client_session.navigate(self.url) as frame_id:
80
+ await client_session.loaded(frame_id)
81
+ return await client_session.cdp_session.send(network.get_cookies())
82
+
83
+ log.info("Solving JS challenge")
84
+
85
+ try:
86
+ cookies: list[network.Cookie] = CDPClient.launch(self.session, get_challenge_cookies)
87
+ except BaseExceptionGroup:
88
+ log.exception("Failed solving JS challenge")
89
+ except Exception as err:
90
+ log.error(err)
91
+ else:
92
+ for cookie in cookies:
93
+ self.session.http.cookies.set(
94
+ name=cookie.name,
95
+ value=cookie.value,
96
+ domain=cookie.domain,
97
+ path=cookie.path,
98
+ expires=cookie.expires,
99
+ )
100
+
101
+ log.info("JS challenge solved, storing cookies")
102
+ self.save_cookies()
103
+
104
+ return True
105
+
106
+ return False
107
+
108
+ def _get_api_headers(self):
109
+ # _get_cookies() from above updates the session headers with Chromium's initial request headers
110
+ ua = self.session.http.headers.get("User-Agent", useragents.CHROME)
111
+ if "Chrome/" not in ua:
112
+ ua = useragents.CHROME
113
+
114
+ if not (m := re.search(r"Chrome/(?P<full>(?P<main>\d+)\S+)", ua)):
57
115
  raise PluginError("Error while parsing Chromium User-Agent")
58
116
 
59
117
  return {
@@ -74,8 +132,22 @@ class Kick(Plugin):
74
132
  "sec-fetch-user": "?1",
75
133
  }
76
134
 
77
- def _query_api(self, url, schema):
78
- schema = validate.Schema(
135
+ def _query_api(self, url, schema, secondary_attempt=False):
136
+ res = self.session.http.get(
137
+ url,
138
+ headers=self._get_api_headers(),
139
+ raise_for_status=False,
140
+ )
141
+ if res.status_code == 403 and not secondary_attempt and self._get_cookies_from_webbrowser():
142
+ # re-attempt API query after getting (new) cookies
143
+ return self._query_api(url, schema, secondary_attempt=True)
144
+
145
+ try:
146
+ res.raise_for_status()
147
+ except Exception as err:
148
+ raise PluginError(f"Error while querying Kick API: {err or '403 status response'}") from err
149
+
150
+ main_schema = validate.Schema(
79
151
  validate.parse_json(),
80
152
  validate.any(
81
153
  validate.all(
@@ -92,16 +164,7 @@ class Kick(Plugin):
92
164
  ),
93
165
  ),
94
166
  )
95
-
96
- res = self.session.http.get(
97
- url,
98
- headers=self._get_api_headers(),
99
- raise_for_status=False,
100
- )
101
- if res.status_code == 403:
102
- raise PluginError("Error while accessing Kick API: status code 403")
103
-
104
- restype, data = schema.validate(res.text)
167
+ restype, data = main_schema.validate(res.text)
105
168
 
106
169
  if restype == "error":
107
170
  raise PluginError(f"Error while querying Kick API: {data or 'unknown error'}")
@@ -269,6 +269,7 @@ class NicoLive(Plugin):
269
269
  def get_data(self):
270
270
  return self.session.http.get(
271
271
  self.url,
272
+ encoding="utf-8",
272
273
  schema=validate.Schema(
273
274
  validate.parse_html(),
274
275
  validate.xml_find(".//script[@id='embedded-data'][@data-props]"),
@@ -50,21 +50,22 @@ class Picarto(Plugin):
50
50
  "channel": validate.any(
51
51
  None,
52
52
  {
53
- "stream_name": str,
53
+ "id": int,
54
54
  "title": str,
55
- "online": bool,
56
55
  "private": bool,
57
- "categories": [{"label": str}],
56
+ "categories": [{"name": str}],
58
57
  },
59
58
  ),
60
59
  "getMultiStreams": validate.any(
61
60
  None,
62
61
  {
63
- "multistream": bool,
64
62
  "streams": [
65
63
  {
64
+ "id": int,
65
+ "channelId": int,
66
66
  "name": str,
67
67
  "online": bool,
68
+ "stream_name": str,
68
69
  },
69
70
  ],
70
71
  },
@@ -80,28 +81,24 @@ class Picarto(Plugin):
80
81
  ),
81
82
  )
82
83
  if not channel or not multistreams or not loadbalancer:
83
- log.debug("Missing channel or streaming data")
84
84
  return
85
85
 
86
- log.trace(f"loadbalancer={loadbalancer!r}")
87
- log.trace(f"channel={channel!r}")
88
- log.trace(f"multistreams={multistreams!r}")
89
-
90
- if not channel["online"]:
91
- log.error("User is not online")
86
+ if channel["private"]:
87
+ log.error("This is a private stream")
92
88
  return
93
89
 
94
- if channel["private"]:
95
- log.info("This is a private stream")
90
+ user_id = channel["id"]
91
+ if not (stream := next((stream for stream in multistreams["streams"] if stream["channelId"] == user_id), None)):
92
+ log.error("No available stream found in 'multistreams' data")
96
93
  return
97
94
 
98
95
  self.author = username
99
- self.category = channel["categories"][0]["label"]
96
+ self.category = next(iter(channel["categories"]), {}).get("name")
100
97
  self.title = channel["title"]
101
98
 
102
99
  hls_url = self.HLS_URL.format(
103
100
  netloc=loadbalancer["url"],
104
- file_name=channel["stream_name"],
101
+ file_name=stream["stream_name"],
105
102
  )
106
103
 
107
104
  return HLSStream.parse_variant_playlist(self.session, hls_url)
@@ -145,13 +142,9 @@ class Picarto(Plugin):
145
142
  validate.get(("data", "video")),
146
143
  ),
147
144
  )
148
-
149
145
  if not vod_data:
150
- log.debug("Missing video data")
151
146
  return
152
147
 
153
- log.trace(f"vod_data={vod_data!r}")
154
-
155
148
  self.author = vod_data["channel"]["name"]
156
149
  self.category = "VOD"
157
150
  self.title = vod_data["title"]