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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user