pixiv: support new https://www.pixiv.net/artworks/:id urls.
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
# * https://www.pixiv.net/member_illust.php?mode=medium&illust_id=46324488
|
||||
# * https://www.pixiv.net/member_illust.php?mode=manga&illust_id=46324488
|
||||
# * https://www.pixiv.net/member_illust.php?mode=manga_big&illust_id=46324488&page=0
|
||||
# * https://www.pixiv.net/en/artworks/46324488
|
||||
#
|
||||
# * https://www.pixiv.net/member.php?id=339253
|
||||
# * https://www.pixiv.net/member_illust.php?id=339253&type=illust
|
||||
@@ -127,7 +128,7 @@ module Sources
|
||||
end
|
||||
|
||||
if illust_id.present?
|
||||
return "http://www.pixiv.net/member_illust.php?mode=medium&illust_id=#{illust_id}"
|
||||
return "https://www.pixiv.net/artworks/#{illust_id}"
|
||||
end
|
||||
|
||||
return url
|
||||
@@ -271,6 +272,10 @@ module Sources
|
||||
if url.host == "www.pixiv.net" && url.path == "/member_illust.php" && url.query_values["illust_id"].present?
|
||||
return url.query_values["illust_id"].to_i
|
||||
|
||||
# http://www.pixiv.net/en/artworks/46324488
|
||||
elsif url.host == "www.pixiv.net" && url.path =~ %r!\A/(?:en/)?artworks/(?<illust_id>\d+)!i
|
||||
return $~[:illust_id].to_i
|
||||
|
||||
# http://www.pixiv.net/i/18557054
|
||||
elsif url.host == "www.pixiv.net" && url.path =~ %r!\A/i/(?<illust_id>\d+)\z!i
|
||||
return $~[:illust_id].to_i
|
||||
|
||||
@@ -341,17 +341,13 @@ class Post < ApplicationRecord
|
||||
end
|
||||
|
||||
def normalized_source
|
||||
if pixiv_id.present?
|
||||
return "https://www.pixiv.net/artworks/#{pixiv_id}"
|
||||
end
|
||||
|
||||
case source
|
||||
when %r{\Ahttps?://twitter.com/[^/]+/status/(\d+)\z}i
|
||||
"https://twitter.com/i/web/status/#{$1}"
|
||||
when %r{\Ahttps?://img\d+\.pixiv\.net/img/[^\/]+/(\d+)}i,
|
||||
%r{\Ahttps?://i\d\.pixiv\.net/img\d+/img/[^\/]+/(\d+)}i
|
||||
"https://www.pixiv.net/member_illust.php?mode=medium&illust_id=#{$1}"
|
||||
|
||||
when %r{\Ahttps?://(?:i\d+\.pixiv\.net|i\.pximg\.net)/img-(?:master|original)/img/(?:\d+\/)+(\d+)_p}i,
|
||||
%r{\Ahttps?://(?:i\d+\.pixiv\.net|i\.pximg\.net)/c/\d+x\d+/img-master/img/(?:\d+\/)+(\d+)_p}i,
|
||||
%r{\Ahttps?://(?:i\d+\.pixiv\.net|i\.pximg\.net)/img-zip-ugoira/img/(?:\d+\/)+(\d+)_ugoira\d+x\d+\.zip}i
|
||||
"https://www.pixiv.net/member_illust.php?mode=medium&illust_id=#{$1}"
|
||||
|
||||
when %r{\Ahttps?://lohas\.nicoseiga\.jp/priv/(\d+)\?e=\d+&h=[a-f0-9]+}i,
|
||||
%r{\Ahttps?://lohas\.nicoseiga\.jp/priv/[a-f0-9]+/\d+/(\d+)}i
|
||||
|
||||
@@ -1461,20 +1461,20 @@ class PostTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
should "normalize pixiv links" do
|
||||
@post.source = "http://i2.pixiv.net/img12/img/zenze/39749565.png"
|
||||
assert_equal("https://www.pixiv.net/member_illust.php?mode=medium&illust_id=39749565", @post.normalized_source)
|
||||
@post.update!(source: "http://i2.pixiv.net/img12/img/zenze/39749565.png")
|
||||
assert_equal("https://www.pixiv.net/artworks/39749565", @post.normalized_source)
|
||||
|
||||
@post.source = "http://i1.pixiv.net/img53/img/themare/39735353_big_p1.jpg"
|
||||
assert_equal("https://www.pixiv.net/member_illust.php?mode=medium&illust_id=39735353", @post.normalized_source)
|
||||
@post.update!(source: "http://i1.pixiv.net/img53/img/themare/39735353_big_p1.jpg")
|
||||
assert_equal("https://www.pixiv.net/artworks/39735353", @post.normalized_source)
|
||||
|
||||
@post.source = "http://i1.pixiv.net/c/150x150/img-master/img/2010/11/30/08/39/58/14901720_p0_master1200.jpg"
|
||||
assert_equal("https://www.pixiv.net/member_illust.php?mode=medium&illust_id=14901720", @post.normalized_source)
|
||||
@post.update!(source: "http://i1.pixiv.net/c/150x150/img-master/img/2010/11/30/08/39/58/14901720_p0_master1200.jpg")
|
||||
assert_equal("https://www.pixiv.net/artworks/14901720", @post.normalized_source)
|
||||
|
||||
@post.source = "http://i1.pixiv.net/img-original/img/2010/11/30/08/39/58/14901720_p0.png"
|
||||
assert_equal("https://www.pixiv.net/member_illust.php?mode=medium&illust_id=14901720", @post.normalized_source)
|
||||
@post.update!(source: "http://i1.pixiv.net/img-original/img/2010/11/30/08/39/58/14901720_p0.png")
|
||||
assert_equal("https://www.pixiv.net/artworks/14901720", @post.normalized_source)
|
||||
|
||||
@post.source = "http://i2.pixiv.net/img-zip-ugoira/img/2014/08/05/06/01/10/44524589_ugoira1920x1080.zip"
|
||||
assert_equal("https://www.pixiv.net/member_illust.php?mode=medium&illust_id=44524589", @post.normalized_source)
|
||||
@post.update!(source: "http://i2.pixiv.net/img-zip-ugoira/img/2014/08/05/06/01/10/44524589_ugoira1920x1080.zip")
|
||||
assert_equal("https://www.pixiv.net/artworks/44524589", @post.normalized_source)
|
||||
end
|
||||
|
||||
should "normalize nicoseiga links" do
|
||||
|
||||
@@ -85,6 +85,20 @@ module Sources
|
||||
end
|
||||
end
|
||||
|
||||
context "A https://www.pixiv.net/*/artworks/* source" do
|
||||
should "work" do
|
||||
@site = Sources::Strategies.find("https://www.pixiv.net/en/artworks/64476642")
|
||||
|
||||
assert_equal("https://i.pximg.net/img-original/img/2017/08/18/00/09/21/64476642_p0.jpg", @site.image_url)
|
||||
assert_equal("https://i.pximg.net/img-original/img/2017/08/18/00/09/21/64476642_p0.jpg", @site.canonical_url)
|
||||
assert_equal("https://www.pixiv.net/artworks/64476642", @site.page_url)
|
||||
|
||||
@site = Sources::Strategies.find("https://www.pixiv.net/artworks/64476642")
|
||||
assert_equal("https://i.pximg.net/img-original/img/2017/08/18/00/09/21/64476642_p0.jpg", @site.image_url)
|
||||
assert_equal("https://www.pixiv.net/artworks/64476642", @site.page_url)
|
||||
end
|
||||
end
|
||||
|
||||
context "fetching source data for a new manga image" do
|
||||
setup do
|
||||
get_source("https://www.pixiv.net/member_illust.php?mode=medium&illust_id=65981735")
|
||||
@@ -312,6 +326,9 @@ module Sources
|
||||
assert_illust_id(18557054, "http://i1.pixiv.net/img-inf/img/2011/05/01/23/28/04/18557054_64x64.jpg")
|
||||
assert_illust_id(18557054, "http://i1.pixiv.net/img-inf/img/2011/05/01/23/28/04/18557054_s.png")
|
||||
assert_illust_id(18557054, "http://www.pixiv.net/i/18557054")
|
||||
|
||||
assert_illust_id(18557054, "http://www.pixiv.net/en/artworks/18557054")
|
||||
assert_illust_id(18557054, "http://www.pixiv.net/artworks/18557054")
|
||||
end
|
||||
|
||||
should "not misparse ids from fanbox urls" do
|
||||
|
||||
Reference in New Issue
Block a user