|
a/mpd2src/scmakempdsender |
|
b/mpd2src/scmakempdsender |
|
... |
|
... |
46 |
sys.exit(1)
|
46 |
sys.exit(1)
|
47 |
|
47 |
|
48 |
upmpdclitoo = False
|
48 |
upmpdclitoo = False
|
49 |
mpdport = 6700
|
49 |
mpdport = 6700
|
50 |
externalvolume = False
|
50 |
externalvolume = False
|
51 |
# Upmpdcli friendly-name. Used to compute a Uuid in conjunction with
|
51 |
# Upmpdcli friendly-name. Used to compute a Uuid in
|
52 |
# the node name
|
52 |
# conjunction with the node name
|
53 |
upmpdcli_fname = "UpMpd"
|
53 |
upmpdcli_fname = "UpMpd"
|
|
|
54 |
codec_name = ""
|
54 |
|
55 |
|
55 |
def logerr(s):
|
56 |
def logerr(s):
|
56 |
print("%s" % s, file=sys.stderr)
|
57 |
print("%s" % s, file=sys.stderr)
|
57 |
|
58 |
|
58 |
args = sys.argv[1:]
|
59 |
args = sys.argv[1:]
|
59 |
opts, args = getopt.getopt(args, "hup:f:e")
|
60 |
opts, args = getopt.getopt(args, "hup:f:e:C:")
|
60 |
for opt, arg in opts:
|
61 |
for opt, arg in opts:
|
61 |
if opt in ['-h']:
|
62 |
if opt in ['-h']:
|
62 |
usage(sys.stdout)
|
63 |
usage(sys.stdout)
|
|
|
64 |
elif opt in ['-C']:
|
|
|
65 |
codec_name = arg
|
|
|
66 |
elif opt in ['-e']:
|
|
|
67 |
externalvolume = True
|
63 |
elif opt in ['-f']:
|
68 |
elif opt in ['-f']:
|
64 |
upmpdcli_fname = arg
|
69 |
upmpdcli_fname = arg
|
65 |
elif opt in ['-p']:
|
70 |
elif opt in ['-p']:
|
66 |
mpdport = int(arg)
|
71 |
mpdport = int(arg)
|
67 |
elif opt in ['-u']:
|
72 |
elif opt in ['-u']:
|
68 |
upmpdclitoo = True
|
73 |
upmpdclitoo = True
|
69 |
elif opt in ['-e']:
|
|
|
70 |
externalvolume = True
|
|
|
71 |
else:
|
74 |
else:
|
72 |
logerr("unknown option %s\n" % opt)
|
75 |
logerr("unknown option %s\n" % opt)
|
73 |
usage(sys.stderr)
|
76 |
usage(sys.stderr)
|
74 |
|
77 |
|
75 |
# Temp fifo name and temporary file for mpd configuration
|
78 |
# Temp fifo name and temporary file for mpd configuration
|
76 |
mpdfifo = tempfile.mktemp(suffix=".fifo")
|
79 |
mpdfifo = tempfile.mktemp(suffix=".fifo")
|
77 |
mpdconf = tempfile.NamedTemporaryFile(delete=False)
|
80 |
mpdconf = tempfile.NamedTemporaryFile(delete=False)
|
78 |
|
81 |
|
79 |
# UDN and name for the Sender UPnP device. We use a hash of the
|
82 |
# UDN and name for the Sender UPnP device.
|
80 |
# friendly name and host name
|
83 |
# We used to call:
|
81 |
sender_udn = uuid.uuid5(uuid.NAMESPACE_DNS,
|
84 |
# uuid.uuid5(uuid.NAMESPACE_DNS, socket.gethostname() + upmpdcli_fname).urn
|
82 |
socket.gethostname() + upmpdcli_fname).urn
|
85 |
# which yielded something like urn:uuid:bd5d9ae1-5775-5cda-8d14-2f87d64c4798,
|
|
|
86 |
# but this seems to cause issues for recent versions of ohNet (??). So now use
|
|
|
87 |
# the shorter output of uuid1().hex (32 chars)
|
|
|
88 |
sender_udn = uuid.uuid1().hex
|
83 |
sender_name = "%s UxSender" % upmpdcli_fname
|
89 |
sender_name = "%s UxSender" % upmpdcli_fname
|
84 |
|
90 |
|
85 |
mpdproc = None
|
91 |
mpdproc = None
|
86 |
senderproc = None
|
92 |
senderproc = None
|
87 |
upmpdproc = None
|
93 |
upmpdproc = None
|
|
... |
|
... |
163 |
sys.exit(1)
|
169 |
sys.exit(1)
|
164 |
time.sleep(0.1)
|
170 |
time.sleep(0.1)
|
165 |
|
171 |
|
166 |
# Start the Sender
|
172 |
# Start the Sender
|
167 |
try:
|
173 |
try:
|
168 |
senderproc = subprocess.Popen([uxsender, "-f", mpdfifo,
|
174 |
cmdvec = [uxsender, "-f", mpdfifo,
|
169 |
"-A", "44100:16:2:1",
|
175 |
"-A", "44100:16:2:1",
|
170 |
"-u", sender_udn, "-n", sender_name],
|
176 |
"-u", sender_udn, "-n", sender_name]
|
171 |
stdout=subprocess.PIPE,
|
177 |
if codec_name:
|
172 |
bufsize = -1)
|
178 |
cmdvec += ["-C", codec_name]
|
|
|
179 |
logerr("STARTING %s" % cmdvec)
|
|
|
180 |
senderproc = subprocess.Popen(cmdvec, stdout=subprocess.PIPE, bufsize = -1)
|
173 |
except Exception as err:
|
181 |
except Exception as err:
|
174 |
logerr("Can't start %s: %s" % (uxsender, err))
|
182 |
logerr("Can't start %s: %s" % (uxsender, err))
|
175 |
cleanup(1)
|
183 |
cleanup(1)
|
176 |
|
184 |
|
177 |
# Get the Uri and Metadata values from the sender. These get written to stdout
|
185 |
# Get the Uri and Metadata values from the sender. These get written to stdout
|