# 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](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 [berlin-xmpp-meetup](screenshot/berlin-xmpp-meetup.png) [let-s-talk-about-xmpp-tricks-with-conversations-author-daniel-gultsch-OqjaQh](screenshot/let-s-talk-about-xmpp-tricks-with-conversations-author-daniel-gultsch-OqjaQh.png) [59d860ab-d7c8-477c-bb4b-86924485cbbb](screenshot/59d860ab-d7c8-477c-bb4b-86924485cbbb.png) [selection](screenshot/selection.png) ## 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 ## 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.