media assets: allow assets to be regenerated.

Add a `MediaAsset#regenerate!` method that regenerates everything about
the asset, including the metadata, thumbnails, IQDB, cached Cloudflare
URLs, and AI tags.

Fixes it so that a) it's possible to regenerate media assets that aren't
attached to posts and b) regenerating a post regenerates everything. Before
it didn't regenerate the metadata, AI tags, or all of the cached URLs.
This commit is contained in:
evazion
2022-11-01 17:26:03 -05:00
parent d2c520035b
commit 69d88568a6
2 changed files with 44 additions and 31 deletions

View File

@@ -1454,38 +1454,11 @@ class Post < ApplicationRecord
ModAction.log("regenerated IQDB for post ##{id}", :post_regenerate_iqdb, subject: self, user: user)
else
media_file = media_asset.variant(:original).open_file
media_asset.distribute_files!(media_file)
update!(
image_width: media_file.width,
image_height: media_file.height,
file_size: media_file.file_size,
file_ext: media_file.file_ext
)
media_asset.update!(
image_width: media_file.width,
image_height: media_file.height,
file_size: media_file.file_size,
file_ext: media_file.file_ext
)
purge_cached_urls!
update_iqdb
media_asset.regenerate!
ModAction.log("regenerated image samples for post ##{id}", :post_regenerate, subject: self, user: user)
end
end
def purge_cached_urls!
urls = [
preview_file_url, large_file_url, file_url,
tagged_file_url(tagged_filenames: true), tagged_large_file_url(tagged_filenames: true),
]
CloudflareService.new.purge_cache(urls)
end
end
concerning :IqdbMethods do