forked from shinmera/multiposter
Small application to post to multiple services simultaneously
- Common Lisp 100%
|
glenneth
c8ae804975
Adds a configurable overflow-mode setting to the multiposter class that controls what happens when post text exceeds a client's character limit: :truncate - Silently truncate with '...' (default, backward compatible) :error - Signal an error, do not post The setting is persisted in the config file and can be changed via: multiposter set overflow-mode truncate multiposter set overflow-mode error The overflow-mode is automatically passed from the multiposter instance through compose-post to compose-post-text, so all clients respect it without needing individual changes. |
||
|---|---|---|
| .woodpecker | Woodpecker | |
| clients | Fix misspelt words ( #16 ) | |
| 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 | Implement discord webhook client. ( #11 ) | |
| 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 | Implement discord webhook client. ( #11 ) | |
| 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) 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.