Giter VIP home page Giter VIP logo

sfeed_mastodon's Introduction

sfeed_mastodon

Mirror Atom/RSS feeds to Mastodon (& friends) simply and UNIX-ly.
Mastodon-based front-end for the sfeed feed-reader.

A screenshot of a post to a Pleroma server. It is a post made by sfeed_mastodon, and contains an article title (“Kajtoj ne nur gajigas la ĉielon”), a URL (https://uea.facila.org/artikoloj/legaĵoj/kajtoj-ne-nur-gajigas-la-ĉielon-r394/), and a quoted excerpt from the URL (“Kajtoj estas ŝat-okupo kaj sporto en okcidentaj landoj, kaj ili estas eĉ pli gravaj en Azio. Tie ili estas tradiciaj, tre popularaj, kaj povas esti tre belaj artaĵoj. Cetere ili delonge utilas al sporto, veter-scienco, fotado kaj militad[…]”).

Usage

sfeed_mastodon takes output from the lovely feed-aggregator sfeed and posts it to the fediverse.
It could be considered a front-end for sfeed.

You can use it to post an entire RSS feed like so:

$ FEDI_AUTH="yourAuthTokenHere"
$ sfeed https://planet.gnu.org/rss20.xml | sfeed_mastodon https://yourServer.here

If you want to regularly update and mirror a feed — making it act like a normal RSS-repost bot — you can run it like so (after some configuration):

$ FEDI_AUTH="yourAuthorizationTokenHere"
$ sfeed_update ~/.config/sfeedrc
$ cat ~/.config/sfeed/* | sfeed_mastodon https://yourServer.here

It’s that simple. It’s safe to run these commands several times in a row — feed entries that have already been posted won’t be reposted, if you use our docs/sfeedrc.example as your sfeedrc.

For proper automation, you can simply put these commands in a shell script and run it regularly. Such a script has been provided, and is described belowmirror_feed.sh.

Installation

First, make sure to install sfeed.

If Guix is your package manager:

$ guix install sfeed

Now, put ./sfeed_mastodon into your $PATH, somewhere. Assuming ~/.local/bin/

$ cp sfeed_mastodon ~/.local/bin/

You’ve done it!

Configuration

sfeed

If you want to regularly update an RSS/Atom feed and post only new entries, we need to do some configuration for sfeed_update. For this, we’ve gotta create a config file and feed directory. You should use the docs/sfeedrc.example file in this repo as a base for your own config file.

$ mkdir ~/.config/sfeed/
$ cp docs/sfeedrc.example ~/.config/sfeedrc

You need to edit the example sfeedrc to add in your own Atom/RSS feeds, or to change the feed path. You can read up more on sfeed’s configuration in its man-page¸ sfeedrc(5).

Warning: If you don’t use the provided sfeedrc.example as a base for your configuration, you will probably end up reposting old entries — our sfeedrc.example only keeps the newest ones in the file to avoid this. So please, use sfeedrc.example.

Mastodon

Now, we need to find our authorization token for use with sfeed_mastodon.

To find your authorization token, you can snoop through request headers in Firefox or Chromium by navigating to Developer Tools (F12) → Network → Headers. Refresh your Mastodon page and examine a request, looking for a header like so:

Authorization: Bearer $FEDI_AUTH

… where $FEDI_AUTH is your token. Copy it!

Whenever you use sfeed_mastodon, make sure that this token is stored in the environment variable $FEDI_AUTH, or pass it with the -a parameter.

mirror_feed

To automatically mirror an Atom/RSS feed, you can make a script that runs sfeed_update & sfeed_mastodon, and then put it in your crontab. docs/mirror_feed.sh is a script which does exactly this.

To use mirror_feed.sh with the ~/.config/sfeedrc from our prior configuration:

$ mirror_feed.sh ~/.config/

mirror_feed.sh has an additional config file: sfeedenv. It is a simple shell script that exports two variables: $FEDI_SERVER and $FEDI_AUTH. It will be sourced by mirror_feed.sh, though you can optionally set these variables in the environment instead.

Barring that, mirror_feed.sh expects a directory containing sfeedrc and a subdirectory sfeed/ for posts — just like the configuration in ~/.config discussed earlier.

Formatting

You might want to know about the template parameter (-t) — this lets you tweak the output for sfeed_mastodon as you wish. With this, you can add specific hash-tags to your posts, for example. Its argument should be HTML with some variables within {{double-cramps}} for post data.

Here is an example, the default value:

<b>{{title}}</b><br>
{{url}}<br>
<br>
<blockquote>{{desc_short}}</blockquote>

Short and sweet, right?

Here are the variables you can use:

  • title
  • url
  • desc
  • desc_short

Misc.

Author: @jadedctrl:jam.xwx.moe
Source: https://hak.xwx.moe/jadedctrl/sfeed_mastodon
License: GPLv3

sfeed_mastodon's People

Contributors

jadedctrl avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.