[Installation](#installation) | [URL Formats](#format) | [Key Generation](#key) | [Command Usage](#command) # Shitpost [![GitHub](https://img.shields.io/badge/Github-KaitlynEthylia%2Fshitpost-cec2fc?logo=github&style=for-the-badge)](https://github.com/KaitlynEthylia/shitpost) ![Overengineered](https://custom-icon-badges.demolab.com/badge/Over-Engineered-f25788?logo=heart&style=for-the-badge) [![Crates.io](https://img.shields.io/crates/v/shitpost?color=%23f7b679&logo=rust&style=for-the-badge)](https://crates.io/crates/shitpost) A compile-time Markov bot creator for the Fediverse.
## Installation Because the bot is generated at compile time, you need to pass it some environment variables at build time in order for it to retrieve posts to train on. | Variable | Required | Description | | -------- | -------- | ----------- | | `$SHITPOST_IN` | `true` | The URL to retrieve posts from to train the bot. Training a bot on posts that aren't you're own is generally considered a 'dick move'. Don't be a dick. | | `$SHITPOST_KEY` | `false` | A private key with `read` permissions. If this is set, the bot will be able to train off of non-public posts. The key is only used whilst training the bot and is stored nowhere in the compiled binary. | | `$SHITPOST_OUT` | `false` | The URL to send new posts to. If not set then the bot will not be able to automatically send posts. | | `$SHITPOST_SUFFIX` | `false` | An optional suffix to append to each post, usually to indicate that the post was generated. | | `$SHITPOST_VISIBILITY` | `false` | A visibility to apply to all posts. Posts are public by default. Accepted value: `public`, `unlisted` or `private`. | | `$SHITPOST_CW` | `false` | A content warning to apply to all posts. | > [!NOTE] > Compilation may take a long time, This is because requests for posts > have to be sent one at a time (With each request retrieving 40 > posts). > > If you can solve [this](https://akko.wtf/notice/AiENPbvKa2ieHWjrJQ) > problem, let me know, and I'll be able to dramatically speed up > compile times. ## URL Formats The URLs for `$SHITPOST_IN` and `$SHITPOST_OUT` should be API endpoints for the Fediverse software you are using, generally these will be of the form: In: `https:///api/v1/accounts//statuses` Out: `https:///api/v1/statuses` > [!NOTE] > The account the posts are sent to is not part of the URL and > determined by the [private write key given at runtime](#command). ## Key Generation shitpost-rs needs an API key in order to automatically send posts to a Fedi accounts, as well as read non-private posts if you want to train off of those. shitpost-rs doesn't provide any authentication services. Instead you need to provite your own. If you don't already have one, you can generate one from one of these sites: - Pleroma/Akkoma: https://prplecake.github.io/pleroma-access-token/ - Mastodon: https://takahashim.github.io/mastodon-access-token/ - *Key: Haven't found one yet, If you know of one, let me know. > [!CAUTION] > I'm not associated with either of these sites; It's your own > responsibility to make sure you trust them, or for that matter, that > you trust this. They're both open source, make your own judgements > if you feel it necessary. ## Command Usage Calling the `shitpost` binary without any arguments will simply print the generated post to the terminal in HTML format. In order to automatically send posts, a private key must be provided as an argument, as it would be a bad idea to store it in the binary. You can pass it as the first argument, or pass `-` as the first argument, in which case it will read a key from `stdin`.