Parent: [de1158] (diff)

Download this file

maketestutil.py    98 lines (84 with data), 3.1 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
from __future__ import print_function
import sys
from PyQt5.QtWidgets import *
import upnpp
ohpltype = "urn:av-openhome-org:service:Playlist"
avttype = "urn:schemas-upnp-org:service:AVTransport"
PY3 = sys.version > '3'
if PY3:
def makebytes(data):
if isinstance(data, bytes):
return data
else:
return data.encode("UTF-8")
else:
def makebytes(data):
if isinstance(data, unicode):
return data.encode("UTF-8")
else:
return data
def writestring(f, s):
return f.write(makebytes(s))
_verbose = True
_superverbose = False
def debug(x):
if _verbose:
print("%s" % makebytes(x), file = sys.stderr)
def beginsWith(s, beg):
if s[0:len(beg)] == beg:
return True
return False
def neutstring(s):
return s.replace("\n", " ").replace("\r", " ")
def listRenderers():
renderers = []
devices = upnpp.getDevices()
for dev in devices:
#print("Device: UDN: [%s] fname [%s]" % (dev.UDN, dev.friendlyName))
#print(" type: %s" % dev.deviceType)
hasrenderer=False
for service in dev.services:
#print (" service: %s" % service.serviceType)
if beginsWith(service.serviceType, avttype) or \
beginsWith(service.serviceType, ohpltype):
hasrenderer = True
if hasrenderer:
renderers.append((dev.UDN, dev.friendlyName))
#print("Renderers:")
#for rdr in renderers:
#print("Renderer: %s" % rdr.friendlyName)
return renderers
def getUrlMeta(rdr):
service = upnpp.findTypedService(rdr, "avtransport", True)
service = None
if service:
data = upnpp.runaction(service, "GetMediaInfo", ["0"])
if data:
return (data["CurrentURI"], data["CurrentURIMetaData"])
else:
QMessageBox.information(None, "Renderer problem",
"AVTransport GetMediaInfo action returned no data")
return (None,None)
service = upnpp.findTypedService(rdr, "playlist", True)
if service:
data = upnpp.runaction(service, "Id", [])
if not data:
QMessageBox.information(None, "Renderer problem",
"Playlist Id action returned no data")
return (None,None)
id = data["Value"]
if id == "0":
# No current track
QMessageBox.information(None, "Renderer problem",
"Playlist: no current track?")
return (None,None)
data = upnpp.runaction(service, "Read", [data["Value"]])
if not data:
QMessageBox.information(None, "Renderer problem",
"Playlist Read action returned no data")
return (None,None)
return (data["Uri"], data["Metadata"])
QMessageBox.information(None, "Renderer problem",
"Renderer seems to have neither AVTransport nor Playlist" \
"service.");
return (None, None)