Tools Used
- Python 3.12
- Objection Engine, for rendering fake Ace Attorney gameplay
- atproto for Python, for reading from and posting to Bluesky
- @ca-dmv-bot.bsky.social, for the source material
- Source code from the CA DMV Bot, for drawing license plate images then translated to use Python and the Pillow library
History
For those of you not in the know, @ca-dmv-bot.bsky.social posts applications for personalized license plates to the California DMV that were flagged for potentially disallowed content. Each post consists of the proposed plate, the customer's explanation of the plate's meaning, the reason the DMV thought it should be rejected, and finally whether or not it was actually rejected.
During 2022 and 2023, I'd been working on the Objection Engine, which was built to render anything to make it look like gameplay from the Ace Attorney games for the Nintendo DS. I was trying to think of applications for it beyond its use in the Twitter Ace Attorney Court Bot (rest in peace), and it occurred to me that the CA DMV Bot's posts would be a great fit. As such, I got to work and started putting together a program that could parse the bot's posts and pass them to the Objection Engine. Before long, I had a prototype:
I was very close to being ready to set it live on Twitter... and then Elon Musk bought Twitter and made it prohibitively expensive to run bots on it. Without the ability to post to Twitter via the API, the project came to a pause.
Other social networks like Mastodon and Bluesky began to appear, and I looked into hosting the bot there. Mastodon seemed like a good candidate - the CA DMV Bot was also available there, and there was even a server dedicated to hosting fun bots! Upon further inspection, though, I realized that the Mastodon version of the CA DMV Bot hadn't been posting, and as such my bot couldn't read its posts in order to generate the videos for itself. Bluesky also had the CA DMV Bot, but was missing video support, so that was a no-go as well.
That is, until around September of 2024, when developers at Bluesky started saying that video was coming soon. When I heard the news, I rushed to put together my bot so it was ready to deploy the moment videos became available, and even contributed to the Python Bluesky API wrapper, atproto, to add support for uploading videos.