diff --git a/app/models/pixiv_ugoira_frame_data.rb b/app/models/pixiv_ugoira_frame_data.rb index 84b8660c5..dea12e13b 100644 --- a/app/models/pixiv_ugoira_frame_data.rb +++ b/app/models/pixiv_ugoira_frame_data.rb @@ -1,3 +1,15 @@ class PixivUgoiraFrameData < ApplicationRecord serialize :data + before_validation :normalize_data, on: :create + + def normalize_data + return if data.nil? + + if data[0]["delay_msec"] + self.data = data.map.with_index do |datum, i| + filename = "%06d.jpg" % [i + 1] + {"delay" => datum["delay_msec"], "file" => filename} + end + end + end end diff --git a/script/fixes/053_normalize_ugoira_data.rb b/script/fixes/053_normalize_ugoira_data.rb new file mode 100644 index 000000000..63c1e6905 --- /dev/null +++ b/script/fixes/053_normalize_ugoira_data.rb @@ -0,0 +1,11 @@ +#!/usr/bin/env ruby + +require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'config', 'environment')) + +CurrentUser.user = User.system +CurrentUser.ip_addr = "127.0.0.1" + +PixivUgoiraFrameData.where("data like ?", "\%delay_msec%").find_each do |fd| + fd.normalize_data + fd.save +end