python-linkplay 0.1.0__py3-none-any.whl → 0.1.2__py3-none-any.whl

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.
linkplay/__version__.py CHANGED
@@ -1 +1 @@
1
- __version__ = '0.1.0'
1
+ __version__ = '0.1.2'
linkplay/bridge.py CHANGED
@@ -72,18 +72,12 @@ class LinkPlayDevice:
72
72
  @property
73
73
  def eth(self) -> str | None:
74
74
  """Returns the ethernet address."""
75
- eth2 = self.properties.get(DeviceAttribute.ETH2)
76
- eth0 = self.properties.get(DeviceAttribute.ETH0)
77
- for eth in [eth2, eth0]:
78
- if eth == "0.0.0.0":
79
- eth = None
80
- return (
81
- eth2
82
- if eth2
83
- else eth0
84
- if eth0
85
- else self.properties.get(DeviceAttribute.APCLI0)
86
- )
75
+ eth = self.properties.get(DeviceAttribute.ETH2)
76
+ if eth == "0.0.0.0" or eth is None:
77
+ eth = self.properties.get(DeviceAttribute.ETH0)
78
+ if eth == "0.0.0.0" or eth is None:
79
+ eth = self.properties.get(DeviceAttribute.APCLI0)
80
+ return eth
87
81
 
88
82
  async def timesync(self) -> None:
89
83
  """Sync the time."""
linkplay/controller.py CHANGED
@@ -31,6 +31,15 @@ class LinkPlayController:
31
31
  ]
32
32
  self.bridges.extend(new_bridges)
33
33
 
34
+ async def find_bridge(self, bridge_uuid: str) -> LinkPlayBridge | None:
35
+ """Find a LinkPlay device by its bridge uuid."""
36
+
37
+ for bridge in self.bridges:
38
+ if bridge.device.uuid == bridge_uuid:
39
+ return bridge
40
+
41
+ return None
42
+
34
43
  async def add_bridge(self, bridge_to_add: LinkPlayBridge) -> None:
35
44
  """Add given LinkPlay device if not already added."""
36
45
 
@@ -39,6 +48,14 @@ class LinkPlayController:
39
48
  if bridge_to_add.device.uuid not in current_bridges:
40
49
  self.bridges.append(bridge_to_add)
41
50
 
51
+ async def remove_bridge(self, bridge_to_remove: LinkPlayBridge) -> None:
52
+ """Remove given LinkPlay device if not already deleted."""
53
+
54
+ # Remove bridge
55
+ current_bridges = [bridge.device.uuid for bridge in self.bridges]
56
+ if bridge_to_remove.device.uuid in current_bridges:
57
+ self.bridges.remove(bridge_to_remove)
58
+
42
59
  async def discover_multirooms(self) -> None:
43
60
  """Attempts to discover multirooms on the local network."""
44
61
 
linkplay/endpoint.py CHANGED
@@ -37,7 +37,12 @@ class LinkPlayApiEndpoint(LinkPlayEndpoint):
37
37
  "http",
38
38
  "https",
39
39
  ], "Protocol must be either 'http' or 'https'"
40
- self._endpoint: str = f"{protocol}://{endpoint}:{port}"
40
+ include_port = (protocol == "http" and port != 80) or (
41
+ protocol == "https" and port != 443
42
+ )
43
+ port_suffix = f":{port}" if include_port else ""
44
+ self._endpoint: str = f"{protocol}://{endpoint}{port_suffix}"
45
+
41
46
  self._session: ClientSession = session
42
47
 
