generalize disabled page check

This commit is contained in:
Dylan Knutson
2023-08-25 17:27:17 -07:00
parent 984614e04b
commit 8b80a5e3cf
3 changed files with 28 additions and 31 deletions

View File

@@ -103,17 +103,12 @@ class Domain::Fa::Job::FavsJob < Domain::Fa::Job::Base
)
end
page = Domain::Fa::Parser::Page.new(response.body)
if response.body =~ /User ".+" was not found in our database./
@user.state = :scan_error
@user.state_detail ||= {}
@user.state_detail["scan_error"] = "(favs scan) user has disabled account, see last_favs_page_id"
@user.state_detail["last_favs_page_id"] = response.log_entry.id
@user.save!
logger.error("account disabled, abort")
if Domain::Fa::Job::ScanUserUtils.user_disabled_or_not_found?(@user, response)
logger.error("account disabled / not found, abort")
return :stop
end
page = Domain::Fa::Parser::Page.new(response.body)
fatal_error("not a favs listing page") unless page.probably_listings_page?
submissions = page.submissions_parsed
@page_id = page.favorites_next_button_id

View File

@@ -1,5 +1,24 @@
module Domain::Fa::Job
class ScanUserUtils
DISABLED_PAGE_PATTERNS = [
/User ".+" has voluntarily disabled access/,
/User ".+" was not found in our database./,
/The page you are trying to reach is currently pending deletion/,
]
def self.user_disabled_or_not_found?(user, response)
if DISABLED_PAGE_PATTERNS.any? { |pattern| response.body =~ pattern }
user.state = :scan_error
user.state_detail ||= {}
user.state_detail["scan_error"] = "account disabled or not found, see last_scanned_page_id"
user.state_detail["last_scanned_page_id"] = response.log_entry.id
user.save!
true
else
false
end
end
def self.check_disabled_or_not_found(user, response)
if response.status_code != 200
return [:fatal, {

View File

@@ -69,34 +69,17 @@ class Domain::Fa::Job::UserGalleryJob < Domain::Fa::Job::Base
if response.status_code != 200
fatal_error("http #{response.status_code}, log entry #{response.log_entry.id}")
end
if Domain::Fa::Job::ScanUserUtils.user_disabled_or_not_found?(@user, response)
logger.error("account disabled / not found, abort")
return :break
end
page = Domain::Fa::Parser::Page.new(response.body)
# newly instantiated users don't have a name yet, but can derive it from the gallery page
@user.name ||= page.user_page.name || @user.url_name
if !page.probably_listings_page?
if response.body =~ /has voluntarily disabled access/
@user.state = :scan_error
@user.state_detail ||= {}
@user.state_detail["scan_error"] = "(gallery scan) user has disabled account, see last_gallery_page_id"
@user.state_detail["last_gallery_page_id"] = response.log_entry.id
@user.save!
logger.error("account disabled, abort")
return :break
end
if response.body =~ /The username "(.+)" could not be found./ || response.body =~ /The page you are trying to reach is currently pending deletion/
@user.state = :scan_error
@user.state_detail = {
scan_error: "(gallery scan) user was not found, see last_gallery_page_id",
last_gallery_page_id: response.log_entry.id,
}
@user.save!
logger.error("not found, abort")
return :break
end
end
listing_page_stats = update_and_enqueue_posts_from_listings_page(
:gallery_page, page, response.log_entry,
enqueue_posts_pri: :low,