iobroker.squeezeboxrpc 1.6.2 → 1.6.4
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.
- package/LICENSE +1 -1
- package/README.md +24 -9
- package/io-package.json +30 -29
- package/lib/ioUtil.js +0 -14
- package/lib/iosbplayer.js +0 -18
- package/lib/iosbserver.js +0 -7
- package/package.json +17 -27
- package/widgets/package-lock.json +13 -0
- package/widgets/squeezeboxrpc/build/squeezeboxrpc-dist.js +22 -2
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2019-
|
|
3
|
+
Copyright (c) 2019-2026 oweitman <oweitman@gmx.de>
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -55,6 +55,16 @@ or `NAS`, connect to different streaming providers like `Spotify`, `Deezer`,
|
|
|
55
55
|
|
|
56
56
|
`iobroker upload squeezeboxrpc`
|
|
57
57
|
|
|
58
|
+
## Trouble Shooting
|
|
59
|
+
|
|
60
|
+
### SLIMP3 players
|
|
61
|
+
|
|
62
|
+
It has been reported that older SLIMP3 players may be
|
|
63
|
+
unable to connect to the server while the adapter is searching
|
|
64
|
+
for new servers. Disabling the search under
|
|
65
|
+
´Instance Configuration -> Performance Settings -> Search for other LMS servers´
|
|
66
|
+
should allow the player to connect.
|
|
67
|
+
|
|
58
68
|
## Provided states
|
|
59
69
|
|
|
60
70
|
### Server
|
|
@@ -543,21 +553,21 @@ For self formating there are some predefined css-classes:
|
|
|
543
553
|
|
|
544
554
|
- Implementing LMS/Lyrion for browsing is hell.
|
|
545
555
|
- The technical model for this widget is the "Material" theme plugin
|
|
546
|
-
in the LMS/Lyrion server.
|
|
556
|
+
in the LMS/Lyrion server.
|
|
547
557
|
- Not all features are currently implemented.
|
|
548
|
-
|
|
549
|
-
|
|
558
|
+
- All input field types are not yet available.
|
|
559
|
+
- Not all item types may have been implemented.
|
|
550
560
|
- Optional, extensive debug output has been added for analysis (see also attributes).
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
561
|
+
- Output of the function reference: All function names are output in
|
|
562
|
+
order in the browser console.
|
|
563
|
+
- Output of the data reference: All data requested and returned
|
|
564
|
+
by the server is output.
|
|
555
565
|
|
|
556
566
|
If testers encounter errors/problems or missing implementations,
|
|
557
567
|
please provide as detailed a description as possible:
|
|
558
568
|
|
|
559
569
|
- Where does the data come from in the LMS/Lyrion
|
|
560
|
-
(already built-in service/additionally installed plugin)
|
|
570
|
+
(already built-in service/additionally installed plugin)
|
|
561
571
|
- What steps/clicks were performed to create the problem
|
|
562
572
|
- What are the function references and data references?
|
|
563
573
|
|
|
@@ -630,6 +640,11 @@ are contained in the following CLI documentation:
|
|
|
630
640
|
### **WORK IN PROGRESS**
|
|
631
641
|
|
|
632
642
|
-->
|
|
643
|
+
### 1.6.4 (2026-03-25)
|
|
644
|
+
|
|
645
|
+
- test remove node 18,extend to node 24
|
|
646
|
+
- update packages
|
|
647
|
+
|
|
633
648
|
### 1.6.2 (2025-05-05)
|
|
634
649
|
|
|
635
650
|
- fix node version in github workflow
|
|
@@ -982,4 +997,4 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
982
997
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
983
998
|
SOFTWARE.
|
|
984
999
|
|
|
985
|
-
Copyright (c) 2019-
|
|
1000
|
+
Copyright (c) 2019-2026 oweitman
|
package/io-package.json
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "squeezeboxrpc",
|
|
4
|
-
"version": "1.6.
|
|
4
|
+
"version": "1.6.4",
|
|
5
5
|
"news": {
|
|
6
|
-
"1.6.
|
|
7
|
-
"en": "
|
|
8
|
-
"de": "
|
|
9
|
-
"ru": "
|
|
10
|
-
"pt": "
|
|
11
|
-
"nl": "
|
|
12
|
-
"fr": "
|
|
13
|
-
"it": "
|
|
14
|
-
"es": "
|
|
15
|
-
"pl": "
|
|
16
|
-
"uk": "
|
|
17
|
-
"zh-cn": "
|
|
6
|
+
"1.6.4": {
|
|
7
|
+
"en": "test remove node 18,extend to node 24\nupdate packages",
|
|
8
|
+
"de": "test entfernen node 18,extend to node 24\nupdate-pakete",
|
|
9
|
+
"ru": "тест удалить узел 18, расширить узел 24\nобновление пакетов",
|
|
10
|
+
"pt": "teste remover o nó 18, extend ao nó 24\natualizar pacotes",
|
|
11
|
+
"nl": "test verwijder node 18, extend naar node 24\npakketten bijwerken",
|
|
12
|
+
"fr": "test enlever le noeud 18,extendre au noeud 24\nmettre à jour les paquets",
|
|
13
|
+
"it": "prova rimuovere nodo 18, estend to node 24\npacchetti di aggiornamento",
|
|
14
|
+
"es": "prueba eliminar nodo 18,extender a nodo 24\nactualizar paquetes",
|
|
15
|
+
"pl": "test usunąć węzeł 18, rozszerzyć na węzeł 24\naktualizacja pakietów",
|
|
16
|
+
"uk": "test remove node 18,потенд в вузол 24\nоновлення пакетів",
|
|
17
|
+
"zh-cn": "测试去除节点 18, 延伸至节点 24\n更新软件包"
|
|
18
18
|
},
|
|
19
|
-
"1.6.
|
|
20
|
-
"en": "
|
|
21
|
-
"de": "
|
|
22
|
-
"ru": "
|
|
23
|
-
"pt": "
|
|
24
|
-
"nl": "
|
|
25
|
-
"fr": "
|
|
26
|
-
"it": "
|
|
27
|
-
"es": "
|
|
28
|
-
"pl": "
|
|
29
|
-
"uk": "
|
|
30
|
-
"zh-cn": "
|
|
19
|
+
"1.6.3": {
|
|
20
|
+
"en": "test remove node 18,extend to node 24\nupdate packages",
|
|
21
|
+
"de": "test entfernen node 18,extend to node 24\nupdate-pakete",
|
|
22
|
+
"ru": "тест удалить узел 18, расширить узел 24\nобновление пакетов",
|
|
23
|
+
"pt": "teste remover o nó 18, extend ao nó 24\natualizar pacotes",
|
|
24
|
+
"nl": "test verwijder node 18, extend naar node 24\npakketten bijwerken",
|
|
25
|
+
"fr": "test enlever le noeud 18,extendre au noeud 24\nmettre à jour les paquets",
|
|
26
|
+
"it": "prova rimuovere nodo 18, estend to node 24\npacchetti di aggiornamento",
|
|
27
|
+
"es": "prueba eliminar nodo 18,extender a nodo 24\nactualizar paquetes",
|
|
28
|
+
"pl": "test usunąć węzeł 18, rozszerzyć na węzeł 24\naktualizacja pakietów",
|
|
29
|
+
"uk": "test remove node 18,потенд в вузол 24\nоновлення пакетів",
|
|
30
|
+
"zh-cn": "测试去除节点 18, 延伸至节点 24\n更新软件包"
|
|
31
31
|
},
|
|
32
|
-
"1.6.
|
|
32
|
+
"1.6.2": {
|
|
33
33
|
"en": "upgrade dependency js-controller\nnew widget, but only alpha version for testing and improvement\nfix issues of adapter checker",
|
|
34
34
|
"de": "upgrade abhängigkeit js-controller\nneue widget, aber nur alpha-version für tests und verbesserung\nprobleme des adapter-checkers beheben",
|
|
35
35
|
"ru": "обновление зависимостей js-контроллера\nновый виджет, но только альфа-версия для тестирования и улучшения\nустранение проблем с проверкой адаптера",
|
|
@@ -142,7 +142,8 @@
|
|
|
142
142
|
"loglevel": "info",
|
|
143
143
|
"tier": 3,
|
|
144
144
|
"restartAdapters": [
|
|
145
|
-
"vis"
|
|
145
|
+
"vis",
|
|
146
|
+
"vis-2"
|
|
146
147
|
],
|
|
147
148
|
"mode": "daemon",
|
|
148
149
|
"type": "multimedia",
|
|
@@ -155,12 +156,12 @@
|
|
|
155
156
|
},
|
|
156
157
|
"dependencies": [
|
|
157
158
|
{
|
|
158
|
-
"js-controller": ">=
|
|
159
|
+
"js-controller": ">=6.0.12"
|
|
159
160
|
}
|
|
160
161
|
],
|
|
161
162
|
"globalDependencies": [
|
|
162
163
|
{
|
|
163
|
-
"admin": ">=6.17
|
|
164
|
+
"admin": ">=7.6.17"
|
|
164
165
|
}
|
|
165
166
|
]
|
|
166
167
|
},
|
package/lib/ioUtil.js
CHANGED
|
@@ -169,20 +169,6 @@ class ioUtil {
|
|
|
169
169
|
const name = (level1path ? `${level1path}.` : '') + (level2path ? `${level2path}.` : '') + id;
|
|
170
170
|
this.adapter.getState(name, callback);
|
|
171
171
|
}
|
|
172
|
-
/**
|
|
173
|
-
* Creates a state object in the ioBroker system.
|
|
174
|
-
*
|
|
175
|
-
* @param stateTemplate - The template containing the common properties of the state.
|
|
176
|
-
* @param level1path - The first level path to prepend to the state name, can be null or empty.
|
|
177
|
-
* @param level2path - The second level path to prepend to the state name, can be null or empty.
|
|
178
|
-
* @param callback - Optional callback function, called when the state is created.
|
|
179
|
-
*/
|
|
180
|
-
createState(stateTemplate, level1path = false, level2path = false, callback) {
|
|
181
|
-
this.logdebug(`createState ${stateTemplate.name}`);
|
|
182
|
-
const name = (level1path ? `${level1path}.` : '') + (level2path ? `${level2path}.` : '') + stateTemplate.name;
|
|
183
|
-
this.logdebug(`Create Key ${name}`);
|
|
184
|
-
this.adapter.createState(level1path, level2path, stateTemplate.name, stateTemplate, callback);
|
|
185
|
-
}
|
|
186
172
|
/**
|
|
187
173
|
* Sets the state of an object in the ioBroker system.
|
|
188
174
|
*
|
package/lib/iosbplayer.js
CHANGED
|
@@ -46,7 +46,6 @@ const { ioUtil } = require('./ioUtil');
|
|
|
46
46
|
* - createArtworkUrl: Generates a URL for player artwork.
|
|
47
47
|
* - disconnect: Handles player disconnection.
|
|
48
48
|
* - connect: Handles player connection.
|
|
49
|
-
* - createState: Creates a state object for the player.
|
|
50
49
|
* - createObject: Creates a device or state object.
|
|
51
50
|
* - request: Sends a request to the server.
|
|
52
51
|
* - setTPE2Handling: Sets the TPE2 handling mode.
|
|
@@ -1052,23 +1051,6 @@ function ioSBPlayer(server, playerdata) {
|
|
|
1052
1051
|
this.doObserverPlayer();
|
|
1053
1052
|
this.connected = 1;
|
|
1054
1053
|
};
|
|
1055
|
-
/**
|
|
1056
|
-
* Creates a state object for the player if it does not already exist.
|
|
1057
|
-
*
|
|
1058
|
-
* @param stateTemplate - The template containing the common properties of the state.
|
|
1059
|
-
* @param [level1path] - The first level path to prepend to the state name, can be false or empty.
|
|
1060
|
-
* @param [level2path] - The second level path to prepend to the state name, can be false or empty.
|
|
1061
|
-
* @returns The state template with an 'exist' property set to true.
|
|
1062
|
-
*/
|
|
1063
|
-
this.createState = function (stateTemplate, level1path = false, level2path = false) {
|
|
1064
|
-
const name = (level1path ? `${level1path}.` : '') + (level2path ? `${level2path}.` : '') + stateTemplate.name;
|
|
1065
|
-
this.ioUtil.logsilly(`Create state ${name}`);
|
|
1066
|
-
if (!this.currentStates[name]) {
|
|
1067
|
-
this.adapter.createState(level1path, level2path, stateTemplate.name, stateTemplate);
|
|
1068
|
-
}
|
|
1069
|
-
stateTemplate.exist = true;
|
|
1070
|
-
return stateTemplate;
|
|
1071
|
-
};
|
|
1072
1054
|
/**
|
|
1073
1055
|
* Creates a state object in the ioBroker system if it does not already exist.
|
|
1074
1056
|
*
|
package/lib/iosbserver.js
CHANGED
|
@@ -1231,13 +1231,6 @@ function IoSbServer(adapter) {
|
|
|
1231
1231
|
stateTemplate.exist = true;
|
|
1232
1232
|
return stateTemplate;
|
|
1233
1233
|
};
|
|
1234
|
-
this.createState = function (stateTemplate, level1path = false, level2path = false, callback) {
|
|
1235
|
-
const name = (level1path ? `${level1path}.` : '') + (level2path ? `${level2path}.` : '') + stateTemplate.name;
|
|
1236
|
-
this.ioUtil.logsilly(`Create state ${name}`);
|
|
1237
|
-
this.adapter.createState(level1path, level2path, stateTemplate.name, stateTemplate, callback);
|
|
1238
|
-
stateTemplate.exist = true;
|
|
1239
|
-
return stateTemplate;
|
|
1240
|
-
};
|
|
1241
1234
|
this.createFolder = async function (foldername, level1path, level2path) {
|
|
1242
1235
|
const id = (level1path ? `${level1path}.` : '') + (level2path ? `${level2path}.` : '') + foldername;
|
|
1243
1236
|
this.ioUtil.logsilly(`createFolder ${id}`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.squeezeboxrpc",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.4",
|
|
4
4
|
"description": "ioBroker Logitech Squeezebox Adapter over JSON/RPC-Protocol",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "oweitman",
|
|
@@ -23,36 +23,25 @@
|
|
|
23
23
|
"node": ">= 20"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@iobroker/adapter-core": "^3.2
|
|
27
|
-
"jayson": "^4.
|
|
28
|
-
"lodash": "^4.17.
|
|
26
|
+
"@iobroker/adapter-core": "^3.3.2",
|
|
27
|
+
"jayson": "^4.3.0",
|
|
28
|
+
"lodash": "^4.17.23",
|
|
29
29
|
"super": "^0.2.3"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@alcalzone/release-script": "^
|
|
33
|
-
"@alcalzone/release-script-plugin-iobroker": "^
|
|
34
|
-
"@alcalzone/release-script-plugin-license": "^
|
|
35
|
-
"@alcalzone/release-script-plugin-manual-review": "^
|
|
36
|
-
"@iobroker/adapter-dev": "^1.
|
|
37
|
-
"@iobroker/eslint-config": "^2.0
|
|
38
|
-
"@iobroker/testing": "^5.
|
|
39
|
-
"@tsconfig/node18": "^18.2.
|
|
40
|
-
"@types/
|
|
41
|
-
"@types/chai-as-promised": "^8.0.0",
|
|
42
|
-
"@types/mocha": "^10.0.9",
|
|
43
|
-
"@types/node": "^22.13.14",
|
|
32
|
+
"@alcalzone/release-script": "^5.1.1",
|
|
33
|
+
"@alcalzone/release-script-plugin-iobroker": "^5.1.2",
|
|
34
|
+
"@alcalzone/release-script-plugin-license": "^5.1.1",
|
|
35
|
+
"@alcalzone/release-script-plugin-manual-review": "^5.1.1",
|
|
36
|
+
"@iobroker/adapter-dev": "^1.5.0",
|
|
37
|
+
"@iobroker/eslint-config": "^2.2.0",
|
|
38
|
+
"@iobroker/testing": "^5.2.2",
|
|
39
|
+
"@tsconfig/node18": "^18.2.6",
|
|
40
|
+
"@types/node": "^25.5.0",
|
|
44
41
|
"@types/proxyquire": "^1.3.31",
|
|
45
|
-
"@types/sinon": "^17.0.3",
|
|
46
|
-
"@types/sinon-chai": "^3.2.12",
|
|
47
|
-
"axios": "^1.9.0",
|
|
48
|
-
"chai": "^4.4.1",
|
|
49
|
-
"chai-as-promised": "^8.0.0",
|
|
50
|
-
"mocha": "^10.8.2",
|
|
51
42
|
"npm-watch": "^0.13.0",
|
|
52
43
|
"proxyquire": "^2.1.3",
|
|
53
|
-
"
|
|
54
|
-
"sinon-chai": "^3.7.0",
|
|
55
|
-
"typescript": "~5.8.3"
|
|
44
|
+
"typescript": "~5.9.3"
|
|
56
45
|
},
|
|
57
46
|
"main": "squeezeboxrpc.js",
|
|
58
47
|
"files": [
|
|
@@ -70,11 +59,12 @@
|
|
|
70
59
|
"test:js": "mocha --config test/mocharc.custom.json \"{!(node_modules|test)/**/*.test.js,*.test.js,test/**/test!(PackageFiles|Startup).js}\"",
|
|
71
60
|
"test:package": "mocha test/package --exit",
|
|
72
61
|
"test:integration": "mocha test/integration --exit",
|
|
73
|
-
"test": "npm run test:
|
|
62
|
+
"test": "npm run test:integration && npm run test:package",
|
|
74
63
|
"check": "tsc --noEmit -p tsconfig.check.json",
|
|
75
64
|
"lint": "eslint -c eslint.config.mjs . ",
|
|
65
|
+
"npm": "npm i && cd widgets && npm i",
|
|
76
66
|
"build": "cd widgets/squeezeboxrpc && npm run build && cd ../..",
|
|
77
|
-
"repochecker": "npx github:oweitman/ioBroker.repochecker https://github.com/oweitman/ioBroker.squeezeboxrpc --local",
|
|
67
|
+
"repochecker": "npx github:oweitman/ioBroker.repochecker https://github.com/oweitman/ioBroker.squeezeboxrpc --local --noinfo",
|
|
78
68
|
"translate": "translate-adapter",
|
|
79
69
|
"translate-widgets": "node ./bin/translate.js --source widgets/squeezeboxrpc/i18n/en.json --format single",
|
|
80
70
|
"release": "release-script --all"
|
|
@@ -1119,7 +1119,7 @@
|
|
|
1119
1119
|
var version;
|
|
1120
1120
|
var init_package = __esm({
|
|
1121
1121
|
"../package.json"() {
|
|
1122
|
-
version = "1.6.
|
|
1122
|
+
version = "1.6.4";
|
|
1123
1123
|
}
|
|
1124
1124
|
});
|
|
1125
1125
|
|
|
@@ -1313,15 +1313,35 @@
|
|
|
1313
1313
|
this.measure = getTextHeight(this);
|
|
1314
1314
|
this.measure.width = getTextWidth("M", this);
|
|
1315
1315
|
}
|
|
1316
|
+
/**
|
|
1317
|
+
* Retrieves the ascent value of the font.
|
|
1318
|
+
*
|
|
1319
|
+
* @returns {number} The ascent value of the font.
|
|
1320
|
+
*/
|
|
1316
1321
|
getAscent() {
|
|
1317
1322
|
return this.measure.ascent;
|
|
1318
1323
|
}
|
|
1324
|
+
/**
|
|
1325
|
+
* Retrieves the descent value of the font.
|
|
1326
|
+
*
|
|
1327
|
+
* @returns {number} The descent value of the font.
|
|
1328
|
+
*/
|
|
1319
1329
|
getDescent() {
|
|
1320
1330
|
return this.measure.descent;
|
|
1321
1331
|
}
|
|
1332
|
+
/**
|
|
1333
|
+
* Retrieves the width of the font.
|
|
1334
|
+
*
|
|
1335
|
+
* @returns {number} The width of the font.
|
|
1336
|
+
*/
|
|
1322
1337
|
getWidth() {
|
|
1323
1338
|
return this.measure.width;
|
|
1324
1339
|
}
|
|
1340
|
+
/**
|
|
1341
|
+
* Retrieves the height value of the font.
|
|
1342
|
+
*
|
|
1343
|
+
* @returns {number} The height value of the font.
|
|
1344
|
+
*/
|
|
1325
1345
|
getHeight() {
|
|
1326
1346
|
return this.measure.height;
|
|
1327
1347
|
}
|
|
@@ -1392,7 +1412,7 @@
|
|
|
1392
1412
|
init_package();
|
|
1393
1413
|
init_textImage();
|
|
1394
1414
|
init_sbClasses();
|
|
1395
|
-
fetch("widgets/squeezeboxrpc/i18n/translations.json").then((res) => __async(
|
|
1415
|
+
fetch("widgets/squeezeboxrpc/i18n/translations.json").then((res) => __async(null, null, function* () {
|
|
1396
1416
|
const i18n = yield res.json();
|
|
1397
1417
|
$.extend(true, systemDictionary, i18n);
|
|
1398
1418
|
}));
|