python-linkplay 0.0.3__tar.gz → 0.0.5__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 (22) hide show
  1. {python_linkplay-0.0.3/src/python_linkplay.egg-info → python_linkplay-0.0.5}/PKG-INFO +4 -4
  2. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/setup.cfg +3 -3
  3. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/src/linkplay/__main__.py +2 -1
  4. python_linkplay-0.0.5/src/linkplay/__version__.py +1 -0
  5. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/src/linkplay/controller.py +25 -5
  6. {python_linkplay-0.0.3 → python_linkplay-0.0.5/src/python_linkplay.egg-info}/PKG-INFO +4 -4
  7. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/src/python_linkplay.egg-info/requires.txt +3 -3
  8. python_linkplay-0.0.3/src/linkplay/__version__.py +0 -1
  9. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/LICENSE +0 -0
  10. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/README.md +0 -0
  11. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/pyproject.toml +0 -0
  12. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/setup.py +0 -0
  13. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/src/linkplay/__init__.py +0 -0
  14. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/src/linkplay/bridge.py +0 -0
  15. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/src/linkplay/consts.py +0 -0
  16. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/src/linkplay/discovery.py +0 -0
  17. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/src/linkplay/exceptions.py +0 -0
  18. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/src/linkplay/utils.py +0 -0
  19. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/src/python_linkplay.egg-info/SOURCES.txt +0 -0
  20. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/src/python_linkplay.egg-info/dependency_links.txt +0 -0
  21. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/src/python_linkplay.egg-info/not-zip-safe +0 -0
  22. {python_linkplay-0.0.3 → python_linkplay-0.0.5}/src/python_linkplay.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python_linkplay
3
- Version: 0.0.3
3
+ Version: 0.0.5
4
4
  Summary: A Python Library for Seamless LinkPlay Device Control
5
5
  Author: Velleman Group nv
6
6
  License: MIT
@@ -8,9 +8,9 @@ Classifier: Programming Language :: Python :: 3
8
8
  Requires-Python: >=3.11
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
- Requires-Dist: async-timeout==4.0.3
12
- Requires-Dist: aiohttp==3.9.1
13
- Requires-Dist: async_upnp_client==0.38.0
11
+ Requires-Dist: async-timeout>=4.0.3
12
+ Requires-Dist: aiohttp>=3.8.5
13
+ Requires-Dist: async_upnp_client>=0.36.2
14
14
  Provides-Extra: testing
15
15
  Requires-Dist: pytest>=7.3.1; extra == "testing"
16
16
  Requires-Dist: pytest-cov>=4.1.0; extra == "testing"
@@ -12,9 +12,9 @@ classifiers =
12
12
  [options]
13
13
  packages = find_namespace:
14
14
  install_requires =
15
- async-timeout==4.0.3
16
- aiohttp==3.9.1
17
- async_upnp_client==0.38.0
15
+ async-timeout>=4.0.3
16
+ aiohttp>=3.8.5
17
+ async_upnp_client>=0.36.2
18
18
  python_requires = >=3.11
19
19
  package_dir =
20
20
  =src
@@ -7,11 +7,12 @@ from linkplay.controller import LinkPlayController
7
7
  async def main():
8
8
  async with aiohttp.ClientSession() as session:
9
9
  controller = LinkPlayController(session)
10
- await controller.discover()
11
10
 
11
+ await controller.discover_bridges()
12
12
  for bridge in controller.bridges:
13
13
  print(bridge)
14
14
 
15
+ await controller.discover_multirooms()
15
16
  for multiroom in controller.multirooms:
16
17
  print(multiroom.followers)
17
18
 
@@ -0,0 +1 @@
1
+ __version__ = '0.0.5'
@@ -16,7 +16,7 @@ class LinkPlayController():
16
16
  self.bridges = []
17
17
  self.multirooms = []
18
18
 
19
- async def discover(self) -> None:
19
+ async def discover_bridges(self) -> None:
20
20
  """Attempts to discover LinkPlay devices on the local network."""
21
21
 
22
22
  # Discover new bridges
@@ -25,10 +25,30 @@ class LinkPlayController():
25
25
  new_bridges = [discovered_bridge for discovered_bridge in discovered_bridges if discovered_bridge.device.uuid not in current_bridges]
26
26
  self.bridges.extend(new_bridges)
27
27
 
28
- # Create new multirooms
29
- for new_bridge in new_bridges:
30
- self.multirooms.append(LinkPlayMultiroom(new_bridge))
28
+ async def discover_multirooms(self) -> None:
29
+ """Attempts to discover multirooms on the local network."""
31
30
 
32
- # Update multirooms
31
+ # Create new multirooms from new bridges
32
+ new_multirooms = []
33
+ for bridge in self.bridges:
34
+ has_multiroom = any(multiroom for multiroom in self.multirooms if multiroom.leader == bridge)
35
+
36
+ if has_multiroom:
37
+ continue
38
+
39
+ multiroom = LinkPlayMultiroom(bridge)
40
+ await multiroom.update_status(self.bridges)
41
+ if len(multiroom.followers) > 0:
42
+ new_multirooms.append(multiroom)
43
+
44
+ # Update existing multirooms
33
45
  for multiroom in self.multirooms:
34
46
  await multiroom.update_status(self.bridges)
47
+
48
+ # Remove multirooms if they have no followers
49
+ empty_multirooms = [multiroom for multiroom in self.multirooms if not multiroom.followers]
50
+ for empty_multiroom in empty_multirooms:
51
+ self.multirooms.remove(empty_multiroom)
52
+
53
+ # Add new multirooms
54
+ self.multirooms.extend(new_multirooms)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python_linkplay
3
- Version: 0.0.3
3
+ Version: 0.0.5
4
4
  Summary: A Python Library for Seamless LinkPlay Device Control
5
5
  Author: Velleman Group nv
6
6
  License: MIT
@@ -8,9 +8,9 @@ Classifier: Programming Language :: Python :: 3
8
8
  Requires-Python: >=3.11
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
- Requires-Dist: async-timeout==4.0.3
12
- Requires-Dist: aiohttp==3.9.1
13
- Requires-Dist: async_upnp_client==0.38.0
11
+ Requires-Dist: async-timeout>=4.0.3
12
+ Requires-Dist: aiohttp>=3.8.5
13
+ Requires-Dist: async_upnp_client>=0.36.2
14
14
  Provides-Extra: testing
15
15
  Requires-Dist: pytest>=7.3.1; extra == "testing"
16
16
  Requires-Dist: pytest-cov>=4.1.0; extra == "testing"
@@ -1,6 +1,6 @@
1
- async-timeout==4.0.3
2
- aiohttp==3.9.1
3
- async_upnp_client==0.38.0
1
+ async-timeout>=4.0.3
2
+ aiohttp>=3.8.5
3
+ async_upnp_client>=0.36.2
4
4
 
5
5
  [testing]
6
6
  pytest>=7.3.1
@@ -1 +0,0 @@
1
- __version__ = '0.0.3'
File without changes