All Projects → dariusk → Rss To Activitypub

dariusk / Rss To Activitypub

Licence: mit
An RSS to ActivityPub converter.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Rss To Activitypub

actions-readme-feed
Display RSS feed in your GitHub Profile README
Stars: ✭ 26 (-91.13%)
Mutual labels:  rss
Epiboard
Web Extension — A new tab page extension with material design and useful features 🆕 🎉
Stars: ✭ 262 (-10.58%)
Mutual labels:  rss
Socialhome
A federated social home
Stars: ✭ 282 (-3.75%)
Mutual labels:  activitypub
youtube rss
A YouTube-client for managing subscriptions and watching videos anonymously over Tor without a Google account.
Stars: ✭ 49 (-83.28%)
Mutual labels:  rss
Decsync
Synchronize RSS, contacts, calendars, tasks and more without a server
Stars: ✭ 257 (-12.29%)
Mutual labels:  rss
Pixelfed
Photo Sharing. For Everyone.
Stars: ✭ 3,237 (+1004.78%)
Mutual labels:  activitypub
verssion
RSS feeds of stable release versions, as found in Wikipedia.
Stars: ✭ 15 (-94.88%)
Mutual labels:  rss
Rssbud
RSSHub 的辅助 iOS App,和 RSSHub Radar 类似,他可以帮助你快速发现和订阅网站的 RSS。现已在 App Store 上架。
Stars: ✭ 283 (-3.41%)
Mutual labels:  rss
Infomate.club
RSS feed collections with article summarization
Stars: ✭ 255 (-12.97%)
Mutual labels:  rss
Hnrss
Custom, realtime RSS feeds for Hacker News
Stars: ✭ 277 (-5.46%)
Mutual labels:  rss
Data-mining-python-script
It contain various script on web crawling/ data mining of social web(RSS,facebook,twitter,Linkedin)
Stars: ✭ 24 (-91.81%)
Mutual labels:  rss
django-radio
RadioCo is a radio management application that makes easy scheduling, live recording, publishing...
Stars: ✭ 26 (-91.13%)
Mutual labels:  rss
Alduin
[DISCONTINUED] An RSS, Atom and JSON feed aggregator available on Windows and Linux.
Stars: ✭ 272 (-7.17%)
Mutual labels:  rss
feedparser
A Dart library for parsing RSS feeds
Stars: ✭ 18 (-93.86%)
Mutual labels:  rss
Workbase Server
Slack alternative, email integrated, build with Meteor
Stars: ✭ 284 (-3.07%)
Mutual labels:  rss
feeds-to-pocket
Sends entries from RSS and Atom feeds to Pocket (https://getpocket.com)
Stars: ✭ 24 (-91.81%)
Mutual labels:  rss
Feedbin
A nice place to read on the web.
Stars: ✭ 2,910 (+893.17%)
Mutual labels:  rss
Garss
Github Actions采集RSS, 打造无广告内容优质的头版头条超赞宝藏页
Stars: ✭ 285 (-2.73%)
Mutual labels:  rss
Rsshub
🍰 Everything is RSSible
Stars: ✭ 18,111 (+6081.23%)
Mutual labels:  rss
Hacker News Digest
📰 A responsive interface of Hacker News with summaries and thumbnails.
Stars: ✭ 278 (-5.12%)
Mutual labels:  rss

RSS to ActivityPub Converter

This is a server that lets users convert any RSS feed to an ActivityPub actor that can be followed by users on ActivityPub-compliant social networks like Mastodon.

This is based on my Express ActivityPub Server, a simple Node/Express server that supports a subset of ActivityPub.

Requirements

This requires Node.js v10.10.0 or above.

You also need beanstalkd running. This is a simple and fast queueing system we use to manage polling RSS feeds. Here are installation instructions. On a production server you'll want to install it as a background process.

Installation

Clone the repository, then cd into its root directory. Install dependencies:

npm i

Then copy config.json.template to config.json:

cp config.json.template config.json

Update your new config.json file:

{
  "DOMAIN": "mydomain.com",
  "PORT_HTTP": "3000",
  "PORT_HTTPS": "8443",
  "PRIVKEY_PATH": "/path/to/your/ssl/privkey.pem",
  "CERT_PATH": "/path/to/your/ssl/cert.pem"
}
  • DOMAIN: your domain! this should be a discoverable domain of some kind like "example.com" or "rss.example.com"
  • PORT_HTTP: the http port that Express runs on
  • PORT_HTTPS: the https port that Express runs on
  • PRIVKEY_PATH: point this to your private key you got from Certbot or similar
  • CERT_PATH: point this to your cert you got from Certbot or similar

Run the server!

node index.js

Go to https://whateveryourdomainis.com:3000/convert or whatever port you selected for HTTP, and enter an RSS feed and a username. If all goes well it will create a new ActivityPub user with instructions on how to view the user.

Sending out updates to followers

There is also a file called queueFeeds.js that needs to be run on a cron job or similar scheduler. I like to run mine once a minute. It queries every RSS feed in the database to see if there has been a change to the feed. If there is a new post, it sends out the new post to everyone subscribed to its corresponding ActivityPub Actor.

Local testing

You can use a service like ngrok to test things out before you deploy on a real server. All you need to do is install ngrok and run ngrok http 3000 (or whatever port you're using if you changed it). Then go to your config.json and update the DOMAIN field to whatever abcdef.ngrok.io domain that ngrok gives you and restart your server.

Then make sure to manually run updateFeed.js when the feed changes. I recommend having your own test RSS feed that you can update whenever you want.

Database

This server uses a SQLite database stored in the file bot-node.db to keep track of all the data. To connect directly to the database for debugging, from the root directory of the project, run:

sqlite3 bot-node.db

There are two tables in the database: accounts and feeds.

accounts

This table keeps track of all the data needed for the accounts. Columns:

  • name TEXT PRIMARY KEY: the account name, in the form [email protected]
  • privkey TEXT: the RSA private key for the account
  • pubkey TEXT: the RSA public key for the account
  • webfinger TEXT: the entire contents of the webfinger JSON served for this account
  • actor TEXT: the entire contents of the actor JSON served for this account
  • apikey TEXT: the API key associated with this account
  • followers TEXT: a JSON-formatted array of the URL for the Actor JSON of all followers, in the form ["https://remote.server/users/somePerson", "https://another.remote.server/ourUsers/anotherPerson"]
  • messages TEXT: not yet used but will eventually store all messages so we can render them on a "profile" page

feeds

This table keeps track of all the data needed for the feeds. Columns:

  • feed TEXT PRIMARY KEY: the URI of the RSS feed
  • username TEXT: the username associated with the RSS feed
  • content TEXT: the most recent copy fetched of the RSS feed's contents

License

Copyright (c) 2018 Darius Kazemi. Licensed under the MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].