From fbd5f6b7f2944fa2c087205c7fbafad00cee6740 Mon Sep 17 00:00:00 2001 From: evazion Date: Wed, 12 Sep 2018 00:42:18 -0500 Subject: [PATCH] pixiv: fix preview_urls for ugoiras (#3891). --- app/logical/sources/strategies/pixiv.rb | 13 ++++++++++--- test/unit/sources/pixiv_test.rb | 4 ++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/logical/sources/strategies/pixiv.rb b/app/logical/sources/strategies/pixiv.rb index cedf953c7..aec1f63f5 100644 --- a/app/logical/sources/strategies/pixiv.rb +++ b/app/logical/sources/strategies/pixiv.rb @@ -5,6 +5,7 @@ module Sources class Pixiv < Base MONIKER = %r!(?:[a-zA-Z0-9_-]+)! PROFILE = %r!\Ahttps?://www\.pixiv\.net/member\.php\?id=[0-9]+\z! + DATE = %r!(?\d{4}/\d{2}/\d{2}/\d{2}/\d{2}/\d{2})!i EXT = %r!(?:jpg|jpeg|png|gif)!i WEB = %r!(?:\A(?:https?://)?www\.pixiv\.net)! @@ -12,7 +13,8 @@ module Sources IMG = %r!(?:\A(?:https?://)?img[0-9]*\.pixiv\.net)! PXIMG = %r!(?:\A(?:https?://)?i\.pximg\.net)! TOUCH = %r!(?:\A(?:https?://)?touch\.pixiv\.net)! - ORIG_IMAGE = %r!#{PXIMG}/img-original/img/(?\d{4}/\d{2}/\d{2}/\d{2}/\d{2}/\d{2})/(?\d+)_p(?\d+)\.#{EXT}\z!i + UGOIRA = %r!#{PXIMG}/img-zip-ugoira/img/#{DATE}/(?\d+)_ugoira1920x1080\.zip\z!i + ORIG_IMAGE = %r!#{PXIMG}/img-original/img/#{DATE}/(?\d+)_p(?\d+)\.#{EXT}\z!i STACC_PAGE = %r!\A#{WEB}/stacc/#{MONIKER}/?\z!i NOVEL_PAGE = %r!(?:\Ahttps?://www\.pixiv\.net/novel/show\.php\?id=(\d+))! FANBOX_ACCOUNT = %r!(?:\Ahttps?://www\.pixiv\.net/fanbox/creator/\d+\z)! @@ -52,9 +54,14 @@ module Sources end def preview_urls - image_urls.map do |x| - x.sub(ORIG_IMAGE) do + image_urls.map do |url| + case url + when ORIG_IMAGE "https://i.pximg.net/c/240x240/img-master/img/#{$~[:date]}/#{$~[:illust_id]}_p#{$~[:page]}_master1200.jpg" + when UGOIRA + "https://i.pximg.net/c/240x240/img-master/img/#{$~[:date]}/#{$~[:illust_id]}_master1200.jpg" + else + url end end end diff --git a/test/unit/sources/pixiv_test.rb b/test/unit/sources/pixiv_test.rb index 38540da2b..df7e30e2e 100644 --- a/test/unit/sources/pixiv_test.rb +++ b/test/unit/sources/pixiv_test.rb @@ -56,6 +56,10 @@ module Sources assert_equal("https://i.pximg.net/img-zip-ugoira/img/2017/04/04/08/57/38/62247364_ugoira1920x1080.zip", @site.file_url) end + should "get the preview url" do + assert_equal("https://i.pximg.net/c/240x240/img-master/img/2017/04/04/08/57/38/62247364_master1200.jpg", @site.preview_url) + end + should "capture the frame data" do assert_equal(2, @site.ugoira_frame_data.size) if @site.ugoira_frame_data[0]["file"]