webatem 2.0.1__tar.gz → 2.0.2__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 (134) hide show
  1. {webatem-2.0.1 → webatem-2.0.2}/PKG-INFO +8 -1
  2. {webatem-2.0.1 → webatem-2.0.2}/README.md +7 -0
  3. {webatem-2.0.1 → webatem-2.0.2}/atem_control/media_pool/watcher.py +3 -1
  4. {webatem-2.0.1 → webatem-2.0.2}/pyproject.toml +1 -1
  5. {webatem-2.0.1 → webatem-2.0.2}/webatem.egg-info/PKG-INFO +8 -1
  6. {webatem-2.0.1 → webatem-2.0.2}/LICENSE +0 -0
  7. {webatem-2.0.1 → webatem-2.0.2}/atem_control/__init__.py +0 -0
  8. {webatem-2.0.1 → webatem-2.0.2}/atem_control/activity.py +0 -0
  9. {webatem-2.0.1 → webatem-2.0.2}/atem_control/apps.py +0 -0
  10. {webatem-2.0.1 → webatem-2.0.2}/atem_control/control/__init__.py +0 -0
  11. {webatem-2.0.1 → webatem-2.0.2}/atem_control/control/activity.py +0 -0
  12. {webatem-2.0.1 → webatem-2.0.2}/atem_control/control/commands.py +0 -0
  13. {webatem-2.0.1 → webatem-2.0.2}/atem_control/control/consumer.py +0 -0
  14. {webatem-2.0.1 → webatem-2.0.2}/atem_control/control/device_api.py +0 -0
  15. {webatem-2.0.1 → webatem-2.0.2}/atem_control/control/logging.py +0 -0
  16. {webatem-2.0.1 → webatem-2.0.2}/atem_control/control/views.py +0 -0
  17. {webatem-2.0.1 → webatem-2.0.2}/atem_control/discovery.py +0 -0
  18. {webatem-2.0.1 → webatem-2.0.2}/atem_control/hooks.py +0 -0
  19. {webatem-2.0.1 → webatem-2.0.2}/atem_control/hyperdeck/__init__.py +0 -0
  20. {webatem-2.0.1 → webatem-2.0.2}/atem_control/hyperdeck/connection.py +0 -0
  21. {webatem-2.0.1 → webatem-2.0.2}/atem_control/hyperdeck/views.py +0 -0
  22. {webatem-2.0.1 → webatem-2.0.2}/atem_control/ip_upload_lock.py +0 -0
  23. {webatem-2.0.1 → webatem-2.0.2}/atem_control/media_pool/__init__.py +0 -0
  24. {webatem-2.0.1 → webatem-2.0.2}/atem_control/media_pool/broadcast.py +0 -0
  25. {webatem-2.0.1 → webatem-2.0.2}/atem_control/media_pool/views.py +0 -0
  26. {webatem-2.0.1 → webatem-2.0.2}/atem_control/migrations/0001_initial.py +0 -0
  27. {webatem-2.0.1 → webatem-2.0.2}/atem_control/migrations/0002_legacy_log.py +0 -0
  28. {webatem-2.0.1 → webatem-2.0.2}/atem_control/migrations/__init__.py +0 -0
  29. {webatem-2.0.1 → webatem-2.0.2}/atem_control/models.py +0 -0
  30. {webatem-2.0.1 → webatem-2.0.2}/atem_control/netutil.py +0 -0
  31. {webatem-2.0.1 → webatem-2.0.2}/atem_control/profile/__init__.py +0 -0
  32. {webatem-2.0.1 → webatem-2.0.2}/atem_control/profile/dialog.py +0 -0
  33. {webatem-2.0.1 → webatem-2.0.2}/atem_control/profile/export.py +0 -0
  34. {webatem-2.0.1 → webatem-2.0.2}/atem_control/profile/views.py +0 -0
  35. {webatem-2.0.1 → webatem-2.0.2}/atem_control/routing.py +0 -0
  36. {webatem-2.0.1 → webatem-2.0.2}/atem_control/sightings.py +0 -0
  37. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/apple-touch-icon.png +0 -0
  38. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/brand.css +0 -0
  39. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/favicon-32.png +0 -0
  40. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/favicon.ico +0 -0
  41. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/Archivo-400-latin-ext.woff2 +0 -0
  42. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/Archivo-400-latin.woff2 +0 -0
  43. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/Archivo-500-latin-ext.woff2 +0 -0
  44. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/Archivo-500-latin.woff2 +0 -0
  45. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/Archivo-600-latin-ext.woff2 +0 -0
  46. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/Archivo-600-latin.woff2 +0 -0
  47. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/Archivo-800-latin-ext.woff2 +0 -0
  48. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/Archivo-800-latin.woff2 +0 -0
  49. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/IBMPlexMono-400-latin-ext.woff2 +0 -0
  50. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  51. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/IBMPlexMono-500-latin-ext.woff2 +0 -0
  52. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/IBMPlexMono-500-latin.woff2 +0 -0
  53. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/IBMPlexMono-600-latin-ext.woff2 +0 -0
  54. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/IBMPlexMono-600-latin.woff2 +0 -0
  55. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/OFL-Archivo.txt +0 -0
  56. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/fonts/OFL-IBMPlexMono.txt +0 -0
  57. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/icon-192.png +0 -0
  58. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/icon-512.png +0 -0
  59. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/icon-maskable-512.png +0 -0
  60. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/manifest.webmanifest +0 -0
  61. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/mark.svg +0 -0
  62. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/tray/linux-24.png +0 -0
  63. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/tray/mac-22.png +0 -0
  64. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/tray/mac-44.png +0 -0
  65. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/tray/win-16.png +0 -0
  66. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/brand/tray/win-32.png +0 -0
  67. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/css/atem_connect.css +0 -0
  68. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/css/atem_control.css +0 -0
  69. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/icon.png +0 -0
  70. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/js/atem_connect.js +0 -0
  71. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/js/atem_control.js +0 -0
  72. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/js/atem_control_page.js +0 -0
  73. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/js/atem_discovery.js +0 -0
  74. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/js/atem_hyperdeck.js +0 -0
  75. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/js/atem_profile.js +0 -0
  76. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/js/atem_realtime_slider.js +0 -0
  77. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/js/custom-scrollbar.js +0 -0
  78. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/js/recent_label.js +0 -0
  79. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/js/wa-select.js +0 -0
  80. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/vendor/README.md +0 -0
  81. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/vendor/alpine.min.js +0 -0
  82. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/vendor/alpinejs-collapse-3.14.3.min.js +0 -0
  83. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/vendor/bootstrap-icons/bootstrap-icons.min.css +0 -0
  84. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  85. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  86. {webatem-2.0.1 → webatem-2.0.2}/atem_control/static/vendor/webatem.css +0 -0
  87. {webatem-2.0.1 → webatem-2.0.2}/atem_control/storage.py +0 -0
  88. {webatem-2.0.1 → webatem-2.0.2}/atem_control/tally.py +0 -0
  89. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/connect.html +0 -0
  90. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_atem_info.html +0 -0
  91. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_fade_to_black.html +0 -0
  92. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_fairlight.html +0 -0
  93. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_header.html +0 -0
  94. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_hyperdeck_panel.html +0 -0
  95. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_macros.html +0 -0
  96. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_media_pool.html +0 -0
  97. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_profile_modal.html +0 -0
  98. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_settings_dsk.html +0 -0
  99. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_settings_transition.html +0 -0
  100. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_settings_usk.html +0 -0
  101. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_slider.html +0 -0
  102. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_transition_controls.html +0 -0
  103. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_transition_style.html +0 -0
  104. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_usk_fly.html +0 -0
  105. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_usk_keyframe.html +0 -0
  106. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_usk_mask.html +0 -0
  107. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control/_usk_slider.html +0 -0
  108. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templates/control.html +0 -0
  109. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templatetags/__init__.py +0 -0
  110. {webatem-2.0.1 → webatem-2.0.2}/atem_control/templatetags/static_v.py +0 -0
  111. {webatem-2.0.1 → webatem-2.0.2}/atem_control/uploader.py +0 -0
  112. {webatem-2.0.1 → webatem-2.0.2}/atem_control/urls.py +0 -0
  113. {webatem-2.0.1 → webatem-2.0.2}/setup.cfg +0 -0
  114. {webatem-2.0.1 → webatem-2.0.2}/webatem/__init__.py +0 -0
  115. {webatem-2.0.1 → webatem-2.0.2}/webatem/__main__.py +0 -0
  116. {webatem-2.0.1 → webatem-2.0.2}/webatem/applog.py +0 -0
  117. {webatem-2.0.1 → webatem-2.0.2}/webatem/asgi.py +0 -0
  118. {webatem-2.0.1 → webatem-2.0.2}/webatem/context.py +0 -0
  119. {webatem-2.0.1 → webatem-2.0.2}/webatem/launcher.py +0 -0
  120. {webatem-2.0.1 → webatem-2.0.2}/webatem/server.py +0 -0
  121. {webatem-2.0.1 → webatem-2.0.2}/webatem/settings.py +0 -0
  122. {webatem-2.0.1 → webatem-2.0.2}/webatem/templates/base.html +0 -0
  123. {webatem-2.0.1 → webatem-2.0.2}/webatem/templates/brand/_mark.svg +0 -0
  124. {webatem-2.0.1 → webatem-2.0.2}/webatem/templates/launcher.html +0 -0
  125. {webatem-2.0.1 → webatem-2.0.2}/webatem/uninstall.py +0 -0
  126. {webatem-2.0.1 → webatem-2.0.2}/webatem/updates.py +0 -0
  127. {webatem-2.0.1 → webatem-2.0.2}/webatem/urls.py +0 -0
  128. {webatem-2.0.1 → webatem-2.0.2}/webatem/views.py +0 -0
  129. {webatem-2.0.1 → webatem-2.0.2}/webatem/websocket.py +0 -0
  130. {webatem-2.0.1 → webatem-2.0.2}/webatem.egg-info/SOURCES.txt +0 -0
  131. {webatem-2.0.1 → webatem-2.0.2}/webatem.egg-info/dependency_links.txt +0 -0
  132. {webatem-2.0.1 → webatem-2.0.2}/webatem.egg-info/entry_points.txt +0 -0
  133. {webatem-2.0.1 → webatem-2.0.2}/webatem.egg-info/requires.txt +0 -0
  134. {webatem-2.0.1 → webatem-2.0.2}/webatem.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: webatem
