diff --git a/hardware/wemo/package.json b/hardware/wemo/package.json
index e9e68277..8dc74a6d 100644
--- a/hardware/wemo/package.json
+++ b/hardware/wemo/package.json
@@ -28,14 +28,14 @@
],
"license": "Apache-2.0",
"dependencies": {
- "node-ssdp": "~3.2.5",
- "request": "~2.74.0",
+ "node-ssdp": "~3.3.0",
+ "request": "~2.88.2",
"xml2js": "~0.4.13",
- "util": "~0.10.3",
+ "util": "~0.12.4",
"url": "~0.11.0",
- "ip": "~1.0.1",
+ "ip": "~1.1.5",
"body-parser": "~1.20.0",
- "q": "~1.4.1"
+ "q": "~1.5.1"
},
"node-red": {
"nodes": {
diff --git a/social/feedparser/32-feedparse.html b/social/feedparser/32-feedparse.html
index 8f61c04f..1a9c4770 100644
--- a/social/feedparser/32-feedparse.html
+++ b/social/feedparser/32-feedparse.html
@@ -7,6 +7,11 @@
+
+
+
+
+
@@ -20,7 +25,8 @@
defaults: {
name: {value:""},
url: {value:"", required:true},
- interval: { value:15, required:true, validate:function(v) {return (!isNaN(parseInt(v)) && (parseInt(v) <= 35790))} }
+ interval: { value:15, required:true, validate:function(v) {return (!isNaN(parseInt(v)) && (parseInt(v) <= 35790))} },
+ ignorefirst: { value:false }
},
inputs:0,
outputs:1,
diff --git a/social/feedparser/32-feedparse.js b/social/feedparser/32-feedparse.js
index aea5fef0..9feeeba8 100644
--- a/social/feedparser/32-feedparse.js
+++ b/social/feedparser/32-feedparse.js
@@ -11,11 +11,13 @@ module.exports = function(RED) {
if (n.interval > 35790) { this.warn(RED._("feedparse.errors.invalidinterval")) }
this.interval = (parseInt(n.interval)||15) * 60000;
this.interval_id = null;
+ this.ignorefirst = n.ignorefirst || false;
this.seen = {};
+ this.donefirst = false;
var node = this;
var parsedUrl = url.parse(this.url);
if (!(parsedUrl.host || (parsedUrl.hostname && parsedUrl.port)) && !parsedUrl.isUnix) {
- node.error(RED._("feedparse.errors.invalidurl"));
+ node.error(RED._("feedparse.errors.invalidurl"),RED._("feedparse.errors.invalidurl"));
}
else {
var getFeed = function() {
@@ -33,19 +35,24 @@ module.exports = function(RED) {
else { res.pipe(feedparser); }
});
- feedparser.on('error', function(error) { node.error(error); });
+ feedparser.on('error', function(error) { node.error(error,error); });
feedparser.on('readable', function () {
var stream = this, article;
while (article = stream.read()) { // jshint ignore:line
if (!(article.guid in node.seen) || ( node.seen[article.guid] !== 0 && node.seen[article.guid] != article.date.getTime())) {
- node.seen[article.guid] = article.date?article.date.getTime():0;
+ node.seen[article.guid] = article.date ? article.date.getTime() : 0;
var msg = {
topic: article.origlink || article.link,
payload: article.description,
article: article
};
- node.send(msg);
+ if (node.ignorefirst === true && node.donefirst === false) {
+ // do nothing
+ }
+ else {
+ node.send(msg);
+ }
}
}
});
@@ -53,7 +60,7 @@ module.exports = function(RED) {
feedparser.on('meta', function (meta) {});
feedparser.on('end', function () {});
};
- node.interval_id = setInterval(function() { getFeed(); }, node.interval);
+ node.interval_id = setInterval(function() { node.donefirst = true; getFeed(); }, node.interval);
getFeed();
}
diff --git a/social/feedparser/locales/en-US/32-feedparse.json b/social/feedparser/locales/en-US/32-feedparse.json
index 2a5fd943..c2be15ee 100644
--- a/social/feedparser/locales/en-US/32-feedparse.json
+++ b/social/feedparser/locales/en-US/32-feedparse.json
@@ -4,7 +4,8 @@
"label": {
"feedurl": "Feed url",
"refresh": "Refresh",
- "minutes": "minutes"
+ "minutes": "minutes",
+ "ignorefirst": "Ignore any stories older than restart"
},
"errors": {
"badstatuscode": "error - Bad status code",
diff --git a/social/feedparser/package.json b/social/feedparser/package.json
index ca3d75cc..c729aa53 100644
--- a/social/feedparser/package.json
+++ b/social/feedparser/package.json
@@ -1,6 +1,6 @@
{
"name": "node-red-node-feedparser",
- "version": "0.2.2",
+ "version": "0.3.0",
"description": "A Node-RED node to get RSS Atom feeds.",
"dependencies": {
"feedparser": "^2.2.10",
@@ -15,7 +15,8 @@
"keywords": [
"node-red",
"atom",
- "rss"
+ "rss",
+ "feed"
],
"node-red": {
"nodes": {