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

This reverts commit c312778e13.
This commit is contained in:
Simon J
2021-10-16 14:51:07 +11:00
committed by GitHub
parent a64947f603
commit a3a30455d0
4 changed files with 63 additions and 152 deletions

View File

@@ -356,7 +356,7 @@ function server(
})
.then((stream) => ({ musicLibrary: it, stream }))
)
.then(({ stream }) => {
.then(({ musicLibrary, stream }) => {
logger.info(
`${trace} bnb<- stream response from music service for ${id}, status=${
stream.status
@@ -375,25 +375,32 @@ function server(
filter,
headers,
sendStream,
nowPlaying,
}: {
status: number;
filter: Transform;
headers: Record<string, string>;
sendStream: boolean;
nowPlaying: boolean;
}) => {
logger.info(
`${trace} bnb-> ${
req.path
}, status=${status}, headers=${JSON.stringify(headers)}`
);
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();
(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();
});
};
if (stream.status == 200) {
@@ -408,6 +415,7 @@ function server(
"accept-ranges": stream.headers["accept-ranges"],
},
sendStream: req.method == "GET",
nowPlaying: req.method == "GET",
});
} else if (stream.status == 206) {
respondWith({
@@ -422,6 +430,7 @@ function server(
"accept-ranges": stream.headers["accept-ranges"],
},
sendStream: req.method == "GET",
nowPlaying: req.method == "GET",
});
} else {
respondWith({
@@ -429,6 +438,7 @@ function server(
filter: new PassThrough(),
headers: {},
sendStream: req.method == "GET",
nowPlaying: false,
});
}
});

View File

@@ -914,26 +914,16 @@ function bindSmapiSoapServiceToExpress(
.then(({ musicLibrary, type, typeId }) => {
switch (type) {
case "track":
return musicLibrary
.track(typeId)
.then(({ duration }) => {
if (
(duration < 30 && +seconds >= 10) ||
(duration >= 30 && +seconds >= 30)
) {
return musicLibrary.scrobble(typeId);
} else {
return Promise.resolve(true);
}
})
.then(() => {
if (+seconds > 0) {
return musicLibrary.nowPlaying(typeId);
} else {
return Promise.resolve(true);
}
});
break;
return musicLibrary.track(typeId).then(({ duration }) => {
if (
(duration < 30 && +seconds >= 10) ||
(duration >= 30 && +seconds >= 30)
) {
return musicLibrary.scrobble(typeId);
} else {
return Promise.resolve(true);
}
});
default:
logger.info("Unsupported scrobble", { id, seconds });
return Promise.resolve(true);