node-red-contrib-tts-ultimate 1.0.54 → 1.0.56

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/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  [![Donate via PayPal](https://img.shields.io/badge/Donate-PayPal-blue.svg?style=flat-square)](https://www.paypal.me/techtoday)
4
4
 
5
+ <p>
6
+ <b>Version 1.0.56</b> March 2023<br/>
7
+ - NEW: Added Node Name property, in the TTS Ultimate node.<br/>
8
+ </p>
9
+ <p>
10
+ <b>Version 1.0.55</b> March 2023<br/>
11
+ - Dedupes the players having the same IP, in the player's list.<br/>
12
+ </p>
5
13
  <p>
6
14
  <b>Version 1.0.54</b> February 2023<br/>
7
15
  - OWNFILE: there was a 60 secs timeout, waiting for end play. Now it has been incfeased to 10 minutes.<br/>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-red-contrib-tts-ultimate",
3
- "version": "1.0.54",
3
+ "version": "1.0.56",
4
4
  "description": "Transforms the text in speech and hear it using Sonos player or generate an audio file to be used with third parties nodes. Works with voices from Amazon, Google (without credentials as well), Microsoft TTS Azure, or your own voice. You can also only create a TTS file to be read by third party nodes. Update of the popular SonosPollyTTS node.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -3,7 +3,7 @@
3
3
  RED.nodes.registerType("ownfileultimate", {
4
4
  category: 'TTSUltimate',
5
5
  defaults: {
6
- name: { value: "" },
6
+ name: { value: "OwnFile" },
7
7
  selectedFile: { value: "", required: true },
8
8
  priority: { value: false }
9
9
  },
@@ -259,13 +259,14 @@ module.exports = function (RED) {
259
259
  //RED.log.warn('Groups ' + JSON.stringify(groups, null, 2))
260
260
  for (let index = 0; index < groups.length; index++) {
261
261
  const element = groups[index];
262
- jListGroups.push({ name: element.Name, host: element.host })
262
+ if (jListGroups.find(x => x.host === element.host) === undefined) jListGroups.push({ name: element.Name, host: element.host })
263
263
  // 02/03/2023 If there are speakers grouped, read the single speaker
264
264
  if (element.hasOwnProperty("ZoneGroupMember") && element.ZoneGroupMember.length > 0) {
265
265
  try {
266
266
  for (let i = 0; i < element.ZoneGroupMember.length; i++) {
267
267
  const single = element.ZoneGroupMember[i];
268
- jListGroups.push({ name: single.ZoneName, host: single.Location.split("//")[1].split(":")[0] }) // Get Name and IP from Location field
268
+ let sHost = single.Location.split("//")[1].split(":")[0]
269
+ if (jListGroups.find(x => x.host === sHost) === undefined) jListGroups.push({ name: single.ZoneName, host: sHost }) // Get Name and IP from Location field
269
270
  }
270
271
  } catch (error) {
271
272
  }
@@ -19,6 +19,11 @@
19
19
  <input type="text" id="node-input-config">
20
20
  </div>
21
21
 
22
+ <div class="form-row">
23
+ <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
24
+ <input type="text" id="node-input-name" placeholder="Node Name">
25
+ </div>
26
+
22
27
  <div id="allGUI">
23
28
  <div class="form-row">
24
29
  <label for="node-input-voice"><i class="icon-tag"></i> Voice</label>
@@ -96,7 +101,7 @@
96
101
  color: '#ffe6ff', // #ffe6ff
97
102
  defaults:
98
103
  {
99
- name: { value: "" },
104
+ name: { value: "TTS-Ultimate" },
100
105
  voice:
101
106
  {
102
107
  value: "Ivy",