42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
const { RoonExtension } = require('roon-kit');
|
|
const fs = require('fs');
|
|
|
|
const outputTrackFile = "/tmp/roon_track.txt";
|
|
|
|
const extension = new RoonExtension({
|
|
description: {
|
|
extension_id: 'roon-track-writer',
|
|
display_name: "Roon Track Writer",
|
|
display_version: "0.1.0",
|
|
publisher: 'teraflops',
|
|
email: 'teraflops@example.com'
|
|
},
|
|
RoonApiTransport: 'required',
|
|
subscribe_zones: true
|
|
});
|
|
|
|
|
|
extension.on("subscribe_zones", async (core, response, body) => {
|
|
const changedZones = body.zones_changed ?? [];
|
|
const addedZones = body.zones_added ?? [];
|
|
|
|
for (const zone of [...changedZones, ...addedZones]) {
|
|
if (zone.state === 'playing') {
|
|
const artist = zone.now_playing?.one_line?.line2 || '';
|
|
const track = zone.now_playing?.one_line?.line1 || '';
|
|
const line = `${artist} - ${track}`;
|
|
fs.writeFileSync(outputTrackFile, line);
|
|
console.log(`🎵 Track escrito: ${line}`);
|
|
}
|
|
}
|
|
});
|
|
|
|
extension.start_discovery();
|
|
extension.set_status("Esperando conexión con Roon...");
|
|
|
|
(async () => {
|
|
const core = await extension.get_core();
|
|
extension.set_status("Emparejado con el Core de Roon");
|
|
})();
|
|
|