diff --git a/app/models/artist.rb b/app/models/artist.rb index 783c5f17c..b38cbbe7b 100644 --- a/app/models/artist.rb +++ b/app/models/artist.rb @@ -109,6 +109,8 @@ class Artist < ApplicationRecord "pixiv.cc", # http://pixiv.cc/0123456789/ "pixiv.net", # https://www.pixiv.net/member.php?id=10442390 "pixiv.net/stacc", # https://www.pixiv.net/stacc/aaaninja2013 + "pixiv.net/users", # https://www.pixiv.net/users/555603 + "pixiv.net/en/users", # https://www.pixiv.net/en/users/555603 "i.pximg.net", "plurk.com", # http://www.plurk.com/a1amorea1a1 "privatter.net", diff --git a/app/models/artist_url.rb b/app/models/artist_url.rb index bfc4582ab..02a62ebb2 100644 --- a/app/models/artist_url.rb +++ b/app/models/artist_url.rb @@ -27,6 +27,9 @@ class ArtistUrl < ApplicationRecord # url = url.sub(%r!^(http://seiga.nicovideo.jp/user/illust/\d+)\?.+!, '\1/') url = url.sub(%r!^http://pictures.hentai-foundry.com//!, "http://pictures.hentai-foundry.com/") + # XXX should be handled by pixiv strategy. + url = url.sub(%r!\Ahttps?://www\.pixiv\.net/(?:en/)?users/(\d+)\z!i, 'https://www.pixiv.net/member.php?id=\1') + # the strategy won't always work for twitter because it looks for a status url = url.downcase if url =~ %r!^https?://(?:mobile\.)?twitter\.com! diff --git a/test/unit/artist_url_test.rb b/test/unit/artist_url_test.rb index ad10a6741..e66822c53 100644 --- a/test/unit/artist_url_test.rb +++ b/test/unit/artist_url_test.rb @@ -155,6 +155,12 @@ class ArtistUrlTest < ActiveSupport::TestCase assert_equal("http://www.pixiv.net/fanbox/creator/3113804/", url.normalized_url) end + should "normalize pixiv.net/user/123 urls" do + url = create(:artist_url, url: "https://www.pixiv.net/en/users/123") + assert_equal("https://www.pixiv.net/en/users/123", url.url) + assert_equal("http://www.pixiv.net/member.php?id=123/", url.normalized_url) + end + should "normalize twitter urls" do url = FactoryBot.create(:artist_url, :url => "https://twitter.com/aoimanabu/status/892370963630743552") assert_equal("https://twitter.com/aoimanabu/status/892370963630743552", url.url)