3
- Version: 2.0.1
3
+ Version: 2.0.2
4
4
  Summary: Browser-based control for Blackmagic ATEM switchers: run it, open the browser, your switchers are there
5
5
  Author: Lucas Romanenko
6
6
  License: MIT
@@ -115,6 +115,13 @@ behind each strip:
115
115
  <p align="center">
116
116
  <img src="docs/screenshot-audio.png" alt="WebATEM Fairlight audio mixer: 14 strips with input, EQ, dynamics, faders, pan and meters" width="900">
117
117
  </p>
118
+
119
+ The **media pool**: live thumbnails of every still slot and what each media
120
+ player is holding, with drag-and-drop upload straight onto a slot:
121
+
122
+ <p align="center">
123
+ <img src="docs/screenshot-media-pool.png" alt="WebATEM media pool: two media players, MP1 on air with colour bars, and twenty still slots, five holding stills (bars, a lower third, a Starting soon card, a logo bug, a Back in five card)" width="900">
124
+ </p>
118
125
  ---
119
126
 
120
127
  ## Which switchers has it run on?
@@ -85,6 +85,13 @@ behind each strip:
85
85
  <p align="center">
86
86
  <img src="docs/screenshot-audio.png" alt="WebATEM Fairlight audio mixer: 14 strips with input, EQ, dynamics, faders, pan and meters" width="900">
