python-aidot-cameras 0.5.8__tar.gz → 0.5.9__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 (31) hide show
  1. {python_aidot_cameras-0.5.8/src/python_aidot_cameras.egg-info → python_aidot_cameras-0.5.9}/PKG-INFO +1 -1
  2. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/pyproject.toml +1 -1
  3. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/src/aidot/device_client.py +11 -3
  4. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9/src/python_aidot_cameras.egg-info}/PKG-INFO +1 -1
  5. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/LICENSE +0 -0
  6. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/README.md +0 -0
  7. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/setup.cfg +0 -0
  8. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/src/aidot/__init__.py +0 -0
  9. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/src/aidot/aes_utils.py +0 -0
  10. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/src/aidot/client.py +0 -0
  11. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/src/aidot/const.py +0 -0
  12. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/src/aidot/credentials.py +0 -0
  13. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/src/aidot/discover.py +0 -0
  14. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/src/aidot/exceptions.py +0 -0
  15. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/src/aidot/g711.py +0 -0
  16. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/src/python_aidot_cameras.egg-info/SOURCES.txt +0 -0
  17. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/src/python_aidot_cameras.egg-info/dependency_links.txt +0 -0
  18. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/src/python_aidot_cameras.egg-info/requires.txt +0 -0
  19. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/src/python_aidot_cameras.egg-info/top_level.txt +0 -0
  20. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/tests/test_alarm_event.py +0 -0
  21. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/tests/test_highport_nomination.py +0 -0
  22. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/tests/test_motion_poll.py +0 -0
  23. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/tests/test_no_undefined_names.py +0 -0
  24. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/tests/test_sdes_sprop.py +0 -0
  25. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/tests/test_sdes_talk.py +0 -0
  26. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/tests/test_sdes_watchdog.py +0 -0
  27. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/tests/test_speak.py +0 -0
  28. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/tests/test_stream_cap.py +0 -0
  29. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/tests/test_talk.py +0 -0
  30. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/tests/test_terminal_ack.py +0 -0
  31. {python_aidot_cameras-0.5.8 → python_aidot_cameras-0.5.9}/tests/test_token_refresh.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-aidot-cameras
3
- Version: 0.5.8
3
+ Version: 0.5.9
4
4
  Summary: Control AiDot/Leedarson WiFi lights and cameras (WebRTC streaming, two-way audio, PTZ, controls)
5
5
  Author-email: cbrightly <chris.brightly@gmail.com>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python-aidot-cameras"
7
- version = "0.5.8"
7
+ version = "0.5.9"
8
8
  description = "Control AiDot/Leedarson WiFi lights and cameras (WebRTC streaming, two-way audio, PTZ, controls)"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -2059,8 +2059,11 @@ def _save_sprop(devid: str, sprop: str) -> None:
2059
2059
  with open(tmp, "w") as fh:
2060
2060
  fh.write(sprop)
2061
2061
  os.replace(tmp, _sprop_cache_path(devid))
2062
- except OSError:
2063
- pass
2062
+ except OSError as exc:
2063
+ # Surface (don't swallow): if the cache dir isn't writable the whole
2064
+ # sprop feature is silently inert. AIDOT_SPROP_DIR can redirect it.
2065
+ _LOGGER.warning("sprop cache write failed (%s): %s — set AIDOT_SPROP_DIR "
2066
+ "to a writable path", _SPROP_DIR, exc)
2064
2067
 
2065
2068
 
2066
2069
  def _inject_sprop(sdp: str, devid: str) -> str:
@@ -12098,8 +12101,13 @@ class DeviceClient(object):
12098
12101
  "a=rtcp-mux\r\n"
12099
12102
  )
12100
12103
  try:
12104
+ # Re-apply the cached sprop-parameter-sets here too:
12105
+ # this serve-restart rewrite is the SDP the keepalive
12106
+ # ffmpeg actually reads on every watchdog cycle, so
12107
+ # without this the out-of-band SPS is lost on restart
12108
+ # (the failure persisted live even for cached cameras).
12101
12109
  with open(sdp_path, "w") as _f2:
12102
- _f2.write(_new_sdp)
12110
+ _f2.write(_inject_sprop(_new_sdp, self.device_id))
12103
12111
  except Exception as _sdp_exc2:
12104
12112
  _LOGGER.warning("could not rewrite SDP for restart: %s", _sdp_exc2)
12105
12113
  proc = subprocess.Popen(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-aidot-cameras
3
- Version: 0.5.8
3
+ Version: 0.5.9
4
4
  Summary: Control AiDot/Leedarson WiFi lights and cameras (WebRTC streaming, two-way audio, PTZ, controls)
5
5
  Author-email: cbrightly <chris.brightly@gmail.com>
6
6
  License-Expression: MIT