diff options
-rw-r--r-- | README.md | 66 | ||||
-rw-r--r-- | rss.php | 8 |
2 files changed, 71 insertions, 3 deletions
@@ -1,6 +1,6 @@ # rss_dot_php -A minimal configurable RSS/Atom reader in about 200 lines of PHP. +A minimal configurable RSS/Atom reader in about 400 lines of PHP. This tool isn't intended for standalone reading, instead it's intended to be used as an aggregator for personal feeds, that can be @@ -8,6 +8,15 @@ embedded into a website via an <iframe>. You can see it in action [on my homepage][me]. +## Features + +- RSS/Atom autodetection +- Multiple feeds +- Caching +- Lives in just one file +- Renders post contents +- Renders media files + ## Usage To use this tool, just download the main [`rss.php`][php] file and edit it. @@ -22,6 +31,7 @@ The following options are supported per-feed: - `"title"`: The default. Shows the title as a link to the article. - `"content"`: Shows the title and content. - `"no_title"`: Hides the title, displays the content. A link to the source is put at the bottom. +- `$feeds[feed]["media"]`: Whether or not to render media files in the feed. Boolean. Defaults to true. - `$feeds[feed]["allow_html"]`: Whether or not to allow html in the content area, stripped. Boolean. Defaults to true. - `$feeds[feed]["ttl"]`: How long to cache the feed for, in seconds. Defaults to 1 hour. - `$feeds[feed]["linkrel"]`: For Atom, which `rel=` value to prefer when getting a link. Defaults to alternate. @@ -40,6 +50,60 @@ URLs overlap. [`aleteoryx.css`][css] contains an example stylesheet. +The HTML tree looks like this: + +```html +<main> + <!-- if $feeds[feed]["mode"] is "no_title" --> + <article data-source="<!-- the key in $feeds this post comes from -->"> + <div class="rss-content"> + <div><!-- text content of the entry --></div> + </div> + <span class="rss-source"> + <a href="<!-- $feeds[feed]['home'] -->"> + <!-- the key in $feeds this post comes from --> + </a> + </span> + • + <a href="<!-- post URL -->">Source</a> + • + <time datetime="<!-- post date -->"><!-- post date --></time> + </article> + + <!-- otherwise --> + <article data-source="<!-- the key in $feeds this post comes from -->"> + <div class="rss-content"> + <h1 class="rss-title"><a href="<!-- post URL -->"><!-- post title --></a></h1> + <div><!-- text content of the entry, if set to render --></div> + </div> + <span class="rss-source"> + <a href="<!-- $feeds[feed]['home'] -->"> + <!-- the key in $feeds this post comes from --> + </a> + </span> + • + <time datetime="<!-- post date -->"><!-- post date --></time> + </article> +</main> +``` + +## Support + +rss_dot_php has been tested to work with... + +- Youtube +- Status.Cafe +- Tumblr +- Dreamwidth +- Mastodon + +If you use it with something other than these 5, and it works, let me know! +If you use it with something other than these 5, and it breaks, let me know! + +I can be contacted on Bluesky as [@aleteoryx.me][bsky] and on the Fediverse as [@aleteoryx@labyrinth.zone][fedi] + [me]: https://aleteoryx.me [php]: https://git.aleteoryx.me/cgit/rss_dot_php/tree/rss.php [css]: https://git.aleteoryx.me/cgit/rss_dot_php/tree/aleteoryx.css +[bsky]: https://bsky.app/profile/aleteoryx.me +[fedi]: https://labyrinth.zone/aleteoryx @@ -109,6 +109,7 @@ function load_rss(string $uri, string $linkrel = "alternate", ?bool $allow_html $data["date"]->setTimezone($config["timezone"]); $parsed[] = $data; + unset($data); } } else { // assume atom @@ -169,6 +170,7 @@ function load_rss(string $uri, string $linkrel = "alternate", ?bool $allow_html $data["date"]->setTimezone($config["timezone"]); $parsed[] = $data; + unset($data); } } @@ -381,7 +383,9 @@ $base = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH); </article> <?php endforeach; ?> </main> - <!-- generated by rss_dot_php <?= VERSION ?> - https://git.aleteoryx.me/cgit/rss_dot_php --> +<!-- + generated by rss_dot_php <?= VERSION ?> + <https://git.aleteoryx.me/cgit/rss_dot_php> +--> </body> </html> |