fix parsing admin pages

This commit is contained in:
Dylan Knutson
2023-05-16 19:08:14 -07:00
parent 37ad4b2ea8
commit c34faef0dc
3 changed files with 1687 additions and 3 deletions

View File

@@ -18,8 +18,6 @@ class Domain::Fa::Parser::UserPageHelper < Domain::Fa::Parser::Base
]
def name
# user names are in the form "~username", so strip the first
# char from the user's name
@name ||= begin
elem = case @page_version
when VERSION_0, VERSION_1
@@ -36,7 +34,11 @@ class Domain::Fa::Parser::UserPageHelper < Domain::Fa::Parser::Base
strip
if name
if PREFIXES.include?(name[0])
if @elem.css("img.userIcon.type-admin").first
# in newer versions of FA user pages, admins have no '@' prefix,
# but rather an indicator image icon
name
elsif PREFIXES.include?(name[0])
name[1..]
else
raise("invalid prefix for name: #{name}")

View File

@@ -46,6 +46,16 @@ describe Domain::Fa::Parser::Page do
assert_equal "//a.furaffinity.net/1556545516/miles-df.gif", up.profile_thumb_url
end
it "can parse admin user page" do
parser = get_parser "user_page_dragoneer.html"
assert parser.logged_in?
assert_page_type parser, :probably_user_page?
up = parser.user_page
assert_equal "Dragoneer", up.name
assert_equal 1_460_919, up.num_pageviews
assert_match /Site Owner/, up.profile_html
end
it "gallery_is_correct" do
parser = get_parser "gallery_page_miles_df.html"
assert parser.logged_in?

File diff suppressed because one or more lines are too long