|
|
@@ -2,7 +2,7 @@
|
|
|
* @node rss-reader
|
|
|
* @name RSS Reader
|
|
|
* @category data
|
|
|
- * @version 1.1.5
|
|
|
+ * @version 1.1.6
|
|
|
* @description Read and parse RSS/Atom feeds with optional filtering by keyword, date, or count. Supports stateful new item detection.
|
|
|
* @icon rss
|
|
|
*/
|
|
|
@@ -506,11 +506,16 @@ function filterByKeyword(items, keyword) {
|
|
|
if (!keyword) return items;
|
|
|
|
|
|
var lowerKeyword = keyword.toLowerCase();
|
|
|
- return items.filter(function(item) {
|
|
|
+ var result = [];
|
|
|
+ for (var i = 0; i < items.length; i++) {
|
|
|
+ var item = items[i];
|
|
|
var title = (item.title || '').toLowerCase();
|
|
|
var description = (item.description || '').toLowerCase();
|
|
|
- return title.indexOf(lowerKeyword) !== -1 || description.indexOf(lowerKeyword) !== -1;
|
|
|
- });
|
|
|
+ if (title.indexOf(lowerKeyword) !== -1 || description.indexOf(lowerKeyword) !== -1) {
|
|
|
+ result.push(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -525,10 +530,15 @@ function filterByDate(items, newerThanStr) {
|
|
|
return items;
|
|
|
}
|
|
|
|
|
|
- return items.filter(function(item) {
|
|
|
+ var result = [];
|
|
|
+ for (var i = 0; i < items.length; i++) {
|
|
|
+ var item = items[i];
|
|
|
var itemDate = parseDate(item.pubDate);
|
|
|
- return itemDate > threshold;
|
|
|
- });
|
|
|
+ if (itemDate > threshold) {
|
|
|
+ result.push(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
/**
|