ugoira: store frame delays in MediaMetadata model.

Store Ugoira frame delays in the MediaMetadata model as a fake EXIF
field instead of in the PixivUgoiraFrameData model. This way we can get
rid of the PixivUgoiraFrameData model completely. This is a step towards
fixing #5264.
This commit is contained in:
evazion
2022-10-09 22:08:37 -05:00
parent 73cc0f65c2
commit 01d10a54f8
5 changed files with 35 additions and 0 deletions

View File

@@ -129,6 +129,7 @@ class PostReplacementsControllerTest < ActionDispatch::IntegrationTest
assert_equal("https://i.pximg.net/img-zip-ugoira/img/2017/04/04/08/57/38/62247364_ugoira1920x1080.zip", @post.source)
assert_equal([{"delay" => 125, "file" => "000000.jpg"}, {"delay" => 125, "file" => "000001.jpg"}], @post.pixiv_ugoira_frame_data.data)
assert_equal([125, 125], @post.media_asset.metadata["Ugoira:FrameDelays"])
end
end

View File

@@ -287,6 +287,14 @@ class UploadsControllerTest < ActionDispatch::IntegrationTest
end
end
context "uploading a ugoira" do
should "work" do
upload = assert_successful_upload("https://www.pixiv.net/en/artworks/45982180", user: @user)
assert_equal([60] * 70, upload.media_assets.first.metadata["Ugoira:FrameDelays"])
end
end
context "uploading a file from a source" do
should_upload_successfully("https://www.artstation.com/artwork/04XA4")
should_upload_successfully("https://dantewontdie.artstation.com/projects/YZK5q")