Ver Fonte

Display content of RSS feed as markdown

denikson há 6 anos atrás
pai
commit
a00901a564
3 ficheiros alterados com 15 adições e 2 exclusões
  1. 2 1
      db.js
  2. 12 1
      main.js
  3. 1 0
      package.json

+ 2 - 1
db.js

@@ -62,7 +62,8 @@ db.defaults({
     rssFeeds: [
         {
             url: "http://custommaid3d2.com/index.php?forums/news.49/index.rss",
-            lastUpdate: ""
+            lastUpdate: "",
+            contentElement: "content:encoded"
         }
     ],
     feedOutputs: [

+ 12 - 1
main.js

@@ -3,6 +3,17 @@ const TOKEN = require("./token.js");
 const db = require("./db.js");
 const RSSParser = require("rss-parser");
 const interval = require("interval-promise");
+const TurndownService = require("turndown");
+
+const turndown = new TurndownService();
+turndown.addRule("image", {
+    filter: "img",
+    replacement: () => ""
+});
+turndown.addRule("link", {
+    filter: node => node.nodeName === "A" &&node.getAttribute("href"),
+    replacement: (content, node) => node.getAttribute("href")
+});
 
 const client = new Discord.Client();
 const parser = new RSSParser();
@@ -17,7 +28,7 @@ async function checkFeeds() {
             continue;
         feed.items.filter(i => i.isoDate > feedEntry.lastUpdate).forEach(item => {
             outlets.forEach(ch => {
-                client.channels.get(ch).send(`**${item.title}**\nPosted by ${item.creator}\n${item.link}`);
+                client.channels.get(ch).send(`**${item.title}**\nPosted by ${item.creator}\n${item.link}\n\n${turndown.turndown(item[feedEntry.contentElement]).replace(/( {2}\n|\n\n){2,}/gm, "\n").replace(item.link, "")}`);
             });
         });
         db.get("rssFeeds").find({ url: feedEntry.url}).assign({lastUpdate: feed.items[0].isoDate}).write();

+ 1 - 0
package.json

@@ -24,6 +24,7 @@
     "interval-promise": "^1.2.0",
     "lowdb": "^1.0.0",
     "rss-parser": "^3.4.3",
+    "turndown": "^5.0.1",
     "uws": "^99.0.0"
   },
   "devDependencies": {