diff --git a/modules/default/newsfeed/README.md b/modules/default/newsfeed/README.md
index eaaf2032..ae6ee061 100644
--- a/modules/default/newsfeed/README.md
+++ b/modules/default/newsfeed/README.md
@@ -44,8 +44,15 @@ The following properties can be configured:
showPublishDate |
Display the publish date of an headline.
+ Possible values: true or false
Default value: true
- Default value: true or false
+ |
+
+
+ showDescription |
+ Display the description of an item.
+ Possible values: true or false
+ Default value: false
|
@@ -60,7 +67,7 @@ The following properties can be configured:
updateInterval |
How often do you want to display a new headline? (Milliseconds)
Possible values:1000 - 60000
- Default value: 7500 (7.5 seconds)
+ Default value: 10000 (10 seconds)
|
diff --git a/modules/default/newsfeed/fetcher.js b/modules/default/newsfeed/fetcher.js
index 03dea1b3..32081457 100644
--- a/modules/default/newsfeed/fetcher.js
+++ b/modules/default/newsfeed/fetcher.js
@@ -5,7 +5,9 @@
* MIT Licensed.
*/
-var NewsFetcher = require("./newsfetcher.js");
+var FeedMe = require("feedme");
+var request = require("request");
+var iconv = require("iconv-lite");
/* Fetcher
* Responsible for requesting an update on the set interval and broadcasting the data.
@@ -16,7 +18,6 @@ var NewsFetcher = require("./newsfetcher.js");
var Fetcher = function(url, reloadInterval, encoding) {
var self = this;
- var newsFetcher = new NewsFetcher();
if (reloadInterval < 1000) {
reloadInterval = 1000;
}
@@ -30,21 +31,40 @@ var Fetcher = function(url, reloadInterval, encoding) {
/* private methods */
/* fetchNews()
- * Request the new items from the newsFetcher.
+ * Request the new items.
*/
var fetchNews = function() {
- //console.log('Fetch news.');
clearTimeout(reloadTimer);
reloadTimer = null;
- newsFetcher.fetchNews(url, function(fetchedItems) {
- items = fetchedItems;
+ items = [];
+
+ var parser = new FeedMe();
+
+ parser.on("item", function(item) {
+ var description = item.description || '';
+ var regex = /(<([^>]+)>)/ig;
+ description = description.replace(regex, "");
+
+ items.push({
+ title: item.title,
+ description: description,
+ pubdate: item.pubdate,
+ });
+ });
+
+ parser.on("end", function() {
self.broadcastItems();
scheduleTimer();
- }, function(error) {
+ });
+
+ parser.on("error", function(error) {
fetchFailedCallback(self, error);
scheduleTimer();
- }, encoding);
+ });
+
+ request({uri: url, encoding: null}).pipe(iconv.decodeStream(encoding)).pipe(parser);
+
};
/* scheduleTimer()
diff --git a/modules/default/newsfeed/newsfeed.js b/modules/default/newsfeed/newsfeed.js
index 65a0c867..ef0073e6 100644
--- a/modules/default/newsfeed/newsfeed.js
+++ b/modules/default/newsfeed/newsfeed.js
@@ -13,8 +13,9 @@ Module.register("newsfeed",{
defaults: {
feedUrl: "http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml",
showPublishDate: true,
+ showDescription: false,
reloadInterval: 5 * 60 * 1000, // every 5 minutes
- updateInterval: 7.5 * 1000,
+ updateInterval: 10 * 1000,
animationSpeed: 2.5 * 1000,
encoding: "UTF-8" //ISO-8859-1
},
@@ -83,6 +84,13 @@ Module.register("newsfeed",{
title.innerHTML = this.newsItems[this.activeItem].title;
wrapper.appendChild(title);
+ if (this.config.showDescription) {
+ var description = document.createElement("div");
+ description.className = "small light";
+ description.innerHTML = this.newsItems[this.activeItem].description;
+ wrapper.appendChild(description);
+ }
+
} else {
wrapper.innerHTML = "Loading news ...";
wrapper.className = "small dimmed";
diff --git a/modules/default/newsfeed/newsfetcher.js b/modules/default/newsfeed/newsfetcher.js
deleted file mode 100644
index 50db36f4..00000000
--- a/modules/default/newsfeed/newsfetcher.js
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Magic Mirror
- * NewsFetcher
- *
- * By Michael Teeuw http://michaelteeuw.nl
- * MIT Licensed.
- */
-
-var FeedMe = require("feedme");
-var request = require("request");
-var iconv = require("iconv-lite");
-
-var NewsFetcher = function() {
- var self = this;
-
- self.successCallback = function() {};
- self.errorCallback = function() {};
-
- self.items = [];
-
- /* fetchNews()
- * Fetch the new news items.
- *
- * attribute url string - The url to fetch.
- * attribute success function(items) - Callback on succes.
- * attribute error function(error) - Callback on error.
- */
- self.fetchNews = function(url, success, error, encoding) {
- self.successCallback = success;
- self.errorCallback = error;
-
- var parser = new FeedMe();
-
- parser.on("item", function(item) {
- self.items.push({
- title: item.title,
- pubdate: item.pubdate,
- });
- });
-
- parser.on("end", function(item) {
- self.successCallback(self.items);
- });
-
- parser.on("error", function(error) {
- self.errorCallback(error);
- });
-
- request({uri: url, encoding: null}).pipe(iconv.decodeStream(encoding)).pipe(parser);
- };
-};
-
-module.exports = NewsFetcher;