+++ title = 'Mastodon snippets' summary = 'snip snip' date = '2023-03-05T12:39:35+0100' categories = ['computerstuff'] tags = ['mastodon','server','linux','reminders'] draft = true +++ Very short und maybe a bit chaotic... ## clear media files https://paste.opensuse.org/pastes/365542654a1e ```bash #!/bin/bash export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" export RAILS_ENV=production exec > /home/mastodon/live/log/prune.log 2>&1 /home/mastodon/live/bin/tootctl statuses remove /home/mastodon/live/bin/tootctl media remove --days=5 /home/mastodon/live/bin/tootctl media remove --prune-profiles --days=60 /home/mastodon/live/bin/tootctl preview_cards remove --days=15 /home/mastodon/live/bin/tootctl media remove-orphans /home/mastodon/live/bin/tootctl cache clear /home/mastodon/live/bin/tootctl media usage date ``` ## further removal of profile pics https://paste.opensuse.org/pastes/4ecbf69cdee7 ```bash #!/usr/bin/env bash # Kept only the accounts compression and jpeg optimization cd /home/mastodon/live/public/system/cache find -name '*.jpg' -print0 | xargs -0 jpegoptim --verbose --preserve --threshold=1 --max=45 find -name '*.jpeg' -print0 | xargs -0 jpegoptim --verbose --preserve --threshold=1 --max=45 cd /home/mastodon/live/public/system/cache/accounts find -name '*.png' -print0 | xargs -0 pngquant --verbose --ext=.png --force --speed 10 --quality 45-50 --skip-if-larger ``` ## moar stuff in RAILS_ENV cnosole https://github.com/mastodon/mastodon/issues/14681 There are several scripts executable with `RAILS_ENV=production bundle exec rails c`, for convenience laid out here with minor corrections. **Do not execute these without understanding what they do!**: Deleting all cached media attachments from external servers to allow web app to refetch them when they are queried. At least on my instance this is reaaally slow, takes tens of seconds per attachment (is this the same as tootctl media remove?): ```ruby MediaAttachment.cached.where.not(remote_url: '').each do |attachment| attachment.file.destroy attachment.thumbnail.destroy attachment.save end ``` Deleting and redownloading all cached remote emojis. This apparently has a problem that the local URLs for the cached emojis change, and the URLs aren't updated to the fetched profile headers. I suppose this should be done before the next steps, assuming the cached local emoji URLs are set up correctly to the profile headers and names at the time of fetching. This doesn't seem to work though, maybe tootctl emoji purge --remote-only would be better: ```ruby CustomEmoji.remote.where.not(image_file_name: nil).where.not(image_remote_url: '').each do |emoji| emoji.image.destroy emoji.image.save emoji.download_image! end ``` Deleting all remote profile avatars, and refetching them. Are these two the same as tootctl accounts refresh --all?: ```ruby Account.remote.where.not(avatar_file_name: nil).where.not(avatar_remote_url: '').each do |a| a.avatar.destroy a.save a.download_avatar! end ``` Deleting all remote profile headers, and refetching them. Hopefully this uses/updates the newly fetched local cached emoji URLs, and also includes the profile name as they often contain emojis: ```ruby Account.remote.where.not(header_file_name: nil).where.not(header_remote_url: '').each do |a| a.header.destroy a.save a.download_header! end ``` It would be awesome to get tooling for these to tootctl. That said, I'm not entirely sure if destroying the entities is necessary before downloading them again, and perhaps we could use remove_entity_cache instead. I'm not very well acquainted with the codebase.