125 lines
5.4 KiB
Markdown
125 lines
5.4 KiB
Markdown
# XMPP PubSub To Atom
|
|
|
|
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](https://www.rfc-editor.org/rfc/rfc4287)) from XMPP PubSub nodes ([XEP-0060](http://xmpp.org/extensions/xep-0060.html)).
|
|
|
|
This software was inspired from Tigase and was motivated by Movim.
|
|
|
|
## Preview
|
|
|
|
[<img alt="berlin-xmpp-meetup" src="screenshot/berlin-xmpp-meetup.png" width="200px"/>](screenshot/berlin-xmpp-meetup.png)
|
|
[<img alt="let-s-talk-about-xmpp-tricks-with-conversations-author-daniel-gultsch-OqjaQh" src="screenshot/let-s-talk-about-xmpp-tricks-with-conversations-author-daniel-gultsch-OqjaQh.png" width="200px"/>](screenshot/let-s-talk-about-xmpp-tricks-with-conversations-author-daniel-gultsch-OqjaQh.png)
|
|
[<img alt="59d860ab-d7c8-477c-bb4b-86924485cbbb" src="screenshot/59d860ab-d7c8-477c-bb4b-86924485cbbb.png" width="200px"/>](screenshot/59d860ab-d7c8-477c-bb4b-86924485cbbb.png)
|
|
[<img alt="selection" src="screenshot/selection.png" width="200px"/>](screenshot/selection.png)
|
|
|
|
## Motivation
|
|
|
|
PubSubToAtom is a syndication project which makes journals and publications that are hosted on XMPP PubSub nodes, available
|
|
from HTTP to both, XML news readers and even HTML browsers.
|
|
|
|
This means that instead of hosting a journal or publication HTTP site in the old fashion, one only has to have an HTTP server to host PubSubToAtom and the rest of the content is hosted on the XMPP server.
|
|
|
|
The project also showcases the non-necessity of HTML, as it automatically generates valid XHTML pages by XSLT stylesheets from client-side.
|
|
|
|
## Requirements
|
|
|
|
* Python >= 3.5
|
|
* fastapi
|
|
* feedgenerator
|
|
* lxml
|
|
* slixmpp
|
|
* tomllib
|
|
* uvicorn
|
|
|
|
## Installation
|
|
|
|
### Debian-based Distro
|
|
|
|
```shell
|
|
# apt install python3 python3-fastapi python3-feedgenerator python3-lxml python3-slixmpp python3-tomli uvicorn
|
|
```
|
|
|
|
### Download
|
|
|
|
Extract the source package to a directory that you have permission to run
|
|
software.
|
|
|
|
```shell
|
|
$ 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:
|
|
|
|
```shell
|
|
$ 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 for initial references concerning code, servers and FastAPI.
|
|
|
|
And an important thank you to Simone "roughnecks" Canaletti for testing and deploying PubSubToAtom into production.
|
|
|
|
## Similar Projects
|
|
|
|
* [AtomEntry](https://github.com/tigase/sureim/blob/master/site/src/main/java/tigase/sure/web/site/client/pubsub/AtomEntry.java) and [PubSubPublishViewImpl](https://github.com/tigase/sureim/blob/master/site/src/main/java/tigase/sure/web/site/client/pubsub/PubSubPublishViewImpl.java) - Convert XMPP Pubsub Nodes to Atom Syndication Format and convey them over HTTP.
|
|
|
|
* [AtomToPubsub](https://github.com/edhelas/atomtopubsub) - A little client that parses Atom + RSS feeds and send them on XMPP Pubsub Nodes.
|