43
48
  def to_dict(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python_linkplay
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: A Python Library for Seamless LinkPlay Device Control
5
5
  Author: Velleman Group nv
6
6
  License: MIT
@@ -0,0 +1,15 @@
1
+ linkplay/__init__.py,sha256=y9ZehEq-KhS3cwn-PUpwVSJGfDUx7e5wf_G6guODcTk,56
2
+ linkplay/__main__.py,sha256=Wcza80QaWfOaHjyJEfQYhB9kiPLE0NOqIj4zVWv2Nqs,577
3
+ linkplay/__version__.py,sha256=mdp2CftfqYbdKtP-eWv1z7rAUycYv6X1ntXSMUf8Kss,22
4
+ linkplay/bridge.py,sha256=YyqucmFzqAtmc3ttrQEM4nvMhs6ijxHrAhcDIzH6EE0,14970
5
+ linkplay/consts.py,sha256=98VtgV4xOfXWr00yl1DwfmNxDI6Ul5fNPCyLp8ixggE,13535
6
+ linkplay/controller.py,sha256=ZW3WbOhm1fzFwkkNTEAfZjBhJkhkd61LtfiFgWXqjE0,3903
7
+ linkplay/discovery.py,sha256=NnkO9gknp3Cyff7830zBu1LwyhkkWCdhDbEDbAwF8D8,4610
8
+ linkplay/endpoint.py,sha256=_gelW0cDWt0SC8EApwaKIVh_YJIMNiOkfrLR_RYW7aM,2677
9
+ linkplay/exceptions.py,sha256=Kow13uJPSL4y6rXMnkcl_Yp9wH1weOyKw_knd0p-Exc,173
10
+ linkplay/utils.py,sha256=Kmbzw8zC9mV89ZOC5-GNtbiLkgUkuvAEUcsJdRkSY-w,8485
11
+ python_linkplay-0.1.2.dist-info/LICENSE,sha256=bgEtxMyjEHX_4uwaAY3GCFTm234D4AOZ5dM15sk26ms,1073
12
+ python_linkplay-0.1.2.dist-info/METADATA,sha256=V13eNH0yWqs2wGC32EhDbKt6X4K68p6oPFHhG7knv-4,2987
13
+ python_linkplay-0.1.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
14
+ python_linkplay-0.1.2.dist-info/top_level.txt,sha256=CpSaOVPTzJf5TVIL7MrotSCR34gcIOQy-11l4zGmxxM,9
15
+ python_linkplay-0.1.2.dist-info/RECORD,,
@@ -1,15 +0,0 @@
1
- linkplay/__init__.py,sha256=y9ZehEq-KhS3cwn-PUpwVSJGfDUx7e5wf_G6guODcTk,56
2
- linkplay/__main__.py,sha256=Wcza80QaWfOaHjyJEfQYhB9kiPLE0NOqIj4zVWv2Nqs,577
3
- linkplay/__version__.py,sha256=IMjkMO3twhQzluVTo8Z6rE7Eg-9U79_LGKMcsWLKBkY,22
4
- linkplay/bridge.py,sha256=Xj1YRz0oJJ41Bvjwfa-tMKQNVWgluADryFPTgD18qJM,15059
5
- linkplay/consts.py,sha256=98VtgV4xOfXWr00yl1DwfmNxDI6Ul5fNPCyLp8ixggE,13535
6
- linkplay/controller.py,sha256=IBFhnt-VhdIZnI_3OLU6hA8oQa9IZWY7-8cN0uCh3-w,3277
7
- linkplay/discovery.py,sha256=NnkO9gknp3Cyff7830zBu1LwyhkkWCdhDbEDbAwF8D8,4610
8
- linkplay/endpoint.py,sha256=PRf00v6sQI8hdTrMdg0qG0JUtsZFe-uCN0Lw1zqI1Lc,2491
9
- linkplay/exceptions.py,sha256=Kow13uJPSL4y6rXMnkcl_Yp9wH1weOyKw_knd0p-Exc,173
10
- linkplay/utils.py,sha256=Kmbzw8zC9mV89ZOC5-GNtbiLkgUkuvAEUcsJdRkSY-w,8485
11
- python_linkplay-0.1.0.dist-info/LICENSE,sha256=bgEtxMyjEHX_4uwaAY3GCFTm234D4AOZ5dM15sk26ms,1073
12
- python_linkplay-0.1.0.dist-info/METADATA,sha256=ZQ_QkjCcmkmTcBw80ZOVN2tNZi2lEWKZH4z3nFtYSq8,2987
13
- python_linkplay-0.1.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
14
- python_linkplay-0.1.0.dist-info/top_level.txt,sha256=CpSaOVPTzJf5TVIL7MrotSCR34gcIOQy-11l4zGmxxM,9
15
- python_linkplay-0.1.0.dist-info/RECORD,,