87
87
  </p>
88
+
89
+ The **media pool**: live thumbnails of every still slot and what each media
90
+ player is holding, with drag-and-drop upload straight onto a slot:
91
+
92
+ <p align="center">
93
+ <img src="docs/screenshot-media-pool.png" alt="WebATEM media pool: two media players, MP1 on air with colour bars, and twenty still slots, five holding stills (bars, a lower third, a Starting soon card, a logo bug, a Back in five card)" width="900">
94
+ </p>
88
95
  ---
89
96
 
90
97
  ## Which switchers has it run on?
@@ -1099,7 +1099,9 @@ class MediaPoolWatcher:
1099
1099
  raw_ycbcr = None
1100
1100
  failure: Optional[str] = None
1101
1101
  download_started = time.monotonic()
1102
- if conn is None or not conn.is_connected:
1102
+ # is_ready (bmdwire >= 1.3) is also False through a transport
1103
+ # re-handshake, when is_connected stays True over an empty state.
1104
+ if conn is None or not getattr(conn, 'is_ready', conn.is_connected):
1103
1105
  failure = 'pooled connection not ready'
1104
1106
  else:
1105
1107
  try:
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "webatem"
7
- version = "2.0.1"
7
+ version = "2.0.2"
8
8
  description = "Browser-based control for Blackmagic ATEM switchers: run it, open the browser, your switchers are there"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: webatem
3
- Version: 2.0.1
3
+ Version: 2.0.2
4
4
  Summary: Browser-based control for Blackmagic ATEM switchers: run it, open the browser, your switchers are there
5
5
  Author: Lucas Romanenko
6
6
  License: MIT
@@ -115,6 +115,13 @@ behind each strip:
115
115
  <p align="center">
116
116
  <img src="docs/screenshot-audio.png" alt="WebATEM Fairlight audio mixer: 14 strips with input, EQ, dynamics, faders, pan and meters" width="900">
117
117
  </p>
118
+
119
+ The **media pool**: live thumbnails of every still slot and what each media
120
+ player is holding, with drag-and-drop upload straight onto a slot:
121
+
122
+ <p align="center">
123
+ <img src="docs/screenshot-media-pool.png" alt="WebATEM media pool: two media players, MP1 on air with colour bars, and twenty still slots, five holding stills (bars, a lower third, a Starting soon card, a logo bug, a Back in five card)" width="900">
124
+ </p>
118
125
  ---
119
126
 
120
127
  ## Which switchers has it run on?
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes