diff --git a/app/logical/sources/site.rb b/app/logical/sources/site.rb index e5a9e0053..4f8ff0776 100644 --- a/app/logical/sources/site.rb +++ b/app/logical/sources/site.rb @@ -1,7 +1,7 @@ module Sources class Site attr_reader :url, :strategy - delegate :get, :site_name, :artist_name, :profile_url, :image_url, :tags, :artist_record, :unique_id, :to => :strategy + delegate :get, :referer_url, :site_name, :artist_name, :profile_url, :image_url, :tags, :artist_record, :unique_id, :to => :strategy def self.strategies [Strategies::NicoSeiga, Strategies::Pixiv] diff --git a/app/logical/sources/strategies/base.rb b/app/logical/sources/strategies/base.rb index 700460452..cd73898ca 100644 --- a/app/logical/sources/strategies/base.rb +++ b/app/logical/sources/strategies/base.rb @@ -33,6 +33,10 @@ module Sources end end + def referer_url(template) + template.params[:ref] || template.params[:url] + end + protected def agent raise NotImplementedError diff --git a/app/logical/sources/strategies/pixiv.rb b/app/logical/sources/strategies/pixiv.rb index 4ddbd888d..88e38707c 100644 --- a/app/logical/sources/strategies/pixiv.rb +++ b/app/logical/sources/strategies/pixiv.rb @@ -5,6 +5,14 @@ module Sources url =~ /^https?:\/\/(?:\w+\.)?pixiv\.net/ end + def referer_url(template) + if template.params[:ref] =~ /pixiv\.net\/member_illust/ && template.params[:ref] !~ /mode=manga/ + template.params[:ref] + else + template.params[:url] + end + end + def site_name "Pixiv" end diff --git a/app/views/sources/_info.html.erb b/app/views/sources/_info.html.erb index 2552d19e8..5d8895920 100644 --- a/app/views/sources/_info.html.erb +++ b/app/views/sources/_info.html.erb @@ -4,7 +4,7 @@ <% if source.try(:available?) %>
-

This looks like a <%= source.site_name %> upload. <%= link_to "Fetch data", source_path(:format => "json", :url => params[:ref] || params[:url]), :id => "fetch-data" %>.

+

This looks like a <%= source.site_name %> upload. <%= link_to "Fetch data", source_path(:format => "json", :url => source.referer_url(self)), :id => "fetch-data" %>.