🐛 If you quote a tweet with your own media then it takes priority over the quoted tweets media
🐛 Quoted tweets are now shown the same as retweets so its clear what they are
✨There's a new option to turn off including the link in instagram posts
✨There's a new option to enable conditional posting using the #nm (don't post to mastodon) and #nt (don't post to twitter) hashtags
I think I've got a fix in to allow 280 character tweets to go through reliably BUT Mastodon and twitter don't count characters the same way. No matter how many codepoints are in an emoji Mastodon counts it as 1 character so 💩 and 👩👩👧👧 are 1 but twitter counts those as 2 and 11 characters respectively so Tweet splitting/truncating will still happen if people use emoji and go over 280 chars. There's nothing I can do about it sadly.
If an image is marked as sensitive in a toot you can choose to link to your toot over on twitter instead of sending the image across.
Retweets are now *always* posted as Unlisted to the fediverse. This matches the behavior of boosted toots in Mastodon.
Well turns out my db corruption fix from this afternoon only created a different type of corruption. I apologize if things were cross-posted incorrectly. I believe I've got it sorted out now.
Fortunately I had a backup of the DB from before the update. The bad thing is that the workers had run after that DB dump was made so I couldn't be sure that the message IDs hadn't been updated so restoring ran the risk of duplicate messages.
I wrote some code to dump the pickled settings from the good db backup out to files, moved them to the server, and restored just the good settings.
It was a big mistake to store the settings as pickled objects so fixing that is my top priority.
OK sorry for the downtime. What happened is that I added a feature which added some new settings.
This is all fine and good.
Each user's settings are stored as pickled python objects in the DB. Not the best choice but also not really a problem. Weirdly when the updated settings were written back to the DB the data was corrupted by mysql!
"Invalid utf8mb4 character string: '800495'"
When the settings would get read back out moa would crash.
Unfortunately moa is down at the moment. I'm trying to squash a bug.
That was 9 days and now Moa is processing 405 bridges.
I just discovered that the Instagram API is hanging for *minutes* at a time. To work around this I'm randomzing the batches of accounts so that the sames ones don't always get stuck behind an Instagram job.
Last night I added a deferral function to cause a host to be skipped for 10 minutes if a worker gets a connection error. So far it's been working really well. The ongoing connection problems with mastodon.social aren't causing big delays like they normally would.
Welcome to all of the python devs that are signing up!
I added a new graph to show the ratio of message types.
I added 3 more workers to split up the queue and then mastodon.social stopped responding causing the workers to hit their time limits ¯\_(ツ)_/¯
I'm going to add a feature to put a server in the penalty box if it responds with an error or timeout. All other accounts at that server will be skipped until a time limit is reached. Maybe 10 minutes?
If the per-bridge time doesn't change Moa should be able to scale up to ~1000 bridges and maintain a 5-minute delivery schedule.
It takes a worker about 90 seconds right now to process ~130 bridges. That's about 1.4 seconds to check mastodon, twitter, and possibly instagram for new messages.
I added queue splitting to keep the worker run times under control.
Moa is a Mastodon, Twitter, and Instagram cross-posting service