Marking nowPlaying in smapi setPlayedSeconds handler so does not mark when sonos pre-caches a track (#57)

This commit is contained in:
Simon J
2021-09-27 19:13:47 +10:00
committed by GitHub
parent 36d0023a1e
commit c312778e13
4 changed files with 72 additions and 53 deletions

View File

@@ -311,7 +311,7 @@ function server(
})
.then((stream) => ({ musicLibrary: it, stream }))
)
.then(({ musicLibrary, stream }) => {
.then(({ stream }) => {
logger.info(
`stream response from music service for ${id}, status=${
stream.status
@@ -330,32 +330,25 @@ function server(
filter,
headers,
sendStream,
nowPlaying,
}: {
status: number;
filter: Transform;
headers: Record<string, string>;
sendStream: boolean;
nowPlaying: boolean;
}) => {
logger.info(
`<- /stream/track/${id}, status=${status}, headers=${JSON.stringify(
headers
)}`
);
(nowPlaying
? musicLibrary.nowPlaying(id)
: Promise.resolve(true)
).then((_) => {
res.status(status);
Object.entries(headers)
.filter(([_, v]) => v !== undefined)
.forEach(([header, value]) => {
res.setHeader(header, value!);
});
if (sendStream) stream.stream.pipe(filter).pipe(res);
else res.send();
});
res.status(status);
Object.entries(headers)
.filter(([_, v]) => v !== undefined)
.forEach(([header, value]) => {
res.setHeader(header, value!);
});
if (sendStream) stream.stream.pipe(filter).pipe(res);
else res.send();
};
if (stream.status == 200) {
@@ -370,7 +363,6 @@ function server(
"accept-ranges": stream.headers["accept-ranges"],
},
sendStream: req.method == "GET",
nowPlaying: req.method == "GET",
});
} else if (stream.status == 206) {
respondWith({
@@ -385,7 +377,6 @@ function server(
"accept-ranges": stream.headers["accept-ranges"],
},
sendStream: req.method == "GET",
nowPlaying: req.method == "GET",
});
} else {
respondWith({
@@ -393,7 +384,6 @@ function server(
filter: new PassThrough(),
headers: {},
sendStream: req.method == "GET",
nowPlaying: false,
});
}
});