4.7 KiB
XMPP PubSub To Atom
A little client that parses XMPP Pubsub Nodes and sends them as Atom Syndication Format or OPML over HTTP.
About
XMPP PubSub To Atom ("XPTA") is a simple Python script that parses XMPP Pubsub Nodes and sends them as Atom Syndication Format or OPML over HTTP.
XPTA generates Atom syndication feeds (RFC 4287) from XMPP PubSub nodes (XEP-0060).
This software was inspired from Tigase and was motivated by Movim.
Preview
Requirements
- Python >= 3.5
- fastapi
- feedgenerator
- lxml
- slixmpp
- tomllib
- uvicorn
Installation
Download
Extract the source package to a directory that you have permission to run software.
$ git clone https://git.xmpp-it.net/sch/PubSubToAtom
$ cd PubSubToAtom/
Configure
Add account credentials to file configuration.toml
.
Start
Execute PubSubToAtom with one of the following commands:
$ python -m uvicorn pubsub_to_atom:app --reload
$ python -m uvicorn pubsub_to_atom:app --reload --host 127.0.0.1 --port 8000
$ uvicorn pubsub_to_atom:app --host 127.0.0.1 --port 8000
$ fastapi dev pubsub_to_atom.py
Usage
It is possible to view a complete node and even a single item, which means, that it is possible to save bandwidth and it further means that a considered and carefully earnest use of this software would saves system overhead, which includes CPU, I/O and RAM usage.
Viewing PubSub
Suppose you have the following nodes and items.
PubSub | Node | Item |
---|---|---|
blog.jmp.chat | urn:xmpp:microblog:0 | launch-2023 |
edhelas%40movim.eu | urn:xmpp:microblog:0 | working-on-launching-the-movim-network-qPBzwc |
goffi%40goffi.org | urn:xmpp:microblog:0 | libervia-v0-8-la-cecilia-BdQ4 |
news.movim.eu | Phoronix | |
pubsub.movim.eu | berlin-xmpp-meetup | 7363a41d-1146-40b3-ac0f-8ee2559591a3 |
pubsub.movim.eu | berlin-xmpp-meetup | let-s-talk-about-the-xsf-and-possibly-other-things-6A8eV4 |
To view node items
http://127.0.0.1:8000/atom?pubsub=edhelas%40movim.eu&node=urn%3Axmpp%3Amicroblog%3A0
http://127.0.0.1:8000/atom?pubsub=news.movim.eu&node=Phoronix
http://127.0.0.1:8000/atom?pubsub=pubsub.movim.eu&node=berlin-xmpp-meetup
To view a node item
http://127.0.0.1:8000/atom?pubsub=blog.jmp.chat&node=urn%3Axmpp%3Amicroblog%3A0&item=launch-2023
http://127.0.0.1:8000/atom?pubsub=edhelas%40movim.eu&node=urn%3Axmpp%3Amicroblog%3A0&item=working-on-launching-the-movim-network-qPBzwc
http://127.0.0.1:8000/atom?pubsub=goffi%40goffi.org&node=urn%3Axmpp%3Amicroblog%3A0&item=libervia-v0-8-la-cecilia-BdQ4
http://127.0.0.1:8000/atom?pubsub=pubsub.movim.eu&node=berlin-xmpp-meetup&item=7363a41d-1146-40b3-ac0f-8ee2559591a3
http://127.0.0.1:8000/atom?pubsub=pubsub.movim.eu&node=berlin-xmpp-meetup&item=let-s-talk-about-the-xsf-and-possibly-other-things-6A8eV4
Author
Schimon Jehudah Zackary
License
CSS and XSLT stylesheets are licensed under the license MIT.
JS scripts are licensed under the license MIT.
Python code is licensed under the license AGPL-3.0 only.
Acknowledgement
Special thanks to "d3x" and "cchianel" from IRC channel #python on irc.libera.chat
Similar Projects
-
AtomEntry and PubSubPublishViewImpl - Convert XMPP Pubsub Nodes to Atom Syndication Format and convey them over HTTP.
-
AtomToPubsub - A little client that parses Atom + RSS feeds and send them on XMPP Pubsub Nodes.