Tom Casavant
mrpresidenttom.threads.net.ap.brid.gy
Tom Casavant
@mrpresidenttom.threads.net.ap.brid.gy
Wrote a blog post about a small ActivityPub project I'm working on to bridge my Steam screenshots to the fediverse.

https://tomcasavant.com/untitled-gaming-social/

Fediverse Threads

https://tomcasavant.com/untitled-gaming-social
Untitled Gaming Social
<p><a href="https://ugs.tomkahe.com/user/MrPresidentTom"><img alt="Follow @[email protected]" src="https://fedi-badge.deno.dev/@[email protected]/followers.svg?style=plastic"/></a></p> <p>Early last year I had built a plugin for Steam Decky Loader that would <a href="https://github.com/TomCasavant/DeckMastodonPoster">upload your screenshots to a mastodon-compatible API</a>. My goal was to automatically upload those images to a Pixelfed profile, but I ran into several issues (there was no secure way to store passwords/keys in decky and <a href="https://github.com/pixelfed/pixelfed/issues/2522">Pixelfed has a persistent bug</a> I was running into with OAuth) and eventually I just threw it away.</p> <p>Finally, I have come back to this general idea. But, instead of implementing it in the Steam client, I've instead set up a small ActivityPub server that uses the Steam API to fetch new screenshots and publish them to followers of the account. The server doesn't actually store any image files at the moment so it should be rather lightweight, though this may change in the future.</p> <p>I'm not sure what this will look like in the future, but I'd like to also find a way to federate achievements on both Steam as well as other gaming platforms. (My current thinking is a <code>Note</code> object with additional fields and an emoji representing the achievement icon? Still working it out)</p> <p>Current features:</p> <ul> <li>Creates an ActivityPub profile with your Steam profile image as the user image.</li> <li>Each profile, when viewed at the original page, should redirect to the user's Steam profile</li> <li>Each screenshot has a corresponding <code>Note</code> object with the image attachment and the game name</li> <li>Maintains a list of followers for the user</li> <li>Every 10 minutes it looks back at the most recent uploaded screenshots via the Steam web API, if there are any new posts it makes a <code>Create</code> activity and shares it with the account's followers</li> <li>(May be removed later) Every 45 minutes it grabs a screenshot from the database, if it hasn't already made a <code>Create</code> activity it will send out that post to all the followers (this is intended to backfill all my previous screenshots)</li> <li>Searching for a post via its Steam URL <ul> <li>e.g. searching for <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=2856153203">https://ugs.tomkahe.com/activities/https://steamcommunity.com/sharedfiles/filedetails/?id=2856153203</a> should fetch the activity</li> </ul> </li> </ul> <p>Up Next:</p> <ul> <li>Add a web frontend</li> <li>Handle Like/Boost activities and display them in the frontend</li> <li>Discoverability tag for profile/posts</li> <li>Steam Achievement Support</li> <li>Retroachievement profile support</li> <li>Ability to follow other users</li> </ul> <p>Longer Term Plans:</p> <ul> <li>Multi-user support</li> <li>Some sort of API that lets you share screenshots from games outside of traditional platforms (e.g. upload screenshots from an Android App)</li> </ul> <table> <thead> <tr> <th style="text-align:center"><a href="https://tomcasavant.com/img/ESJvrvIwjP-635.png"><picture><source sizes="100vw" srcset="/img/ESJvrvIwjP-600.avif 600w" type="image/avif"><source sizes="100vw" srcset="/img/ESJvrvIwjP-600.webp 600w" type="image/webp"><img alt="Screenshot of the UGS profile as visible from my Mastodon server." class="u-photo visible" decoding="async" height="852" loading="lazy" src="https://tomcasavant.com/img/ESJvrvIwjP-600.png" width="600"/></source></source></picture></a></th> </tr> </thead> </table> <p>I wouldn't recommend attempting to build/run it just yet, there's still a lot of work to be done and the database structure is far from finalized but the source code is available under the MIT license up on github. I also have my instance running up on a Linode server at <a href="https://ugs.tomkahe.com/">https://ugs.tomkahe.com/</a>, so you should <em>theoretically</em> be able to follow that account from your own instance by searching for @[email protected].</p> <p><a href="https://github.com/TomCasavant/ugs">Source Code</a></p>
tomcasavant.com
January 3, 2025 at 8:23 PM
Reposted by Tom Casavant
🪐 Linkified Fediverse usernames are fully rolled out! + bug fixes 🪐

Now that the latest Threads iOS app has been released, we now support linkified Fediverse usernames on all platforms! We also fixed a few bugs around case sensitivity and overlap with IG usernames, so the whole feature works […]
Original post on threads.net
www.threads.net
December 11, 2024 at 3:06 PM
Test
December 6, 2024 at 3:57 PM