forked from shinmera/multiposter
Small application to post to multiple services simultaneously
- Common Lisp 100%
|
Glenn Thompson
3accee4daf
Add Lemmy client support
- Add clients/lemmy.lisp with full Lemmy API implementation - Support for text, image, video, and link posts - JWT authentication with auto-login - Community resolution (community@instance format) - Post deletion (undo) support - Add lemmy to multiposter.asd components - Update README.mess with Lemmy in supported services list |
||
|---|---|---|
| .woodpecker | Woodpecker | |
| clients | Add Lemmy client support | |
| docs | Doc update | |
| .gitignore | Buncha stuff | |
| config.lisp | Add overflow-mode to multiposter for controlling post truncation behavior | |
| documentation.lisp | Add overflow-mode to multiposter for controlling post truncation behavior | |
| LICENSE | license | |
| main.lisp | Add overflow-mode to multiposter for controlling post truncation behavior | |
| multiposter.asd | Add Lemmy client support | |
| package.lisp | Add overflow-mode to multiposter for controlling post truncation behavior | |
| protocol.lisp | Add overflow-mode to multiposter for controlling post truncation behavior | |
| README.mess | Add Lemmy client support | |
| toolkit.lisp | Add overflow-mode to multiposter for controlling post truncation behavior | |
# About Multiposter This is an application that lets you post to multiple web services at once. ## How To While you can use Multiposter from the REPL, it also has a convenient command line interface. To build a binary, simply run ``sbcl --eval '(asdf:make :multiposter)'``. The following services are supported: - "Cohost"(https://cohost.org) - File (just writes to disk) - Git (commits and pushes) - "Lichat"(https://shirakumo.org/docs/lichat) - "Mastodon"(https://mastodon.social) - "Pixiv"(https://pixiv.net) - "Reader"(https://shirakumo.org/project/reader) - "Studio"(https://shirakumo.org/project/studio) - "Tumblr"(https://tumblr.com) - WebDAV - "Bluesky"(https://bsky.app) - "Discord"(https://discord.com/) via "webhook"(https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks) (text and images only) - "Lemmy"(https://join-lemmy.org) (Fediverse link aggregator) On the command line you can simply run ``multiposter`` and it should show you a nice help text with all the available options and commands. ## Creating New Clients If you'd like to contribute another client to Multiposter, it's not too hard. Simply create a new client class with ``define-client``, and ensure all the properties that should be persisted for it are returned from an ``initargs`` method. Then implement methods for the ``post``, ``ready-p`` and ``setup`` functions. If your service supports undoing/deleting a post, you should also create a ``result`` subclass and implement the ``undo`` method for it. Your ``post`` methods should then return a result instance on success, such that the post can be removed again later if desired. For the ``setup`` function, make sure you implement the following logic: if ``&rest args`` are passed, reinitialise your client to use those initargs. Otherwise, if your client is not yet ``ready-p``, perform an interactive setup using ``query`` to prompt the user for the necessary options.