@darrenjaws/spotify-mcp 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/tools/system.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/tools/system.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA4FjE,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAiE9E"}
|
package/build/tools/system.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { spawn } from "child_process";
|
|
5
5
|
import { logger } from "../utils/logger.js";
|
|
6
|
+
import { getAuthenticatedClient } from "../spotify/client.js";
|
|
6
7
|
const SUPPORTED_PLATFORMS = ["darwin", "win32", "linux"];
|
|
7
8
|
function isSupportedPlatform(platform) {
|
|
8
9
|
return SUPPORTED_PLATFORMS.includes(platform);
|
|
@@ -96,11 +97,12 @@ export async function openSpotify(args) {
|
|
|
96
97
|
}
|
|
97
98
|
const running = await isSpotifyRunning();
|
|
98
99
|
if (running) {
|
|
100
|
+
const deviceResult = await activateDevice();
|
|
99
101
|
return {
|
|
100
102
|
content: [
|
|
101
103
|
{
|
|
102
104
|
type: "text",
|
|
103
|
-
text:
|
|
105
|
+
text: `Spotify is already running. ${deviceResult}`,
|
|
104
106
|
},
|
|
105
107
|
],
|
|
106
108
|
};
|
|
@@ -124,15 +126,45 @@ export async function openSpotify(args) {
|
|
|
124
126
|
if (args.wait_seconds && args.wait_seconds > 0) {
|
|
125
127
|
await sleep(args.wait_seconds);
|
|
126
128
|
}
|
|
129
|
+
// Poll for a device and activate it so playback commands work immediately
|
|
130
|
+
const deviceResult = await activateDevice();
|
|
131
|
+
const waitMsg = args.wait_seconds
|
|
132
|
+
? ` Waited ${args.wait_seconds} seconds for it to initialize.`
|
|
133
|
+
: "";
|
|
127
134
|
return {
|
|
128
135
|
content: [
|
|
129
136
|
{
|
|
130
137
|
type: "text",
|
|
131
|
-
text:
|
|
132
|
-
? `Spotify opened. Waited ${args.wait_seconds} seconds for it to initialize.`
|
|
133
|
-
: "Spotify opened.",
|
|
138
|
+
text: `Spotify opened.${waitMsg} ${deviceResult}`,
|
|
134
139
|
},
|
|
135
140
|
],
|
|
136
141
|
};
|
|
137
142
|
}
|
|
143
|
+
const DEVICE_POLL_INTERVAL_S = 2;
|
|
144
|
+
const DEVICE_POLL_MAX_ATTEMPTS = 5;
|
|
145
|
+
async function activateDevice() {
|
|
146
|
+
try {
|
|
147
|
+
const client = await getAuthenticatedClient();
|
|
148
|
+
for (let attempt = 0; attempt < DEVICE_POLL_MAX_ATTEMPTS; attempt++) {
|
|
149
|
+
const response = await client.getMyDevices();
|
|
150
|
+
const devices = response.body?.devices ?? [];
|
|
151
|
+
if (devices.length > 0) {
|
|
152
|
+
const device = devices[0];
|
|
153
|
+
if (!device.is_active) {
|
|
154
|
+
await client.transferMyPlayback([device.id]);
|
|
155
|
+
logger.info(`Activated device: ${device.name}`);
|
|
156
|
+
}
|
|
157
|
+
return `Device active: ${device.name}.`;
|
|
158
|
+
}
|
|
159
|
+
logger.debug(`No devices found (attempt ${attempt + 1}/${DEVICE_POLL_MAX_ATTEMPTS}), retrying...`);
|
|
160
|
+
await sleep(DEVICE_POLL_INTERVAL_S);
|
|
161
|
+
}
|
|
162
|
+
logger.warn("No Spotify devices found after polling");
|
|
163
|
+
return "Warning: No Spotify device found. You may need to interact with Spotify before playback commands will work.";
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
logger.error("Failed to activate device:", error);
|
|
167
|
+
return "Warning: Could not auto-activate device. Playback commands may require manual interaction with Spotify.";
|
|
168
|
+
}
|
|
169
|
+
}
|
|
138
170
|
//# sourceMappingURL=system.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/tools/system.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/tools/system.ts"],"names":[],"mappings":"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"}
|