Newspaper (Syndication Feed Reader)

Native Feed Viewer. Render syndication feeds (supports ActivityStreams, Atom Syndication Format, JSON Feed, Nostr, OPML, OStatus, RDF, RSS, RSS-in-JSON, Sitemap, SMF, and Twtxt).

Old: v25.07.16 - 2025-07-16 - Add references to more syndication projects.
New: v25.08.22 - 2025-08-22 - Add an alert message about XSLT and RSS.

  • --- /tmp/diffy20250909-2920663-30z58p 2025-09-09 08:52:44.964572257 +0000
  • +++ /tmp/diffy20250909-2920663-vwr0uz 2025-09-09 08:52:44.964572257 +0000
  • @@ -1,7 +1,7 @@
  • // ==UserScript==
  • // @name Newspaper (Syndication Feed Reader)
  • // @namespace i2p.schimon.newspaper
  • -// @description Native Feed Viewer. Render syndication feeds (supports ActivityStreams, Atom Syndication Format, JSON Feed, Nostr, OPML, OStatus, RDF, RSS, RSS-in-JSON, SMF, and Twtxt).
  • +// @description Native Feed Viewer. Render syndication feeds (supports ActivityStreams, Atom Syndication Format, JSON Feed, Nostr, OPML, OStatus, RDF, RSS, RSS-in-JSON, Sitemap, SMF, and Twtxt).
  • // @author Schimon Jehudah
  • // @collaborator CY Fung
  • // @collaborator NotYou
  • @@ -16,7 +16,7 @@
  • // @match *://*/*
  • // @exclude *?streamburner=0*
  • // @exclude *&streamburner=0*
  • -// @version 25.07.16
  • +// @version 25.08.22
  • // @run-at document-start
  • // @grant GM.setValue
  • // @grant GM.getValue
  • @@ -35,7 +35,9 @@
  • XPath: Migrate to XPath so that it would be easier to
  • select and possible to select elements with colon.
  • -json https://timburton.com/news?format=json
  • +json
  • +https://timburton.com/news?format=json
  • +https://pentagon-mushroom-xbey.squarespace.com/news?format=json
  • +
  • Open directly from HTML
  • To overcome XML -> HTML issue
  • @@ -162,6 +164,11 @@
  • "feedItemEnclosure" : "enclosure",
  • "feedItemMedia" : "media:content" // CSS Selectors do not work (not even with CSS.escape `media\\:content`. Move to XPath
  • },
  • + sitemapRules = { // TODO
  • + "feedItem" : "sitemap",
  • + "feedItemLink" : "loc",
  • + "feedItemDate" : "lastmod",
  • + },
  • smfRules = {
  • // FIXME "smf\\:xml-feed" does not appear to work
  • // or at least not when it is originated from json
  • @@ -1994,6 +2001,7 @@
  • <li><a href="https://backdropcms.org">Backdrop CMS</a> (<a href="https://github.com/backdrop/backdrop">code</a>)</li>
  • <li><a class="recom" href="https://barf.btxx.org">barf</a> (<a href="https://git.btxx.org/barf">code</a>)</li>
  • <li><a href="https://cfenollosa.github.io/bashblog/">bashblog</a> (<a href="https://github.com/cfenollosa/bashblog">code</a>)</li>
  • + <li><a class="recom" href="https://bearblog.dev">ʕ•ᴥ•ʔ Bear</a> (<a href="https://github.com/HermanMartinus/bearblog">code</a>)</li>
  • <li><a href="https://justine.smithies.me.uk/blarg.html">blarg</a> (<a href="https://git.sr.ht/~justinesmithies/blarg">code</a>)</li>
  • <li><a href="https://karl.berlin/blog.html">blog.sh</a> (<a href="https://github.com/karlb/karl.berlin/blob/master/blog.sh">code</a>)</li>
  • <li><a class="recom" href="https://blogo.site">Blogo</a> (<a href="https://github.com/pluja/blogo">code</a>)</li>
  • @@ -2157,6 +2165,7 @@
  • <li><a href="https://backdropcms.org">Backdrop CMS</a> (<a href="https://github.com/backdrop/backdrop">code</a>)</li>
  • <li><a class="recom" href="https://barf.btxx.org">barf</a> (<a href="https://git.btxx.org/barf">code</a>)</li>
  • <li><a href="https://cfenollosa.github.io/bashblog/">bashblog</a> (<a href="https://github.com/cfenollosa/bashblog">code</a>)</li>
  • + <li><a class="recom" href="https://bearblog.dev">ʕ•ᴥ•ʔ Bear</a> (<a href="https://github.com/HermanMartinus/bearblog">code</a>)</li>
  • <li><a href="https://justine.smithies.me.uk/blarg.html">blarg</a> (<a href="https://git.sr.ht/~justinesmithies/blarg">code</a>)</li>
  • <li><a href="https://karl.berlin/blog.html">blog.sh</a> (<a href="https://github.com/karlb/karl.berlin/blob/master/blog.sh">code</a>)</li>
  • <li><a class="recom" href="https://blogo.site">Blogo</a> (<a href="https://github.com/pluja/blogo">code</a>)</li>
  • @@ -2324,8 +2333,8 @@
  • <h3>MetaGer</h3>
  • <p>MetaGer has been free software under GNU AGPL v3 since August 16, 2016, so that our strict protection of your data and your privacy can be publicly verified and so that you as a programmer can help to make everything even better.</p>
  • <ul>
  • - <li><a href="https://gitlab.metager.de/open-source/MetaGer">Homepage</a></li>
  • - <li><a href="https://metager.de">Source code</a></li>
  • + <li><a href="https://metager.de">Homepage</a></li>
  • + <li><a href="https://gitlab.metager.de/open-source/MetaGer">Source code</a></li>
  • </ul>
  • <h3>SearXNG (RSS supported)</h3>
  • <p>SearXNG is a meta-search engine, aggregating the results of other search engines while not storing information about its clients.</p>
  • @@ -4613,7 +4622,7 @@
  • margin: 1em !important;
  • margin-left: 0 !important;
  • margin-top: 0 !important;
  • - display: block;
  • + /* display: block; */
  • /* border: 4px solid #555; */
  • border-radius: 0.5em;
  • /* min-width: 96%; */
  • @@ -4932,6 +4941,9 @@
  • #articles-filtered {
  • background: #166c23; }
  • +#petition-alert {
  • + background: red; }
  • +
  • #feature-limited {
  • background: indianred; }
  • @@ -7699,6 +7711,14 @@
  • spanElement.className = 'infobar-message';
  • }
  • + // Alert
  • + let alertElement = newDocument.createElement('a');
  • + newDocument.body.prepend(alertElement);
  • + alertElement.textContent = "🆘 Five organizations conspire against the technologies RSS and XSLT. Please help! 🆘";
  • + alertElement.id = 'petition-alert';
  • + alertElement.className = 'infobar-message';
  • + alertElement.href = "https://github.com/whatwg/html/issues/11590";
  • +
  • // A place holder
  • let spanElement = newDocument.createElement('div');
  • newDocument.body.prepend(spanElement);