Permalink
Browse files

Show new posts from forum

  • Loading branch information...
1 parent 7d27dee commit 2aa760bf87f6c0c99bac293ae0bebaebf53c0a83 @CrazyLemon CrazyLemon committed Jan 5, 2017
Showing with 71 additions and 1 deletion.
  1. +2 −1 package.json
  2. +69 −0 scripts/forum-rss.coffee
View
@@ -33,6 +33,7 @@
"then-redis": "latest",
"underscore": "latest",
"youtube-feeds": "latest",
- "parse-rss": "*"
+ "parse-rss": "*",
+ "nodepie": "0.5.0"
}
}
View
@@ -0,0 +1,69 @@
+# Description:
+# RSS feed alerter
+#
+# Dependencies:
+# "nodepie": "0.5.0"
+#
+# Configuration:
+# HUBOT_ALERTS_RSS_FEED - URL of the feed
+# HUBOT_ALERTS_RSS_ANNOUNCE_ROOM - where should Hubot announce new feed items
+# HUBOT_ALERTS_RSS_INTERVAL - how often (in seconds) to check the RSS feed - default: 300 (5 minutes)
+# HUBOT_ALERTS_RSS_PREPEND - text to prepend to alert messages - default: "RSS Alert"
+# HUBOT_ALERTS_RSS_BROKEN_TZ_ADJUSTMENT - if a feed's timezone is broken set this to adjust it - default: 0
+# HUBOT_ALERTS_RSS_SKIP_FIRST - skip any items when first checking the feed - default: true (set to false for debugging)
+#
+# Commands:
+# none
+#
+# Author:
+# larcher
+# Modified:
+# ubuntu-si
+
+NodePie = require("nodepie")
+
+# grab settings from environment variables, with defaults
+feed_url = "https://www.ubuntu.si/forum/discussions/comments/all/feed.rss"
+rss_interval = process.env.HUBOT_ALERTS_RSS_INTERVAL || 60
+broken_tz_adjust = process.env.HUBOT_ALERTS_RSS_BROKEN_TZ_ADJUSTMENT || 0
+skip_first_string = process.env.HUBOT_ALERTS_RSS_SKIP_FIRST || "true"
+skip_first = (skip_first_string == "true")
+
+if skip_first
+ # effectively "mark all as read" when we start up
+ last_check_time = (new Date()).getTime()
+else
+ last_check_time = 0
+
+module.exports = (bot) ->
+ parse_feed = (err,res,body) ->
+ if res.statusCode is not 200
+ console.log "Error retrieving feed - status: " + res.statusCode
+ else
+ feed = new NodePie(body)
+ try
+ feed.init()
+ return feed
+ catch e
+ console.log "Problem parsing feed", e
+ return false
+
+ check_feed = (bot) ->
+ # console.log "Checking alerts feed .. " + (new Date())
+ bot.fetch feed_url , (err,res,body) ->
+ now = (new Date())
+ feed = parse_feed(err,res,body)
+ if feed
+ latest = feed.getItems(0,1)[0]
+ if latest
+ latest_date = latest.getUpdateDate()
+ latest_date.setTime( latest_date.getTime() + (60*60*1000*broken_tz_adjust))
+ if (latest_date - last_check_time ) >= 0
+ result = "[forum] " + latest.getAuthor() + " " + latest.getTitle() + " -- " + latest.getPermalink()
+ if !result
+ console.log "Something failed: "+ result
+ else
+ bot.say result, "#ubuntu-si"
+ last_check_time = now
+
+ setInterval( check_feed, rss_interval*1000, bot)

0 comments on commit 2aa760b

Please sign in to comment.