2024-07-08 23:26:18 +02:00
# XMPP PubSub To Atom
2024-07-08 10:57:51 +02:00
2024-07-08 23:26:18 +02:00
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](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.
2024-07-09 16:02:03 +02:00
## Preview
2024-07-09 16:08:26 +02:00
[<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 )
2024-07-09 16:02:03 +02:00
2024-07-08 23:26:18 +02:00
## Requirements
* Python >= 3.5
* fastapi
* feedgenerator
* lxml
* slixmpp
* tomllib
2024-07-09 15:54:37 +02:00
* uvicorn
2024-07-08 23:26:18 +02:00
## Installation
2024-07-09 14:29:22 +02:00
### Download
2024-07-08 23:26:18 +02:00
Extract the source package to a directory that you have permission to run
software.
2024-07-09 14:29:22 +02:00
```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:
2024-07-08 23:26:18 +02:00
```shell
$ python -m uvicorn pubsub_to_atom:app --reload
2024-07-09 14:29:22 +02:00
$ 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
2024-07-08 23:26:18 +02:00
$ fastapi dev pubsub_to_atom.py
```
## Usage
2024-07-08 23:33:48 +02:00
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.
2024-07-08 23:26:18 +02:00
2024-07-09 14:29:22 +02:00
### Viewing PubSub
2024-07-08 23:26:18 +02:00
2024-07-09 14:29:22 +02:00
Suppose you have the following nodes and items.
2024-07-08 23:26:18 +02:00
2024-07-09 16:02:03 +02:00
|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|
2024-07-08 23:26:18 +02:00
2024-07-09 14:29:22 +02:00
#### To view node items
2024-07-08 23:26:18 +02:00
2024-07-09 15:54:37 +02:00
```
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
```
2024-07-08 23:26:18 +02:00
2024-07-09 14:29:22 +02:00
#### To view a node item
2024-07-08 23:26:18 +02:00
2024-07-09 15:54:37 +02:00
```
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
```
2024-07-08 23:26:18 +02:00
## Author
Schimon Jehudah Zackary
## License
CSS and XSLT stylesheets are licensed under the license MIT.
2024-07-08 23:33:48 +02:00
JS scripts are licensed under the license MIT.
2024-07-08 23:26:18 +02:00
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
2024-07-09 17:17:18 +02:00
* [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.
2024-07-08 23:26:18 +02:00
* [AtomToPubsub ](https://github.com/edhelas/atomtopubsub ) - A little client that parses Atom + RSS feeds and send them on XMPP Pubsub Nodes.