def discover_MediaPlayer(self):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
s.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 4)
s.bind(("", SSDP_BROADCAST_PORT + 20))
s.sendto(SSDP_BROADCAST_MSG.encode("UTF-8"), (SSDP_BROADCAST_ADDR,
SSDP_BROADCAST_PORT))
s.settimeout(5.0)
devices = []
while True:
try:
data, addr = s.recvfrom(self.SOCKET_BUFSIZE)
if len(data) is None:
continue
except socket.timeout:
break
try:
info = [a.split(":", 1) for a in data.decode("UTF-8").split("\r\n")[1:]]
device = dict([(a[0].strip().lower(), a[1].strip()) for a in info if len(a) >= 2])
devices.append(device)
except:
pass
devices_urls = [device["location"] for device in devices if "AVTransport" in device["st"]]
devices_urls = list(set(devices_urls))
devices = []
for location_url in devices_urls:
device = self.register_device(location_url)
if device != None:
devices.append(device)
return devices
评论列表
文章目录