fixes #3856 for pixiv fanbox urls
This commit is contained in:
@@ -14,11 +14,12 @@ module Sources
|
|||||||
TOUCH = %r!(?:\A(?:https?://)?touch\.pixiv\.net)!
|
TOUCH = %r!(?:\A(?:https?://)?touch\.pixiv\.net)!
|
||||||
STACC_PAGE = %r!\A#{WEB}/stacc/#{MONIKER}/?\z!i
|
STACC_PAGE = %r!\A#{WEB}/stacc/#{MONIKER}/?\z!i
|
||||||
NOVEL_PAGE = %r!(?:\Ahttps?://www\.pixiv\.net/novel/show\.php\?id=(\d+))!
|
NOVEL_PAGE = %r!(?:\Ahttps?://www\.pixiv\.net/novel/show\.php\?id=(\d+))!
|
||||||
|
FANBOX_ACCOUNT = %r!(?:\Ahttps?://www\.pixiv\.net/fanbox/creator/\d+\z)!
|
||||||
FANBOX_IMAGE = %r!(?:\Ahttps?://fanbox\.pixiv\.net/images/post/(\d+))!
|
FANBOX_IMAGE = %r!(?:\Ahttps?://fanbox\.pixiv\.net/images/post/(\d+))!
|
||||||
FANBOX_PAGE = %r!(?:\Ahttps?://www\.pixiv\.net/fanbox/creator/\d+/post/(\d+))!
|
FANBOX_PAGE = %r!(?:\Ahttps?://www\.pixiv\.net/fanbox/creator/\d+/post/(\d+))!
|
||||||
|
|
||||||
def self.match?(*urls)
|
def self.match?(*urls)
|
||||||
urls.compact.any? { |x| x.match?(/#{WEB}|#{IMG}|#{I12}|#{TOUCH}|#{PXIMG}|#{FANBOX_IMAGE}/i) }
|
urls.compact.any? { |x| x.match?(/#{WEB}|#{IMG}|#{I12}|#{TOUCH}|#{PXIMG}|#{FANBOX_IMAGE}|#{FANBOX_ACCOUNT}/i) }
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.to_dtext(text)
|
def self.to_dtext(text)
|
||||||
@@ -59,6 +60,10 @@ module Sources
|
|||||||
return "https://www.pixiv.net/fanbox/creator/#{metadata.user_id}/post/#{fanbox_id}"
|
return "https://www.pixiv.net/fanbox/creator/#{metadata.user_id}/post/#{fanbox_id}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if fanbox_account_id.present?
|
||||||
|
return "https://www.pixiv.net/fanbox/creator/#{fanbox_account_id}"
|
||||||
|
end
|
||||||
|
|
||||||
if illust_id.present?
|
if illust_id.present?
|
||||||
return "http://www.pixiv.net/member_illust.php?mode=medium&illust_id=#{illust_id}"
|
return "http://www.pixiv.net/member_illust.php?mode=medium&illust_id=#{illust_id}"
|
||||||
end
|
end
|
||||||
@@ -244,6 +249,17 @@ module Sources
|
|||||||
end
|
end
|
||||||
memoize :fanbox_id
|
memoize :fanbox_id
|
||||||
|
|
||||||
|
def fanbox_account_id
|
||||||
|
[url, referer_url].each do |x|
|
||||||
|
if x =~ FANBOX_ACCOUNT
|
||||||
|
return x
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
memoize :fanbox_account_id
|
||||||
|
|
||||||
def agent
|
def agent
|
||||||
PixivWebAgent.build
|
PixivWebAgent.build
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -135,6 +135,12 @@ class ArtistUrlTest < ActiveSupport::TestCase
|
|||||||
assert_equal("http://www.pixiv.net/stacc/evazion/", url.normalized_url)
|
assert_equal("http://www.pixiv.net/stacc/evazion/", url.normalized_url)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "normalize pixiv fanbox account urls" do
|
||||||
|
url = FactoryBot.create(:artist_url, :url => "http://www.pixiv.net/fanbox/creator/3113804")
|
||||||
|
assert_equal("http://www.pixiv.net/fanbox/creator/3113804", url.url)
|
||||||
|
assert_equal("http://www.pixiv.net/fanbox/creator/3113804/", url.normalized_url)
|
||||||
|
end
|
||||||
|
|
||||||
should "normalize twitter urls" do
|
should "normalize twitter urls" do
|
||||||
url = FactoryBot.create(:artist_url, :url => "https://twitter.com/aoimanabu/status/892370963630743552")
|
url = FactoryBot.create(:artist_url, :url => "https://twitter.com/aoimanabu/status/892370963630743552")
|
||||||
assert_equal("https://twitter.com/aoimanabu/status/892370963630743552", url.url)
|
assert_equal("https://twitter.com/aoimanabu/status/892370963630743552", url.url)
|
||||||
|
|||||||
Reference in New Issue
Block a user