Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

feeder

A simple RSS/Atom feed reader, just the way I like it (and hope you do to).

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

feeder

A simple RSS/Atom feed reader, just the way I like it (and hope you do to).

Try it here:

See also


developer notes

feeder for the moment, in an attempt to avoid including a full account management sub-system here, uses a link to tx for user authentication. To get going on a version for yourself that doesn't require tx, in unit xxmSession.pas change UserID:=0; to UserID:=1; and create a record in table User for yourself.

supported feed formats

<table> <tr> <th>Name</th> <th>Description</th> </tr>

<tr> <td>Atom</td> <td>xmlns:atom="http://www.w3.org/2005/Atom"</td> </tr>

<tr> <td>RSS</td> <td>valid XML that answers to <code>documentElement.selectNodes('channel/item')</code></td> </tr>

<tr> <td>JSONFeed</td> <td>https://jsonfeed.org/version/1</td> </tr>

<tr> <td>RSS-in-JSON</td> <td>as described here</td> </tr>

<tr> <td>RDF</td> <td>xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" and/or xmlns:rss="http://purl.org/rss/1.0/"</td> </tr>

<tr> <td>Instagram</td> <td>Posts are created from GraphQL query JSON.</td> </tr>

<tr> <td>SPARQL</td> <td><code>PREFIX schema: <http://schema.org//&gt SELECT * WHERE { ?news a schema:NewsArticle</code> ...</td> </td> </tr>

<tr> <td>Tumblr</td> <td>Tumblr has RSS feeds, but since GDPR, requires a consent cookie. I have hardcoded one, but as it expires now and then I need to replace it manually (until I find a better solution or Tumblr no longer requires GDPR consent on RSS fetches)</td> </tr>

<tr> <td>WordPress API</td> <td>If HTML declares <code><link rel="https://api.w.org/"</code>, posts are loaded from <code>/wp/v2/posts</code> JSON.</td> </tr>

<tr> <td>SoundCloud API</td> <td>Use a user's URL to see new tracks as posts.</td> </tr>

<tr> <td>Titanium</td> <td>Posts are loaded from <code>window['titanium-state']=</code> JSON.</td> </tr>

<tr> <td>Fusion</td> <td>Posts are loaded from <code>Fusion.globalContent=</code> JSON.</td> </tr>

<tr> <td>NextData</td> <td>Posts are loaded from <code><script id="NEXT_DATA" type="application/json"></code> JSON.

(Attention: apparently websites have some freedom in how the data itself is structured, and items may not get picked up correctly.)</td> </tr>

<tr> <td>NextPush</td> <td>Posts are loaded from <code><script>self.__next_f.push(</code> calls.

(Attention: apparently websites have some freedom in how the data itself is structured, and items may not get picked up correctly.)</td> </tr>

<tr> <td>NatGeo</td> <td>Posts are loaded from <code>window['natgeo']=</code> JSON.</td> </tr>

<tr> <td>Remix</td> <td>Posts are loaded from <code>window.__remixContext=</code> JSON.</td> </tr>

<tr> <td>Apollo</td> <td>Posts are loaded from <code>window.APOLLO_STATE</code> JSON.</td> </tr>

<tr> <td>Gatsby</td> <td>Posts are loaded from <code>/page-data/index/page-data.json</code>.</td> </tr>

<tr> <td>HTML</td> <td>Headers are searched for an appropriate <code><link rel="alternative"</code> element to update to a feed URL.

If none is found, the HTML content is search for one of these patterns: </td> </tr>

<tr> <td>HTML:P</td> <td>Posts are loaded using a specific set of regular expressions on the raw page HTML data.</code> </td> </tr>

<tr> <td>more?</td> <td>If you find a site with periodical entries, that doesn't offer an RSS feed, feel free to post an issue on this repo with the URL and ny extra information.</td> </tr>

</table>