From b1d5bb8272569e4dbe367246f5daa6a026e10055 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Fri, 17 Oct 2014 15:41:16 -0700 Subject: [PATCH] make ugoira webm+preview generation async --- app/logical/pixiv_ugoira_converter.rb | 4 +++- app/logical/pixiv_ugoira_service.rb | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/logical/pixiv_ugoira_converter.rb b/app/logical/pixiv_ugoira_converter.rb index 80bfc235a..109b50569 100644 --- a/app/logical/pixiv_ugoira_converter.rb +++ b/app/logical/pixiv_ugoira_converter.rb @@ -3,6 +3,8 @@ class PixivUgoiraConverter folder = Zip::File.new(source_path) write_webm(folder, output_path, frame_data) write_preview(folder, preview_path) + RemoteFileManager.new(output_path).distribute + RemoteFileManager.new(preview_path).distribute end def write_webm(folder, write_path, frame_data) @@ -38,7 +40,7 @@ class PixivUgoiraConverter ext = folder.first.name.match(/\.(\w{,4})$/)[1] system("ffmpeg -loglevel quiet -i #{tmpdir}/images/%06d.#{ext} -codec:v libvpx -crf 4 -b:v 5000k -an #{tmpdir}/tmp.webm") system("mkvmerge -q -o #{write_path} --webm --timecodes 0:#{tmpdir}/timecodes.tc #{tmpdir}/tmp.webm") - end + end end def write_preview(folder, path) diff --git a/app/logical/pixiv_ugoira_service.rb b/app/logical/pixiv_ugoira_service.rb index 9068c1d4e..c83e68a4a 100644 --- a/app/logical/pixiv_ugoira_service.rb +++ b/app/logical/pixiv_ugoira_service.rb @@ -10,7 +10,11 @@ class PixivUgoiraService end def generate_resizes(source_path, output_path, preview_path) - PixivUgoiraConverter.new.convert(source_path, output_path, preview_path, @frame_data) + PixivUgoiraConverter.delay(:queue => Socket.gethostname).convert(source_path, output_path, preview_path, @frame_data) + + # since the resizes will be delayed, just touch the output file so the + # file distribution wont break + FileUtils.touch([output_path, preview_path]) end def load(data)