Files
danbooru/test/unit/sources/weibo_test.rb
evazion 2d83500885 sources: fix dummy names being suggested as other names.
Fix placeholder names like weibo_1234, bilibili_1234, nijie1234, and nicoseiga1234 being suggested
as Other Names when creating new artist entries. These are meant to be placeholders for the tag
name, not used as other names.
2022-11-21 14:55:10 -06:00

161 lines
7.3 KiB
Ruby

require "test_helper"
module Sources
class WeiboTest < ActiveSupport::TestCase
setup do
# Skip in CI to work around test failures due to rate limiting by Weibo.
skip if ENV["CI"].present?
end
context "A post with multiple pictures" do
setup do
@site = Source::Extractor.find("https://www.weibo.com/5501756072/J2UNKfbqV?type=comment#_rnd1590548401855")
end
should "extract all the image urls" do
urls = %w[
https://wx1.sinaimg.cn/large/0060kO5aly1gezsyt5xvhj30ok0sgtc9.jpg
https://wx3.sinaimg.cn/large/0060kO5aly1gezsyuaas1j30go0sgjtj.jpg
https://wx3.sinaimg.cn/large/0060kO5aly1gezsys1ai9j30gi0sg0v9.jpg
]
assert_equal(urls, @site.image_urls)
end
should "get the correct commentary" do
assert_not_nil(@site.artist_commentary_desc)
end
should "get the profile url" do
assert_equal("https://www.weibo.com/u/5501756072", @site.profile_url)
end
should "get the page url" do
assert_equal("https://www.weibo.com/5501756072/J2UNKfbqV", @site.page_url)
end
should "download an image" do
assert_downloaded(134_721, @site.image_urls[0])
assert_downloaded(84_124, @site.image_urls[1])
assert_downloaded(97_878, @site.image_urls[2])
end
should "get the tags" do
tags = [
%w[fgo https://s.weibo.com/weibo/fgo],
%w[Alter组 https://s.weibo.com/weibo/Alter组],
]
assert_equal(tags, @site.tags)
end
should "find the correct artist" do
@artist = FactoryBot.create(:artist, name: "nipi27", url_string: "https://www.weibo.com/u/5501756072")
assert_equal([@artist], @site.artists)
end
end
context "A deleted or not existing picture" do
should "still find the artist name" do
site = Source::Extractor.find("https://www.weibo.com/5501756072/AsdAsdAsd")
artist = FactoryBot.create(:artist, name: "nipi27", url_string: "https://www.weibo.com/u/5501756072")
assert_equal([artist], site.artists)
end
end
context "A post with video" do
should "get the correct video" do
site = Source::Extractor.find("https://www.weibo.com/5501756072/IF9fugHzj")
assert_downloaded(7_676_656, site.image_urls.sole)
end
end
context "A direct image sample upload" do
should "get the largest version" do
sample = Source::Extractor.find("https://wx3.sinaimg.cn/mw690/a00fa34cly1gf62g2n8z3j21yu2jo1ky.jpg")
assert_equal(["https://wx3.sinaimg.cn/large/a00fa34cly1gf62g2n8z3j21yu2jo1ky.jpg"], sample.image_urls)
end
end
context "A multi-page upload" do
should "get the page url" do
url = "https://wx1.sinaimg.cn/large/7eb64558gy1fnbryriihwj20dw104wtu.jpg"
ref = "https://photo.weibo.com/2125874520/wbphotos/large/mid/4194742441135220/pid/7eb64558gy1fnbryb5nzoj20dw10419t"
site = Source::Extractor.find(url, ref)
assert_equal("https://www.weibo.com/2125874520/FDKGo4Lk0", site.page_url)
end
end
context "A deleted url" do
should "not raise errors" do
url = "https://weibo.com/5265069929/LiLnMENgs"
assert_nothing_raised { Source::Extractor.find(url).to_h }
end
end
context "A m.weibo.cn/detail url" do
should "work" do
@site = Source::Extractor.find("https://m.weibo.cn/detail/4506950043618873")
assert_equal(%w[
https://wx1.sinaimg.cn/large/0060kO5aly1gezsyt5xvhj30ok0sgtc9.jpg
https://wx3.sinaimg.cn/large/0060kO5aly1gezsyuaas1j30go0sgjtj.jpg
https://wx3.sinaimg.cn/large/0060kO5aly1gezsys1ai9j30gi0sg0v9.jpg
], @site.image_urls)
assert_equal("https://www.weibo.com/5501756072/J2UNKfbqV", @site.page_url)
assert_equal("https://www.weibo.com/u/5501756072", @site.profile_url)
assert_equal(%w[fgo Alter组], @site.tags.map(&:first))
assert_equal("阿尔托莉雅厨", @site.artist_name)
end
end
context "A share.api.weibo.cn/share/:id URL" do
strategy_should_work(
"https://share.api.weibo.cn/share/304950356,4767694689143828.html",
image_urls: ["https://wx3.sinaimg.cn/large/007bspzxly1h23na4y0hhj32982pinpd.jpg"],
download_size: 1_781_330,
artist_name: "号布谷鸟",
other_names: ["号布谷鸟"],
artist_commentary_desc: "<a href=\"https://m.weibo.cn/search?containerid=231522type%3D1%26t%3D10%26q%3D%23%E5%BF%AB%E9%80%92%E7%BB%84%23&extparam=%23%E5%BF%AB%E9%80%92%E7%BB%84%23&luicode=20000061&lfid=4767694689143828\" data-hide=\"\"><span class=\"surl-text\">#快递组#</span></a> 摸了 ",
profile_url: "https://www.weibo.com/u/6582241007",
profile_urls: ["https://www.weibo.com/u/6582241007"],
tags: ["快递组"]
)
end
should "Parse Weibo URLs correctly" do
assert_equal("https://www.weibo.com/3150932560/H4cFbeKKA", Source::URL.page_url("https://www.weibo.com/3150932560/H4cFbeKKA?from=page_1005053150932560_profile&wvr=6&mod=weibotime"))
assert_equal("https://m.weibo.cn/detail/4242129997905387", Source::URL.page_url("https://photo.weibo.com/2125874520/wbphotos/large/mid/4242129997905387/pid/7eb64558ly1friyzhj44lj20dw2qxe81"))
assert_equal("https://m.weibo.cn/status/4173757483008088", Source::URL.page_url("https://m.weibo.cn/status/4173757483008088?luicode=20000061&lfid=4170879204256635"))
assert_equal("https://m.weibo.cn/detail/4098035921690224", Source::URL.page_url("https://tw.weibo.com/SEINEN/4098035921690224"))
assert(Source::URL.image_url?("http://ww1.sinaimg.cn/large/69917555gw1f6ggdghk28j20c87lbhdt.jpg"))
assert(Source::URL.image_url?("http://ww4.sinaimg.cn/mw690/77a2d531gw1f4u411ws3aj20m816fagg.jpg"))
assert(Source::URL.image_url?("https://wx4.sinaimg.cn/orj360/e3930166gy1g546bz86cij20u00u040y.jpg"))
assert(Source::URL.image_url?("https://wx1.sinaimg.cn/original/7004ec1cly1ge9dcbsw4lj20jg2ir7wh.jpg"))
assert(Source::URL.page_url?("http://tw.weibo.com/1300957955/3786333853668537"))
assert(Source::URL.page_url?("http://photo.weibo.com/2125874520/wbphotos/large/mid/4194742441135220/pid/7eb64558gy1fnbryb5nzoj20dw10419t"))
assert(Source::URL.page_url?("http://weibo.com/3357910224/EEHA1AyJP"))
assert(Source::URL.page_url?("https://www.weibo.com/5501756072/IF9fugHzj?from=page_1005055501756072_profile&wvr=6&mod=weibotime"))
assert(Source::URL.page_url?("https://www.weibo.com/detail/4676597657371957"))
assert(Source::URL.page_url?("https://m.weibo.cn/detail/4506950043618873"))
assert(Source::URL.page_url?("https://m.weibo.cn/status/J33G4tH1B"))
assert(Source::URL.profile_url?("https://www.weibo.com/u/5501756072"))
assert(Source::URL.profile_url?("https://m.weibo.cn/u/5501756072"))
assert(Source::URL.profile_url?("https://m.weibo.cn/profile/5501756072"))
assert(Source::URL.profile_url?("https://www.weibo.com/p/1005055399876326"))
assert(Source::URL.profile_url?("https://www.weibo.com/5501756072"))
assert(Source::URL.profile_url?("https://www.weibo.com/endlessnsmt"))
assert(Source::URL.profile_url?("https://www.weibo.com/4ubergine/photos"))
assert(Source::URL.profile_url?("https://www.weibo.com/n/小小男爵不要坑"))
refute(Source::URL.profile_url?("https://weibo.com/u/"))
end
end
end