mirror of
https://github.com/wkulhanek/bonob.git
synced 2025-12-21 17:33:29 +01:00
Compare commits
1 Commits
v0.3.0
...
feature/ar
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0b381b4ab1 |
@@ -48,7 +48,7 @@
|
||||
"scripts": {
|
||||
"clean": "rm -Rf build",
|
||||
"build": "tsc",
|
||||
"dev": "BONOB_SONOS_SERVICE_NAME=bonobDev BONOB_SONOS_DEVICE_DISCOVERY=true BONOB_SONOS_AUTO_REGISTER=false nodemon ./src/app.ts",
|
||||
"dev": "BONOB_SONOS_SERVICE_NAME=bonobDev BONOB_SONOS_DEVICE_DISCOVERY=true BONOB_SONOS_AUTO_REGISTER=true nodemon ./src/app.ts",
|
||||
"register-dev": "ts-node ./src/register.ts http://$(hostname):4534",
|
||||
"test": "jest --testPathIgnorePatterns=build"
|
||||
}
|
||||
|
||||
@@ -325,6 +325,12 @@ function server(
|
||||
}
|
||||
});
|
||||
|
||||
app.get("/stream/artistRadio/:id", async (req, res) => {
|
||||
const id = req.params["id"]!;
|
||||
console.log(`----------> Streaming artist radio!! ${id}`)
|
||||
res.status(404).send()
|
||||
});
|
||||
|
||||
app.get("/:type/:id/art/size/:size", (req, res) => {
|
||||
const authToken = accessTokens.authTokenFor(
|
||||
req.query[BONOB_ACCESS_TOKEN_HEADER] as string
|
||||
|
||||
33
src/smapi.ts
33
src/smapi.ts
@@ -385,13 +385,30 @@ function bindSmapiSoapServiceToExpress(
|
||||
) =>
|
||||
auth(musicService, accessTokens, soapyHeaders?.credentials)
|
||||
.then(splitId(id))
|
||||
.then(async ({ musicLibrary, accessToken, typeId }) =>
|
||||
musicLibrary.track(typeId!).then((it) => ({
|
||||
.then(async ({ musicLibrary, accessToken, type, typeId }) => {
|
||||
console.log(`!!! getMediaMetadata->${id}`)
|
||||
switch (type) {
|
||||
case "track": return musicLibrary.track(typeId!).then((it) => ({
|
||||
getMediaMetadataResult: track(
|
||||
urlWithToken(accessToken),
|
||||
it
|
||||
it,
|
||||
),
|
||||
}))
|
||||
}));
|
||||
case "artistRadio": return {
|
||||
getMediaMetadataResult: {
|
||||
id,
|
||||
itemType: "stream",
|
||||
title: "Foobar100",
|
||||
mimeType: 'audio/x-scpls',
|
||||
// streamMetadata: {
|
||||
// logo: "??"
|
||||
// }
|
||||
}
|
||||
}
|
||||
default:
|
||||
throw `Unsupported search by:${id}`;
|
||||
}
|
||||
}
|
||||
),
|
||||
search: async (
|
||||
{ id, term }: { id: string; term: string },
|
||||
@@ -470,6 +487,12 @@ function bindSmapiSoapServiceToExpress(
|
||||
},
|
||||
]
|
||||
: [],
|
||||
relatedPlay: {
|
||||
id: `artistRadio:${artist.id}`,
|
||||
itemType: "stream",
|
||||
title: "Foobar radio",
|
||||
canPlay: true
|
||||
}
|
||||
},
|
||||
};
|
||||
});
|
||||
@@ -538,7 +561,7 @@ function bindSmapiSoapServiceToExpress(
|
||||
const paging = { _index: index, _count: count };
|
||||
const lang = i8n((headers["accept-language"] || "en-US") as LANG);
|
||||
logger.debug(
|
||||
`Fetching metadata type=${type}, typeId=${typeId}, lang=${lang}`
|
||||
`Fetching metadata type=${type}, typeId=${typeId}`
|
||||
);
|
||||
|
||||
const albums = (q: AlbumQuery): Promise<GetMetadataResponse> =>
|
||||
|
||||
@@ -10,7 +10,7 @@ import { URLBuilder } from "./url_builder";
|
||||
|
||||
export const SONOS_LANG = ["en-US", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "ja-JP", "nb-NO", "nl-NL", "pt-BR", "sv-SE", "zh-CN"]
|
||||
|
||||
export const PRESENTATION_AND_STRINGS_VERSION = "19";
|
||||
export const PRESENTATION_AND_STRINGS_VERSION = "20";
|
||||
|
||||
// NOTE: manifest requires https for the URL,
|
||||
// otherwise you will get an error trying to register
|
||||
@@ -20,6 +20,7 @@ export type Capability =
|
||||
| "alFavorites"
|
||||
| "ucPlaylists"
|
||||
| "extendedMD"
|
||||
| "radioExtendedMD"
|
||||
| "contextHeaders"
|
||||
| "authorizationHeader"
|
||||
| "logging"
|
||||
@@ -32,6 +33,7 @@ export const BONOB_CAPABILITIES: Capability[] = [
|
||||
"ucPlaylists",
|
||||
"extendedMD",
|
||||
"logging",
|
||||
"radioExtendedMD"
|
||||
];
|
||||
|
||||
export type Device = {
|
||||
|
||||
Reference in New Issue
Block a user