specs for user favs scanning
This commit is contained in:
20
Rakefile
20
Rakefile
@@ -225,6 +225,16 @@ task fix_buggy_fa_posts: :environment do
|
||||
end
|
||||
end
|
||||
|
||||
task enqueue_fa_posts_missing_files: %i[environment set_logger_stdout] do
|
||||
Domain::Post::FaPost
|
||||
.where(state: "ok")
|
||||
.where
|
||||
.missing(:file)
|
||||
.find_each(order: :desc) do |post|
|
||||
Domain::Fa::Job::ScanPostJob.perform_later(post:)
|
||||
end
|
||||
end
|
||||
|
||||
task fix_e621_post_files: :environment do
|
||||
query = Domain::Post::E621Post.where(state: "ok").where.missing(:files)
|
||||
limit = ENV["limit"]&.to_i
|
||||
@@ -253,7 +263,15 @@ task perform_good_jobs: :environment do
|
||||
|
||||
relation =
|
||||
if job_id
|
||||
GoodJob::Job.where(id: job_id)
|
||||
job =
|
||||
GoodJob::Job.find_by(id: job_id) ||
|
||||
GoodJob::Execution.find_by(id: job_id)&.job
|
||||
if job.nil?
|
||||
puts "no job found with id #{job_id}"
|
||||
exit 1
|
||||
end
|
||||
puts "found job with id #{job.id}" if job.id != job_id
|
||||
GoodJob::Job.where(id: job.id)
|
||||
else
|
||||
GoodJob::Job.queued.where(job_class: job_class).order(created_at: :asc)
|
||||
end
|
||||
|
||||
1
TODO.md
1
TODO.md
@@ -20,3 +20,4 @@
|
||||
- [ ] store deep update json on inkbunny posts
|
||||
- [ ] limit number of users, or paginate for "users who favorited this post" page
|
||||
- [ ] manual good job runner does not indicate if the job threw an exception - check return value of #perform, maybe?
|
||||
- [ ] FA user favs job should stop when in incremental mode when all posts on the page are already known favs (e.g. pages with only 47 posts are not a false positive)
|
||||
|
||||
@@ -104,7 +104,7 @@ module Domain::UsersHelper
|
||||
can_view_timestamps = policy(user).view_page_scanned_at_timestamps?
|
||||
|
||||
if user.is_a?(Domain::User::FaUser) && can_view_timestamps
|
||||
rows << ["Favorites", time_ago_or_never(user.scanned_gallery_at)]
|
||||
rows << ["Favorites", time_ago_or_never(user.scanned_favs_at)]
|
||||
rows << ["Gallery scanned", time_ago_or_never(user.scanned_gallery_at)]
|
||||
rows << ["Page scanned", time_ago_or_never(user.scanned_page_at)]
|
||||
elsif user.is_a?(Domain::User::E621User) && can_view_timestamps
|
||||
|
||||
@@ -92,12 +92,12 @@ class Domain::Fa::Job::Base < Scraper::JobBase
|
||||
unless user.due_for_favs_scan?
|
||||
if force_scan?
|
||||
logger.warn(
|
||||
"scanned #{DateHelper.time_ago_in_words(user.scanned_favs_at).bold} ago - force scanning",
|
||||
"scanned favs #{DateHelper.time_ago_in_words(user.scanned_favs_at).bold} ago - force scanning",
|
||||
)
|
||||
return true
|
||||
else
|
||||
logger.warn(
|
||||
"scanned #{DateHelper.time_ago_in_words(user.scanned_favs_at).bold} ago - skipping",
|
||||
"scanned favs #{DateHelper.time_ago_in_words(user.scanned_favs_at).bold} ago - skipping",
|
||||
)
|
||||
return false
|
||||
end
|
||||
|
||||
@@ -3,83 +3,91 @@ class Domain::Fa::Job::FavsJob < Domain::Fa::Job::Base
|
||||
include HasBulkEnqueueJobs
|
||||
queue_as :fa_user_favs
|
||||
|
||||
USERS_PER_FULL_PAGE = T.let(Rails.env.test? ? 9 : 190, Integer)
|
||||
FAVED_POSTS_PER_PAGE_THRESHOLD = T.let(Rails.env.test? ? 2 : 36, Integer)
|
||||
MAX_PAGE_NUMBER = 2000
|
||||
|
||||
sig { params(args: T.untyped).void }
|
||||
def initialize(*args)
|
||||
super(*T.unsafe(args))
|
||||
@seen_post_ids = T.let(Set.new, T::Set[Integer])
|
||||
@page_id = T.let(nil, T.nilable(String))
|
||||
@page_number = T.let(0, Integer)
|
||||
@total_items_seen = T.let(0, Integer)
|
||||
@last_page_post_ids = T.let(Set.new, T::Set[Integer])
|
||||
@use_http_cache = T.let(false, T::Boolean)
|
||||
@request_number = T.let(0, Integer)
|
||||
end
|
||||
|
||||
sig { override.params(args: T::Hash[Symbol, T.untyped]).returns(T.untyped) }
|
||||
def perform(args)
|
||||
user = user_from_args!(create_if_missing: true)
|
||||
full_scan = !!args[:full_scan]
|
||||
@use_http_cache = !!args[:use_http_cache]
|
||||
|
||||
user = user_from_args!(create_if_missing: true)
|
||||
logger.push_tags(make_arg_tag(user))
|
||||
return unless user_due_for_favs_scan?(user)
|
||||
|
||||
max_page_number =
|
||||
T.let([((user.num_favorites || 0) + 1) / 48, 100].max, Integer)
|
||||
logger.info make_tag("user.num_favorites", user.num_favorites)
|
||||
logger.info make_tag("max favs page number", max_page_number)
|
||||
|
||||
existing_faved_ids =
|
||||
T.let(Set.new(user.user_post_favs.pluck(:post_id)), T::Set[Integer])
|
||||
|
||||
to_add = T.let(Set.new, T::Set[Integer])
|
||||
|
||||
while true
|
||||
ret = scan_page(user: user)
|
||||
break if ret == :break
|
||||
return if ret == :stop
|
||||
|
||||
unless full_scan
|
||||
new_favs = @last_page_post_ids - existing_faved_ids
|
||||
if new_favs.empty?
|
||||
user.scanned_favs_at = Time.zone.now
|
||||
|
||||
to_add += @seen_post_ids - existing_faved_ids
|
||||
logger.info format_tags(
|
||||
"partial scan",
|
||||
make_tag("add posts", to_add.size),
|
||||
)
|
||||
ReduxApplicationRecord.transaction do
|
||||
to_add.each_slice(1000) do |slice|
|
||||
Domain::UserPostFav.upsert_all(
|
||||
slice.map { |id| { user_id: user.id, post_id: id } },
|
||||
unique_by: %i[user_id post_id],
|
||||
)
|
||||
end
|
||||
user.save!
|
||||
end
|
||||
logger.info format_tags(
|
||||
"reached end of unobserved favs",
|
||||
"stopping scan",
|
||||
)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
break if @page_number > max_page_number
|
||||
@page_number += 1
|
||||
unless user_due_for_favs_scan?(user)
|
||||
logger.warn(format_tags("user not due for favs scan, skipping"))
|
||||
return
|
||||
end
|
||||
|
||||
to_add = @seen_post_ids - existing_faved_ids
|
||||
logger.info format_tags(
|
||||
"calc change favs",
|
||||
make_tag("add posts", to_add.size),
|
||||
)
|
||||
faved_post_ids = T.let(Set.new, T::Set[Integer])
|
||||
existing_faved_post_ids =
|
||||
T.let(Set.new(user.user_post_favs.pluck(:post_id)), T::Set[Integer])
|
||||
|
||||
logger.info(
|
||||
format_tags(
|
||||
make_tag("server num favorites", user.num_favorites),
|
||||
make_tag("existing favorites", existing_faved_post_ids.size),
|
||||
make_tag("max page number", MAX_PAGE_NUMBER),
|
||||
),
|
||||
)
|
||||
|
||||
while true
|
||||
ret = scan_next_page(user: user)
|
||||
return if ret.is_a?(ScanPageResult::Stop)
|
||||
|
||||
faved_post_ids += ret.faved_post_ids_on_page
|
||||
new_faved_post_ids_on_page =
|
||||
ret.faved_post_ids_on_page - existing_faved_post_ids
|
||||
|
||||
logger.info(
|
||||
format_tags(
|
||||
make_tag("request number", @request_number),
|
||||
make_tag("new favs", new_faved_post_ids_on_page.size),
|
||||
make_tag("created post models", ret.posts_created_ids.size),
|
||||
),
|
||||
)
|
||||
|
||||
if !full_scan &&
|
||||
(new_faved_post_ids_on_page.size < FAVED_POSTS_PER_PAGE_THRESHOLD)
|
||||
logger.info(format_tags("incremenetal scan, stopping"))
|
||||
break
|
||||
end
|
||||
|
||||
unless ret.keep_scanning
|
||||
logger.info(format_tags("no next favs page, stopping"))
|
||||
break
|
||||
end
|
||||
|
||||
if @request_number > MAX_PAGE_NUMBER
|
||||
logger.warn(
|
||||
format_tags(
|
||||
"request number(#{@request_number}) > max page number(#{MAX_PAGE_NUMBER})",
|
||||
),
|
||||
)
|
||||
break
|
||||
end
|
||||
|
||||
@request_number += 1
|
||||
end
|
||||
|
||||
faved_post_ids_to_add = faved_post_ids - existing_faved_post_ids
|
||||
upsert_faved_post_ids(user:, post_ids: faved_post_ids_to_add)
|
||||
ensure
|
||||
user.save! if user
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
sig { params(user: Domain::User::FaUser, post_ids: T::Set[Integer]).void }
|
||||
def upsert_faved_post_ids(user:, post_ids:)
|
||||
ReduxApplicationRecord.transaction do
|
||||
if to_add.any?
|
||||
to_add.each_slice(1000) do |slice|
|
||||
if post_ids.any?
|
||||
post_ids.each_slice(1000) do |slice|
|
||||
Domain::UserPostFav.upsert_all(
|
||||
slice.map { |id| { user_id: user.id, post_id: id } },
|
||||
unique_by: %i[user_id post_id],
|
||||
@@ -88,29 +96,35 @@ class Domain::Fa::Job::FavsJob < Domain::Fa::Job::Base
|
||||
end
|
||||
|
||||
user.scanned_favs_at = Time.zone.now
|
||||
user.save!
|
||||
end
|
||||
logger.info format_tags(
|
||||
"updated favs list",
|
||||
make_tag("add posts", user.user_post_favs.count),
|
||||
)
|
||||
ensure
|
||||
user.save! if user
|
||||
logger.info(format_tags(make_tag("total new favs", post_ids.size)))
|
||||
end
|
||||
|
||||
private
|
||||
module ScanPageResult
|
||||
extend T::Sig
|
||||
|
||||
sig { params(user: Domain::User::FaUser).returns(T.nilable(Symbol)) }
|
||||
def scan_page(user:)
|
||||
ret = nil
|
||||
class Stop < T::Struct
|
||||
end
|
||||
|
||||
class Ok < T::Struct
|
||||
include T::Struct::ActsAsComparable
|
||||
const :faved_post_ids_on_page, T::Set[Integer]
|
||||
const :posts_created_ids, T::Set[Integer]
|
||||
const :keep_scanning, T::Boolean
|
||||
end
|
||||
|
||||
Result = T.type_alias { T.any(Stop, Ok) }
|
||||
end
|
||||
|
||||
sig { params(user: Domain::User::FaUser).returns(ScanPageResult::Result) }
|
||||
def scan_next_page(user:)
|
||||
url =
|
||||
if @page_id
|
||||
"https://www.furaffinity.net/favorites/#{user.url_name}/#{@page_id}/next"
|
||||
else
|
||||
"https://www.furaffinity.net/favorites/#{user.url_name}/"
|
||||
end
|
||||
response = http_client.get(url, use_http_cache: @use_http_cache)
|
||||
response = http_client.get(url)
|
||||
if response.status_code != 200
|
||||
fatal_error(
|
||||
"http #{response.status_code.to_s.red.bold}, " +
|
||||
@@ -123,57 +137,46 @@ class Domain::Fa::Job::FavsJob < Domain::Fa::Job::Base
|
||||
response,
|
||||
)
|
||||
logger.error(format_tags("account disabled / not found", "aborting"))
|
||||
return :stop
|
||||
return ScanPageResult::Stop.new
|
||||
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
|
||||
ret = :break if @page_id.nil?
|
||||
@total_items_seen += submissions.length
|
||||
|
||||
posts_to_create_hashes = []
|
||||
existing_fa_id_to_post_id =
|
||||
Domain::Post::FaPost
|
||||
.where(fa_id: submissions.map(&:id))
|
||||
.pluck(:fa_id, :id)
|
||||
.to_h
|
||||
|
||||
created_posts =
|
||||
submissions.map do |submission_parser_helper|
|
||||
post =
|
||||
Domain::Post::FaPost.find_or_initialize_by_submission_parser(
|
||||
submission_parser_helper,
|
||||
first_seen_log_entry: response.log_entry,
|
||||
)
|
||||
if post.new_record?
|
||||
post.enqueue_job_after_save(
|
||||
Domain::Fa::Job::ScanPostJob,
|
||||
{ post:, caused_by_entry: causing_log_entry },
|
||||
)
|
||||
end
|
||||
post
|
||||
created_posts = T.let([], T::Array[Domain::Post::FaPost])
|
||||
submissions.each do |submission_parser_helper|
|
||||
post =
|
||||
Domain::Post::FaPost.find_or_initialize_by_submission_parser(
|
||||
submission_parser_helper,
|
||||
first_seen_log_entry: response.log_entry,
|
||||
)
|
||||
if post.new_record?
|
||||
post.enqueue_job_after_save(
|
||||
Domain::Fa::Job::ScanPostJob,
|
||||
{ post:, caused_by_entry: causing_log_entry },
|
||||
)
|
||||
created_posts << post
|
||||
end
|
||||
end
|
||||
|
||||
bulk_enqueue_jobs { created_posts.each(&:save!) }
|
||||
|
||||
@last_page_post_ids = Set.new
|
||||
created_posts.each do |post|
|
||||
@seen_post_ids.add(T.must(post.id))
|
||||
@last_page_post_ids.add(T.must(post.id))
|
||||
end
|
||||
existing_fa_id_to_post_id.values.each do |id|
|
||||
@seen_post_ids.add(id)
|
||||
@last_page_post_ids.add(id)
|
||||
end
|
||||
last_page_post_ids = T.let(Set.new, T::Set[Integer])
|
||||
created_posts.each { |post| last_page_post_ids.add(T.must(post.id)) }
|
||||
existing_fa_id_to_post_id.values.each { |id| last_page_post_ids.add(id) }
|
||||
|
||||
logger.info format_tags(
|
||||
make_tag("page", @page_number),
|
||||
make_tag("posts", submissions.length),
|
||||
make_tag("created", posts_to_create_hashes.size),
|
||||
)
|
||||
|
||||
ret
|
||||
ScanPageResult::Ok.new(
|
||||
faved_post_ids_on_page: last_page_post_ids,
|
||||
posts_created_ids: created_posts.map(&:id).compact.to_set,
|
||||
keep_scanning: @page_id.present?,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,8 +5,9 @@ class Domain::Fa::Job::ScanUserUtils
|
||||
T.let(
|
||||
[
|
||||
/User ".+" has voluntarily disabled access/,
|
||||
/User ".+" was not found in our database./,
|
||||
/User ".+" was not found in our database\./,
|
||||
/The page you are trying to reach is currently pending deletion/,
|
||||
/The username ".+" could not be found\./,
|
||||
],
|
||||
T::Array[Regexp],
|
||||
)
|
||||
@@ -19,7 +20,7 @@ class Domain::Fa::Job::ScanUserUtils
|
||||
end
|
||||
def self.user_disabled_or_not_found?(user, response)
|
||||
if DISABLED_PAGE_PATTERNS.any? { |pattern| response.body =~ pattern }
|
||||
user.state = "error"
|
||||
user.state_account_disabled!
|
||||
user.page_scan_error =
|
||||
"account disabled or not found, see last_user_page_id"
|
||||
user.last_user_page_id = response.log_entry.id
|
||||
|
||||
@@ -3,6 +3,7 @@ class Domain::Fa::Job::UserGalleryJob < Domain::Fa::Job::Base
|
||||
queue_as :fa_user_gallery
|
||||
|
||||
MAX_PAGE_NUMBER = 350
|
||||
LISTINGS_PER_PAGE_THRESHOLD = 72
|
||||
|
||||
class Folder < T::ImmutableStruct
|
||||
include T::Struct::ActsAsComparable
|
||||
@@ -36,7 +37,7 @@ class Domain::Fa::Job::UserGalleryJob < Domain::Fa::Job::Base
|
||||
if (num_submissions = user.num_submissions) &&
|
||||
(scanned_page_at = user.scanned_page_at) &&
|
||||
(scanned_page_at > 3.days.ago)
|
||||
@max_page_number = (num_submissions * 72) + 3
|
||||
@max_page_number = [@max_page_number, (num_submissions * 72) + 3].max
|
||||
end
|
||||
|
||||
if !user.due_for_gallery_scan? && !force_scan?
|
||||
@@ -58,12 +59,17 @@ class Domain::Fa::Job::UserGalleryJob < Domain::Fa::Job::Base
|
||||
until (@folders - @visited).empty?
|
||||
folder = (@folders - @visited).first
|
||||
@visited.add folder
|
||||
break if scan_folder(user, folder) == :break
|
||||
should_break = T.let(false, T::Boolean)
|
||||
logger.tagged(make_tag("folder.title", folder.title)) do
|
||||
should_break = scan_folder(user, folder) == :break
|
||||
end
|
||||
break if should_break
|
||||
end
|
||||
|
||||
user.last_gallery_page_id = first_log_entry&.id
|
||||
user.scanned_gallery_at = Time.current
|
||||
user.save!
|
||||
ensure
|
||||
user.save! if user
|
||||
end
|
||||
|
||||
private
|
||||
@@ -92,26 +98,19 @@ class Domain::Fa::Job::UserGalleryJob < Domain::Fa::Job::Base
|
||||
response = http_client.get(page_url)
|
||||
log_entry = response.log_entry
|
||||
|
||||
if response.status_code == 200
|
||||
enqueue_jobs_from_found_links(
|
||||
log_entry,
|
||||
suppress_jobs: [{ job: self.class, url_name: user.url_name }],
|
||||
)
|
||||
end
|
||||
fatal_error("failed to scan folder page") if response.status_code != 200
|
||||
|
||||
self.first_log_entry ||= log_entry
|
||||
|
||||
if response.status_code != 200
|
||||
fatal_error(
|
||||
"http #{response.status_code}, log entry #{response.log_entry.id}",
|
||||
)
|
||||
end
|
||||
enqueue_jobs_from_found_links(
|
||||
log_entry,
|
||||
suppress_jobs: [{ job: self.class, url_name: user.url_name }],
|
||||
)
|
||||
|
||||
if Domain::Fa::Job::ScanUserUtils.user_disabled_or_not_found?(
|
||||
user,
|
||||
response,
|
||||
)
|
||||
logger.error("account disabled / not found, abort")
|
||||
user.state = "account_disabled"
|
||||
return :break
|
||||
end
|
||||
|
||||
@@ -132,7 +131,13 @@ class Domain::Fa::Job::UserGalleryJob < Domain::Fa::Job::Base
|
||||
total_num_new_posts_seen += listing_page_stats.new_seen
|
||||
total_num_posts_seen += listing_page_stats.total_seen
|
||||
|
||||
if force_scan?
|
||||
logger.info format_tags(
|
||||
make_tag("page_number", page_number),
|
||||
make_tag("new on page", listing_page_stats.new_seen),
|
||||
make_tag("total on page", listing_page_stats.total_seen),
|
||||
)
|
||||
|
||||
if scan_folders?
|
||||
page.submission_folders.each do |sf|
|
||||
@folders.add?(
|
||||
Folder.new(href: T.must(sf[:href]), title: T.must(sf[:title])),
|
||||
@@ -142,10 +147,21 @@ class Domain::Fa::Job::UserGalleryJob < Domain::Fa::Job::Base
|
||||
|
||||
page_number += 1
|
||||
break if listing_page_stats.new_seen == 0 && !@go_until_end
|
||||
break if listing_page_stats.total_seen < 72
|
||||
break if listing_page_stats.total_seen < LISTINGS_PER_PAGE_THRESHOLD
|
||||
end
|
||||
|
||||
logger.info "folder `#{folder.title.bold}` complete - #{total_num_new_posts_seen.to_s.bold} new, #{total_num_posts_seen.to_s.bold} total"
|
||||
logger.info format_tags(
|
||||
"complete",
|
||||
make_tag("num_new", total_num_new_posts_seen),
|
||||
make_tag("num_total", total_num_posts_seen),
|
||||
)
|
||||
:continue
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
def scan_folders?
|
||||
!!arguments[0][:scan_folders]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -18,35 +18,27 @@ class Scraper::JobBase < ApplicationJob
|
||||
@http_client = http_client
|
||||
end
|
||||
|
||||
sig do
|
||||
params(url: String, use_http_cache: T::Boolean).returns(
|
||||
Scraper::HttpClient::Response,
|
||||
)
|
||||
end
|
||||
def get(url, use_http_cache: false)
|
||||
sig { params(url: String).returns(Scraper::HttpClient::Response) }
|
||||
def get(url)
|
||||
around_request(
|
||||
proc do
|
||||
@http_client.get(
|
||||
url,
|
||||
caused_by_entry: @job.causing_log_entry,
|
||||
use_http_cache: use_http_cache,
|
||||
use_http_cache: @job.use_http_cache?,
|
||||
)
|
||||
end,
|
||||
)
|
||||
end
|
||||
|
||||
sig do
|
||||
params(url: String, use_http_cache: T::Boolean).returns(
|
||||
Scraper::HttpClient::Response,
|
||||
)
|
||||
end
|
||||
def post(url, use_http_cache: false)
|
||||
sig { params(url: String).returns(Scraper::HttpClient::Response) }
|
||||
def post(url)
|
||||
around_request(
|
||||
proc do
|
||||
@http_client.post(
|
||||
url,
|
||||
caused_by_entry: @job.causing_log_entry,
|
||||
use_http_cache: use_http_cache,
|
||||
use_http_cache: @job.use_http_cache?,
|
||||
)
|
||||
end,
|
||||
)
|
||||
@@ -99,6 +91,11 @@ class Scraper::JobBase < ApplicationJob
|
||||
!!arguments[0][:force_scan]
|
||||
end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
def use_http_cache?
|
||||
!!arguments[0][:use_http_cache]
|
||||
end
|
||||
|
||||
# The log entry that caused this job to be enqueued.
|
||||
sig { returns(T.nilable(HttpLogEntry)) }
|
||||
def caused_by_entry
|
||||
|
||||
@@ -246,8 +246,7 @@ class Domain::MigrateToDomain
|
||||
FROM domain_fa_users old_users
|
||||
JOIN domain_users new_users
|
||||
ON new_users.json_attributes->>'url_name' = old_users.url_name
|
||||
WHERE new_users.type = 'Domain::User::FaUser'
|
||||
AND new_users.json_attributes->>'migrated_user_favs_at' IS NULL;
|
||||
WHERE new_users.type = 'Domain::User::FaUser';
|
||||
CREATE INDEX idx_user_map_old_user_id ON user_map(old_user_id, new_user_id) TABLESPACE mirai;
|
||||
CREATE INDEX idx_user_map_new_user_id ON user_map(new_user_id, old_user_id) TABLESPACE mirai;
|
||||
ANALYZE user_map;
|
||||
@@ -319,8 +318,8 @@ class Domain::MigrateToDomain
|
||||
v_progress := (v_processed_count::numeric / v_total_count::numeric) * 100;
|
||||
|
||||
-- Log progress
|
||||
RAISE NOTICE 'Processed users % of % (Progress: % %%)',
|
||||
v_processed_count, v_total_count, ROUND(v_progress, 2);
|
||||
RAISE NOTICE 'Processed users % of % - user ids: % (Progress: % %%)',
|
||||
v_processed_count, v_total_count, v_batch, ROUND(v_progress, 2);
|
||||
|
||||
-- COMMIT;
|
||||
END LOOP;
|
||||
|
||||
@@ -41,13 +41,13 @@ class Domain::User::FaUser < Domain::User
|
||||
class_name: "::HttpLogEntry",
|
||||
optional: true
|
||||
|
||||
enum :state,
|
||||
{ ok: "ok", account_disabled: "account_disabled", error: "error" },
|
||||
prefix: :state
|
||||
|
||||
validates :name, presence: true
|
||||
validates :url_name, presence: true
|
||||
validates :state,
|
||||
presence: true,
|
||||
inclusion: {
|
||||
in: %w[ok account_disabled error],
|
||||
}
|
||||
validates :state, presence: true
|
||||
|
||||
validates :account_status,
|
||||
inclusion: {
|
||||
|
||||
@@ -79,7 +79,7 @@ ActiveSupport.on_load(:good_job_application_controller) do
|
||||
end
|
||||
|
||||
ActiveSupport.on_load(:good_job_base_record) do
|
||||
class GoodJob::Execution
|
||||
class GoodJob::Execution < GoodJob::BaseRecord
|
||||
has_one :log_lines_collection,
|
||||
class_name: "::GoodJobExecutionLogLinesCollection",
|
||||
dependent: :destroy,
|
||||
|
||||
50
sorbet/rbi/dsl/domain/post_group_join.rbi
generated
50
sorbet/rbi/dsl/domain/post_group_join.rbi
generated
@@ -170,12 +170,12 @@ class Domain::PostGroupJoin
|
||||
|
||||
sig do
|
||||
params(
|
||||
args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
|
||||
args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
|
||||
).returns(::Domain::PostGroupJoin)
|
||||
end
|
||||
sig do
|
||||
params(
|
||||
args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
|
||||
args: T::Array[T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]]
|
||||
).returns(T::Enumerable[::Domain::PostGroupJoin])
|
||||
end
|
||||
sig do
|
||||
@@ -762,16 +762,20 @@ class Domain::PostGroupJoin
|
||||
sig { void }
|
||||
def group_id_will_change!; end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns([T.nilable(::Integer), T.nilable(::Integer)]) }
|
||||
def id; end
|
||||
|
||||
sig { params(value: T.untyped).returns(T.untyped) }
|
||||
sig do
|
||||
params(
|
||||
value: [T.nilable(::Integer), T.nilable(::Integer)]
|
||||
).returns([T.nilable(::Integer), T.nilable(::Integer)])
|
||||
end
|
||||
def id=(value); end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
def id?; end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
|
||||
def id_before_last_save; end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
@@ -780,28 +784,44 @@ class Domain::PostGroupJoin
|
||||
sig { returns(T::Boolean) }
|
||||
def id_came_from_user?; end
|
||||
|
||||
sig { returns(T.nilable([T.untyped, T.untyped])) }
|
||||
sig do
|
||||
returns(T.nilable([[T.nilable(::Integer), T.nilable(::Integer)], [T.nilable(::Integer), T.nilable(::Integer)]]))
|
||||
end
|
||||
def id_change; end
|
||||
|
||||
sig { returns(T.nilable([T.untyped, T.untyped])) }
|
||||
sig do
|
||||
returns(T.nilable([[T.nilable(::Integer), T.nilable(::Integer)], [T.nilable(::Integer), T.nilable(::Integer)]]))
|
||||
end
|
||||
def id_change_to_be_saved; end
|
||||
|
||||
sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
|
||||
sig do
|
||||
params(
|
||||
from: [T.nilable(::Integer), T.nilable(::Integer)],
|
||||
to: [T.nilable(::Integer), T.nilable(::Integer)]
|
||||
).returns(T::Boolean)
|
||||
end
|
||||
def id_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
|
||||
def id_in_database; end
|
||||
|
||||
sig { returns(T.nilable([T.untyped, T.untyped])) }
|
||||
sig do
|
||||
returns(T.nilable([[T.nilable(::Integer), T.nilable(::Integer)], [T.nilable(::Integer), T.nilable(::Integer)]]))
|
||||
end
|
||||
def id_previous_change; end
|
||||
|
||||
sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
|
||||
sig do
|
||||
params(
|
||||
from: [T.nilable(::Integer), T.nilable(::Integer)],
|
||||
to: [T.nilable(::Integer), T.nilable(::Integer)]
|
||||
).returns(T::Boolean)
|
||||
end
|
||||
def id_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
|
||||
def id_previously_was; end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
|
||||
def id_was; end
|
||||
|
||||
sig { void }
|
||||
@@ -930,7 +950,9 @@ class Domain::PostGroupJoin
|
||||
sig { returns(T::Boolean) }
|
||||
def saved_change_to_group_id?; end
|
||||
|
||||
sig { returns(T.nilable([T.untyped, T.untyped])) }
|
||||
sig do
|
||||
returns(T.nilable([[T.nilable(::Integer), T.nilable(::Integer)], [T.nilable(::Integer), T.nilable(::Integer)]]))
|
||||
end
|
||||
def saved_change_to_id; end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
|
||||
@@ -175,12 +175,12 @@ class Domain::PostGroupJoin::E621PoolJoin
|
||||
|
||||
sig do
|
||||
params(
|
||||
args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
|
||||
args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
|
||||
).returns(::Domain::PostGroupJoin::E621PoolJoin)
|
||||
end
|
||||
sig do
|
||||
params(
|
||||
args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
|
||||
args: T::Array[T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]]
|
||||
).returns(T::Enumerable[::Domain::PostGroupJoin::E621PoolJoin])
|
||||
end
|
||||
sig do
|
||||
@@ -755,16 +755,20 @@ class Domain::PostGroupJoin::E621PoolJoin
|
||||
sig { void }
|
||||
def group_id_will_change!; end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns([T.nilable(::Integer), T.nilable(::Integer)]) }
|
||||
def id; end
|
||||
|
||||
sig { params(value: T.untyped).returns(T.untyped) }
|
||||
sig do
|
||||
params(
|
||||
value: [T.nilable(::Integer), T.nilable(::Integer)]
|
||||
).returns([T.nilable(::Integer), T.nilable(::Integer)])
|
||||
end
|
||||
def id=(value); end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
def id?; end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
|
||||
def id_before_last_save; end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
@@ -773,28 +777,44 @@ class Domain::PostGroupJoin::E621PoolJoin
|
||||
sig { returns(T::Boolean) }
|
||||
def id_came_from_user?; end
|
||||
|
||||
sig { returns(T.nilable([T.untyped, T.untyped])) }
|
||||
sig do
|
||||
returns(T.nilable([[T.nilable(::Integer), T.nilable(::Integer)], [T.nilable(::Integer), T.nilable(::Integer)]]))
|
||||
end
|
||||
def id_change; end
|
||||
|
||||
sig { returns(T.nilable([T.untyped, T.untyped])) }
|
||||
sig do
|
||||
returns(T.nilable([[T.nilable(::Integer), T.nilable(::Integer)], [T.nilable(::Integer), T.nilable(::Integer)]]))
|
||||
end
|
||||
def id_change_to_be_saved; end
|
||||
|
||||
sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
|
||||
sig do
|
||||
params(
|
||||
from: [T.nilable(::Integer), T.nilable(::Integer)],
|
||||
to: [T.nilable(::Integer), T.nilable(::Integer)]
|
||||
).returns(T::Boolean)
|
||||
end
|
||||
def id_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
|
||||
def id_in_database; end
|
||||
|
||||
sig { returns(T.nilable([T.untyped, T.untyped])) }
|
||||
sig do
|
||||
returns(T.nilable([[T.nilable(::Integer), T.nilable(::Integer)], [T.nilable(::Integer), T.nilable(::Integer)]]))
|
||||
end
|
||||
def id_previous_change; end
|
||||
|
||||
sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
|
||||
sig do
|
||||
params(
|
||||
from: [T.nilable(::Integer), T.nilable(::Integer)],
|
||||
to: [T.nilable(::Integer), T.nilable(::Integer)]
|
||||
).returns(T::Boolean)
|
||||
end
|
||||
def id_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
|
||||
def id_previously_was; end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
|
||||
def id_was; end
|
||||
|
||||
sig { void }
|
||||
@@ -1019,7 +1039,9 @@ class Domain::PostGroupJoin::E621PoolJoin
|
||||
sig { returns(T::Boolean) }
|
||||
def saved_change_to_group_id?; end
|
||||
|
||||
sig { returns(T.nilable([T.untyped, T.untyped])) }
|
||||
sig do
|
||||
returns(T.nilable([[T.nilable(::Integer), T.nilable(::Integer)], [T.nilable(::Integer), T.nilable(::Integer)]]))
|
||||
end
|
||||
def saved_change_to_id; end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
|
||||
@@ -175,12 +175,12 @@ class Domain::PostGroupJoin::InkbunnyPoolJoin
|
||||
|
||||
sig do
|
||||
params(
|
||||
args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
|
||||
args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
|
||||
).returns(::Domain::PostGroupJoin::InkbunnyPoolJoin)
|
||||
end
|
||||
sig do
|
||||
params(
|
||||
args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
|
||||
args: T::Array[T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]]
|
||||
).returns(T::Enumerable[::Domain::PostGroupJoin::InkbunnyPoolJoin])
|
||||
end
|
||||
sig do
|
||||
@@ -814,16 +814,20 @@ class Domain::PostGroupJoin::InkbunnyPoolJoin
|
||||
sig { void }
|
||||
def group_id_will_change!; end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns([T.nilable(::Integer), T.nilable(::Integer)]) }
|
||||
def id; end
|
||||
|
||||
sig { params(value: T.untyped).returns(T.untyped) }
|
||||
sig do
|
||||
params(
|
||||
value: [T.nilable(::Integer), T.nilable(::Integer)]
|
||||
).returns([T.nilable(::Integer), T.nilable(::Integer)])
|
||||
end
|
||||
def id=(value); end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
def id?; end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
|
||||
def id_before_last_save; end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
@@ -832,28 +836,44 @@ class Domain::PostGroupJoin::InkbunnyPoolJoin
|
||||
sig { returns(T::Boolean) }
|
||||
def id_came_from_user?; end
|
||||
|
||||
sig { returns(T.nilable([T.untyped, T.untyped])) }
|
||||
sig do
|
||||
returns(T.nilable([[T.nilable(::Integer), T.nilable(::Integer)], [T.nilable(::Integer), T.nilable(::Integer)]]))
|
||||
end
|
||||
def id_change; end
|
||||
|
||||
sig { returns(T.nilable([T.untyped, T.untyped])) }
|
||||
sig do
|
||||
returns(T.nilable([[T.nilable(::Integer), T.nilable(::Integer)], [T.nilable(::Integer), T.nilable(::Integer)]]))
|
||||
end
|
||||
def id_change_to_be_saved; end
|
||||
|
||||
sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
|
||||
sig do
|
||||
params(
|
||||
from: [T.nilable(::Integer), T.nilable(::Integer)],
|
||||
to: [T.nilable(::Integer), T.nilable(::Integer)]
|
||||
).returns(T::Boolean)
|
||||
end
|
||||
def id_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
|
||||
def id_in_database; end
|
||||
|
||||
sig { returns(T.nilable([T.untyped, T.untyped])) }
|
||||
sig do
|
||||
returns(T.nilable([[T.nilable(::Integer), T.nilable(::Integer)], [T.nilable(::Integer), T.nilable(::Integer)]]))
|
||||
end
|
||||
def id_previous_change; end
|
||||
|
||||
sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
|
||||
sig do
|
||||
params(
|
||||
from: [T.nilable(::Integer), T.nilable(::Integer)],
|
||||
to: [T.nilable(::Integer), T.nilable(::Integer)]
|
||||
).returns(T::Boolean)
|
||||
end
|
||||
def id_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
|
||||
def id_previously_was; end
|
||||
|
||||
sig { returns(T.untyped) }
|
||||
sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
|
||||
def id_was; end
|
||||
|
||||
sig { void }
|
||||
@@ -1078,7 +1098,9 @@ class Domain::PostGroupJoin::InkbunnyPoolJoin
|
||||
sig { returns(T::Boolean) }
|
||||
def saved_change_to_group_id?; end
|
||||
|
||||
sig { returns(T.nilable([T.untyped, T.untyped])) }
|
||||
sig do
|
||||
returns(T.nilable([[T.nilable(::Integer), T.nilable(::Integer)], [T.nilable(::Integer), T.nilable(::Integer)]]))
|
||||
end
|
||||
def saved_change_to_id; end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
|
||||
76
sorbet/rbi/dsl/domain/user/fa_user.rbi
generated
76
sorbet/rbi/dsl/domain/user/fa_user.rbi
generated
@@ -8,6 +8,7 @@
|
||||
class Domain::User::FaUser
|
||||
include GeneratedAssociationMethods
|
||||
include GeneratedAttributeMethods
|
||||
include EnumMethodsModule
|
||||
extend CommonRelationMethods
|
||||
extend GeneratedRelationMethods
|
||||
|
||||
@@ -51,6 +52,9 @@ class Domain::User::FaUser
|
||||
).returns(::Domain::User::FaUser)
|
||||
end
|
||||
def new(attributes = nil, &block); end
|
||||
|
||||
sig { returns(T::Hash[T.any(String, Symbol), String]) }
|
||||
def states; end
|
||||
end
|
||||
|
||||
module CommonRelationMethods
|
||||
@@ -442,6 +446,26 @@ class Domain::User::FaUser
|
||||
def third_to_last!; end
|
||||
end
|
||||
|
||||
module EnumMethodsModule
|
||||
sig { void }
|
||||
def state_account_disabled!; end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
def state_account_disabled?; end
|
||||
|
||||
sig { void }
|
||||
def state_error!; end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
def state_error?; end
|
||||
|
||||
sig { void }
|
||||
def state_ok!; end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
def state_ok?; end
|
||||
end
|
||||
|
||||
module GeneratedAssociationMethods
|
||||
sig { returns(T.nilable(::Domain::UserAvatar)) }
|
||||
def avatar; end
|
||||
@@ -732,6 +756,15 @@ class Domain::User::FaUser
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
|
||||
def none(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
|
||||
def not_state_account_disabled(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
|
||||
def not_state_error(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
|
||||
def not_state_ok(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
|
||||
def null_relation?(*args, &blk); end
|
||||
|
||||
@@ -791,6 +824,15 @@ class Domain::User::FaUser
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
|
||||
def select(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
|
||||
def state_account_disabled(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
|
||||
def state_error(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
|
||||
def state_ok(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
|
||||
def strict_loading(*args, &blk); end
|
||||
|
||||
@@ -2464,7 +2506,7 @@ class Domain::User::FaUser
|
||||
sig { returns(T.nilable(::String)) }
|
||||
def state; end
|
||||
|
||||
sig { params(value: T.nilable(::String)).returns(T.nilable(::String)) }
|
||||
sig { params(value: T.nilable(T.any(::String, ::Symbol))).returns(T.nilable(T.any(::String, ::Symbol))) }
|
||||
def state=(value); end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
@@ -2485,7 +2527,12 @@ class Domain::User::FaUser
|
||||
sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
|
||||
def state_change_to_be_saved; end
|
||||
|
||||
sig { params(from: T.nilable(::String), to: T.nilable(::String)).returns(T::Boolean) }
|
||||
sig do
|
||||
params(
|
||||
from: T.nilable(T.any(::String, ::Symbol)),
|
||||
to: T.nilable(T.any(::String, ::Symbol))
|
||||
).returns(T::Boolean)
|
||||
end
|
||||
def state_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
|
||||
|
||||
sig { returns(T.nilable(::String)) }
|
||||
@@ -2494,7 +2541,12 @@ class Domain::User::FaUser
|
||||
sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
|
||||
def state_previous_change; end
|
||||
|
||||
sig { params(from: T.nilable(::String), to: T.nilable(::String)).returns(T::Boolean) }
|
||||
sig do
|
||||
params(
|
||||
from: T.nilable(T.any(::String, ::Symbol)),
|
||||
to: T.nilable(T.any(::String, ::Symbol))
|
||||
).returns(T::Boolean)
|
||||
end
|
||||
def state_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
|
||||
|
||||
sig { returns(T.nilable(::String)) }
|
||||
@@ -2821,6 +2873,15 @@ class Domain::User::FaUser
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
|
||||
def none(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
|
||||
def not_state_account_disabled(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
|
||||
def not_state_error(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
|
||||
def not_state_ok(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
|
||||
def null_relation?(*args, &blk); end
|
||||
|
||||
@@ -2880,6 +2941,15 @@ class Domain::User::FaUser
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
|
||||
def select(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
|
||||
def state_account_disabled(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
|
||||
def state_error(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
|
||||
def state_ok(*args, &blk); end
|
||||
|
||||
sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
|
||||
def strict_loading(*args, &blk); end
|
||||
|
||||
|
||||
@@ -5,12 +5,19 @@ class HttpClientMockHelpers
|
||||
extend RSpec::Mocks::ExampleMethods
|
||||
extend RSpec::Matchers
|
||||
|
||||
def self.init_http_client_mock(http_client_mock, requests)
|
||||
def self.init_http_client_mock(http_client_mock, requests, any_order: false)
|
||||
if any_order
|
||||
init_any_order(http_client_mock, requests)
|
||||
else
|
||||
init_ordered(http_client_mock, requests)
|
||||
end
|
||||
end
|
||||
|
||||
def self.init_ordered(http_client_mock, requests)
|
||||
log_entries = []
|
||||
|
||||
requests.each do |request|
|
||||
sha256 = Digest::SHA256.digest(request[:contents])
|
||||
|
||||
log_entry =
|
||||
build(
|
||||
:http_log_entry,
|
||||
@@ -32,7 +39,6 @@ class HttpClientMockHelpers
|
||||
)
|
||||
log_entry.save!
|
||||
log_entries << log_entry
|
||||
|
||||
caused_by_entry = nil
|
||||
if request[:caused_by_entry_idx]
|
||||
caused_by_entry = log_entries[request[:caused_by_entry_idx]]
|
||||
@@ -61,4 +67,47 @@ class HttpClientMockHelpers
|
||||
|
||||
log_entries
|
||||
end
|
||||
|
||||
def self.init_any_order(http_client_mock, requests)
|
||||
log_entries_by_uri =
|
||||
requests
|
||||
.map do |request|
|
||||
sha256 = Digest::SHA256.digest(request[:contents])
|
||||
log_entry =
|
||||
create(
|
||||
:http_log_entry,
|
||||
uri: request[:uri],
|
||||
verb: :get,
|
||||
content_type: request[:content_type],
|
||||
status_code: request[:status_code] || 200,
|
||||
performed_by: "direct",
|
||||
response_time_ms: rand(20..100),
|
||||
response:
|
||||
BlobEntry.find_by(sha256: sha256) ||
|
||||
build(
|
||||
:blob_entry,
|
||||
content_type: request[:content_type],
|
||||
content: request[:contents],
|
||||
),
|
||||
)
|
||||
[request[:uri], log_entry]
|
||||
end
|
||||
.to_h
|
||||
|
||||
allow(http_client_mock).to receive(:get) do |uri, opts|
|
||||
log_entry = log_entries_by_uri[uri]
|
||||
expect(log_entry).not_to(
|
||||
be_nil,
|
||||
"no log entry found for uri: #{uri}\nValid uris: \n#{log_entries_by_uri.keys.join("\n")}",
|
||||
)
|
||||
logger.info "[mock http client] [get] [#{uri}] [#{opts.inspect.truncate(80)}]"
|
||||
Scraper::HttpClient::Response.new(
|
||||
status_code: log_entry.status_code,
|
||||
body: log_entry.response.contents,
|
||||
log_entry: log_entry,
|
||||
)
|
||||
end
|
||||
|
||||
log_entries_by_uri.values
|
||||
end
|
||||
end
|
||||
|
||||
@@ -138,6 +138,16 @@ describe Domain::Fa::Job::FavsJob do
|
||||
expect(post.creator.url_name).to eq("sepulte")
|
||||
end
|
||||
|
||||
it "creates missing posts" do
|
||||
expect(Domain::Post::FaPost.find_by(fa_id: 52_106_426)).to be_nil
|
||||
expect do perform_now({ url_name: "zzreg" }) end.to change(
|
||||
Domain::Post::FaPost,
|
||||
:count,
|
||||
).by(5)
|
||||
post = Domain::Post::FaPost.find_by(fa_id: 52_106_426)
|
||||
expect(post).not_to be_nil
|
||||
end
|
||||
|
||||
it "updates scanned_favs_at" do
|
||||
perform_now({ url_name: "zzreg" })
|
||||
user.reload
|
||||
@@ -272,18 +282,23 @@ describe Domain::Fa::Job::FavsJob do
|
||||
|
||||
before do
|
||||
# Create some existing favs that would be on page 2 and 3
|
||||
existing_posts =
|
||||
Domain::Post::FaPost.create!(
|
||||
[
|
||||
{ fa_id: fa_ids_page2[0], creator: user },
|
||||
{ fa_id: fa_ids_page2[1], creator: user },
|
||||
{ fa_id: fa_ids_page3[0], creator: user },
|
||||
],
|
||||
)
|
||||
existing_posts = [
|
||||
create(:domain_post_fa_post, fa_id: fa_ids_page2[0]),
|
||||
create(:domain_post_fa_post, fa_id: fa_ids_page2[1]),
|
||||
create(:domain_post_fa_post, fa_id: fa_ids_page3[0]),
|
||||
]
|
||||
user.faved_posts << existing_posts
|
||||
user.update!(scanned_favs_at: 2.years.ago)
|
||||
end
|
||||
|
||||
it "does not remove existing favs from the user when the post is not on the page" do
|
||||
post = create(:domain_post_fa_post)
|
||||
user.faved_posts << post
|
||||
perform_now({ user: })
|
||||
user.reload
|
||||
expect(user.faved_posts).to include(post)
|
||||
end
|
||||
|
||||
it "stops scanning when no new favs are found and adds posts from scanned pages" do
|
||||
# Should only create posts from page 1 since those are the only new ones
|
||||
expect do perform_now({ url_name: "zzreg" }) end.to change(
|
||||
|
||||
215
spec/jobs/domain/fa/job/user_gallery_job_spec.rb
Normal file
215
spec/jobs/domain/fa/job/user_gallery_job_spec.rb
Normal file
@@ -0,0 +1,215 @@
|
||||
# typed: false
|
||||
require "rails_helper"
|
||||
|
||||
describe Domain::Fa::Job::UserGalleryJob do
|
||||
let(:http_client_mock) { instance_double("::Scraper::HttpClient") }
|
||||
before { Scraper::ClientFactory.http_client_mock = http_client_mock }
|
||||
before do
|
||||
@log_entries =
|
||||
HttpClientMockHelpers.init_http_client_mock(
|
||||
http_client_mock,
|
||||
client_mock_config,
|
||||
any_order: true,
|
||||
)
|
||||
end
|
||||
|
||||
let(:user_url_name) { "meesh" }
|
||||
let(:user_status) { "ok" }
|
||||
let(:args) { { url_name: user_url_name, scan_folders: true } }
|
||||
|
||||
shared_context "user model exists" do
|
||||
let!(:user) do
|
||||
create(
|
||||
:domain_user_fa_user,
|
||||
name: user_url_name,
|
||||
url_name: user_url_name,
|
||||
state: user_status,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
shared_context "pages are scanned" do
|
||||
let(:client_mock_config) do
|
||||
page_mocks.map do |page_mock|
|
||||
{
|
||||
uri: page_mock[:uri],
|
||||
status_code: 200,
|
||||
content_type: "text/html",
|
||||
contents: SpecUtil.read_fixture_file(page_mock[:file]),
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
shared_context "user has gallery pages" do
|
||||
let(:client_mock_config) do
|
||||
[
|
||||
{
|
||||
uri: "https://www.furaffinity.net/gallery/#{user_url_name}/",
|
||||
status_code: 200,
|
||||
content_type: "text/html",
|
||||
contents:
|
||||
SpecUtil.read_fixture_file("domain/fa/job/gallery_page_meesh.html"),
|
||||
},
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
shared_context "user has scraps pages" do
|
||||
let(:client_mock_config) do
|
||||
[
|
||||
{
|
||||
uri: "https://www.furaffinity.net/scraps/#{user_url_name}/",
|
||||
status_code: 200,
|
||||
content_type: "text/html",
|
||||
contents:
|
||||
SpecUtil.read_fixture_file("domain/fa/job/scraps_page_meesh.html"),
|
||||
},
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
shared_context "user is not found on fa" do
|
||||
let(:client_mock_config) do
|
||||
[
|
||||
{
|
||||
uri:
|
||||
"https://www.furaffinity.net/gallery/#{user_url_name}/1?perpage=72",
|
||||
status_code: 200,
|
||||
content_type: "text/html",
|
||||
contents:
|
||||
SpecUtil.read_fixture_file(
|
||||
"domain/fa/gallery/not_found_user_fortuneiceskular2002.html",
|
||||
),
|
||||
},
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
context "when scanning a user's gallery" do
|
||||
let(:user_url_name) { "pcraxkers" }
|
||||
let(:gallery_scraps_mocks) do
|
||||
[
|
||||
{
|
||||
uri:
|
||||
"https://www.furaffinity.net/scraps/#{user_url_name}/1?perpage=72",
|
||||
file: "domain/fa/gallery/scraps_page_1_pcraxkers.html",
|
||||
},
|
||||
{
|
||||
uri:
|
||||
"https://www.furaffinity.net/gallery/#{user_url_name}/1?perpage=72",
|
||||
file: "domain/fa/gallery/gallery_page_1_pcraxkers.html",
|
||||
},
|
||||
]
|
||||
end
|
||||
|
||||
let(:other_folder_mocks) do
|
||||
[
|
||||
{
|
||||
uri:
|
||||
"https://www.furaffinity.net/gallery/#{user_url_name}/folder/1400495/KNOT-ME-OUT-COMIC/1?perpage=72",
|
||||
file:
|
||||
"domain/fa/gallery/folder_knot_me_out_comic_page_1_pcraxkers.html",
|
||||
},
|
||||
{
|
||||
uri:
|
||||
"https://www.furaffinity.net/gallery/#{user_url_name}/folder/1505828/Hazbin-Hellvua/1?perpage=72",
|
||||
file:
|
||||
"domain/fa/gallery/folder_hazbin_hellvua_1505828_page_1_pcraxkers.html",
|
||||
},
|
||||
{
|
||||
uri:
|
||||
"https://www.furaffinity.net/gallery/#{user_url_name}/folder/1510162/Hazbin-Hellvua/1?perpage=72",
|
||||
file:
|
||||
"domain/fa/gallery/folder_hazbin_hellvua_1510162_page_1_pcraxkers.html",
|
||||
},
|
||||
{
|
||||
uri:
|
||||
"https://www.furaffinity.net/gallery/#{user_url_name}/folder/1505829/Pablo/1?perpage=72",
|
||||
file: "domain/fa/gallery/folder_pablo_page_1_pcraxkers.html",
|
||||
},
|
||||
]
|
||||
end
|
||||
|
||||
let(:page_mocks) { gallery_scraps_mocks + other_folder_mocks }
|
||||
|
||||
include_context "user model exists"
|
||||
include_context "pages are scanned"
|
||||
|
||||
context "when user has not been scanned before" do
|
||||
it "updates the user's scanned_gallery_at timestamp" do
|
||||
expect do
|
||||
perform_now(args)
|
||||
user.reload
|
||||
end.to(
|
||||
change(user, :scanned_gallery_at).to(
|
||||
be_within(1.minute).of(Time.current),
|
||||
),
|
||||
)
|
||||
end
|
||||
|
||||
it "enqueues post scan jobs for new submissions" do
|
||||
expectations = [
|
||||
change do
|
||||
SpecUtil.enqueued_job_args(Domain::Fa::Job::ScanPostJob).size
|
||||
end.by(52),
|
||||
change do
|
||||
SpecUtil.enqueued_job_args(Domain::Fa::Job::FavsJob).size
|
||||
end.by(1),
|
||||
].reduce(:and)
|
||||
|
||||
expect { perform_now(args) }.to(expectations)
|
||||
end
|
||||
|
||||
it "records the first log entry" do
|
||||
perform_now(args)
|
||||
user.reload
|
||||
expect(user.last_gallery_page_log_entry).to(be_present)
|
||||
end
|
||||
end
|
||||
|
||||
context "when user was recently scanned" do
|
||||
before { user.update!(scanned_gallery_at: 1.day.ago) }
|
||||
|
||||
it "skips scanning if not due for gallery scan" do
|
||||
expect do
|
||||
perform_now(args)
|
||||
user.reload
|
||||
end.not_to(change(user, :scanned_gallery_at))
|
||||
end
|
||||
|
||||
it "forces scan when force_scan is true" do
|
||||
expect do
|
||||
perform_now(args.merge(force_scan: true))
|
||||
user.reload
|
||||
end.to(
|
||||
change(user, :scanned_gallery_at).to(
|
||||
be_within(5.seconds).of(Time.current),
|
||||
),
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
context "when user has submission folders" do
|
||||
let(:other_folder_mocks) { [] }
|
||||
it "skips additional folders when scan_folders is false" do
|
||||
perform_now(args.merge(scan_folders: false))
|
||||
user.reload
|
||||
expect(user.last_gallery_page_log_entry).to(be_present)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "when user is not found" do
|
||||
let(:user_url_name) { "fortuneiceskular2002" }
|
||||
include_context "user model exists"
|
||||
include_context "user is not found on fa"
|
||||
|
||||
it "updates user state" do
|
||||
expect do
|
||||
perform_now(args)
|
||||
user.reload
|
||||
end.to(change(user, :state).from("ok").to("account_disabled"))
|
||||
end
|
||||
end
|
||||
end
|
||||
748
test/fixtures/files/domain/fa/gallery/folder_hazbin_hellvua_1505828_page_1_pcraxkers.html
vendored
Normal file
748
test/fixtures/files/domain/fa/gallery/folder_hazbin_hellvua_1505828_page_1_pcraxkers.html
vendored
Normal file
@@ -0,0 +1,748 @@
|
||||
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html lang="en" class="no-js" xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<title>Artwork Gallery for PCraxkers -- Fur Affinity [dot] net</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="description" content="Fur Affinity | For all things fluff, scaled, and feathered!" />
|
||||
<meta name="keywords" content="fur furry furries fursuit fursuits cosplay brony bronies zootopia scalies kemono anthro anthropormophic art online gallery portfolio" />
|
||||
<meta name="distribution" content="global" />
|
||||
<meta name="copyright" content="Frost Dragon Art LLC" />
|
||||
<meta name="robots" content="noai, noimageai" />
|
||||
|
||||
<link rel="icon" href="/themes/beta/img/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="/themes/beta/img/favicon.ico" type="image/x-icon" />
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet">
|
||||
|
||||
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=EDGE" />
|
||||
|
||||
|
||||
<!-- generic -->
|
||||
<meta name="robots" content="noindex" />
|
||||
|
||||
<!-- og -->
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="Artwork Gallery for PCraxkers -- Fur Affinity [dot] net" />
|
||||
<meta property="og:url" content="https://www.furaffinity.net/gallery/pcraxkers/" />
|
||||
<meta property="og:description" content="Australian Animator/artist ·Male · . . A place where I post my shame . . ╰━━━━━( ✦ )━━━━━╯" />
|
||||
<meta property="og:image" content="https://www.furaffinity.net/themes/beta/img/banners/fa_logo.png?v2" />
|
||||
|
||||
<!-- twitter -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:domain" content="furaffinity.net" />
|
||||
<meta name="twitter:site" content="@furaffinity" />
|
||||
<meta name="twitter:title" content="Artwork Gallery for PCraxkers -- Fur Affinity [dot] net" />
|
||||
<meta name="twitter:description" content="Australian Animator/artist ·Male · . . A place where I post my shame . . ╰━━━━━( ✦ )━━━━━╯" />
|
||||
<meta name="twitter:url" content="https://www.furaffinity.net/gallery/pcraxkers/" />
|
||||
<meta name="twitter:image" content="https://www.furaffinity.net/themes/beta/img/banners/fa_logo.png?v2" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var _faurl={d:'//d.furaffinity.net',a:'//a.furaffinity.net',r:'//rv.furaffinity.net',t:'//t.furaffinity.net',pb:'/themes/beta/js/prebid-7.54.5-fa.js'};
|
||||
</script>
|
||||
<script type="text/javascript" src="/themes/beta/js/common.js?u=2025011001"></script>
|
||||
<link type="text/css" rel="stylesheet" href="/themes/beta/css/ui_theme_dark.css?u=2025011001" />
|
||||
|
||||
<!-- browser hints -->
|
||||
<link rel="preconnect" href="//t.furaffinity.net" />
|
||||
<link rel="preconnect" href="//a.furaffinity.net" />
|
||||
<link rel="preconnect" href="//rv.furaffinity.net" />
|
||||
<link rel="preconnect" href="https://www15.smartadserver.com" />
|
||||
|
||||
<link rel="preload" href="/themes/beta/js/prototype.1.7.3.min.js" as="script" />
|
||||
<link rel="preload" href="/themes/beta/js/script.js?u=2025011001" as="script" />
|
||||
|
||||
</head>
|
||||
|
||||
<!-- EU request: no -->
|
||||
<body id="pageid-gallery" data-static-path="/themes/beta" data-user-logged-in="1" data-tag-blocklist="" data-tag-blocklist-hide-tagless="0" data-tag-blocklist-nonce="d7890b2d46020491ba77ee39193009a899012433">
|
||||
<script type="text/javascript">
|
||||
0; // attempted fix for fouc in ff
|
||||
</script>
|
||||
|
||||
|
||||
<!-- sidebar -->
|
||||
<div class="mobile-navigation">
|
||||
|
||||
<div class="mobile-nav-container">
|
||||
|
||||
<div class="mobile-nav-container-item left">
|
||||
<label for="mobile-menu-nav" class="css-menu-toggle only-one"><img class="burger-menu" src="/themes/beta/img/fa-burger-menu-icon.png"></label>
|
||||
</div>
|
||||
|
||||
<div class="mobile-nav-container-item center"><a class="mobile-nav-logo" href="/"><img class="site-logo" src="/themes/beta/img/banners/fa_logo.png?v2"></a></div>
|
||||
|
||||
<div class="mobile-nav-container-item right">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="nav-ac-container">
|
||||
<input id="mobile-menu-nav" name="accordion-1" type="checkbox" />
|
||||
<article class="nav-ac-content mobile-menu">
|
||||
|
||||
<div class="mobile-nav-content-container">
|
||||
<div class="aligncenter">
|
||||
<a href="/user/zzreg/"><img class="loggedin_user_avatar avatar" alt="zzreg" src="//a.furaffinity.net/1424255659/zzreg.gif"/></a>
|
||||
<h2 style="margin-bottom:0"><a href="/user/zzreg/">zzreg</a></h2>
|
||||
<a href="/user/zzreg/">Userpage</a> |
|
||||
<a href="/msg/pms/">Notes</a> |
|
||||
<a href="/controls/journal/">Journals</a> |
|
||||
<a href="/plus/"><img style="position:relative;top:4px" src="/themes/beta/img/the-golden-pawb.png"> FA+</a> |
|
||||
<a href="https://shop.furaffinity.net" target="_blank"><img style="position:relative;top:3px" src="/themes/beta/img/icons/merch_store_icon.png"> Shop</a>
|
||||
<br>
|
||||
</div>
|
||||
<hr>
|
||||
<h2><a href="/browse/">Browse</a></h2>
|
||||
<h2><a href="/search/">Search</a></h2>
|
||||
<h2><a href="/submit/">Upload</a></h2>
|
||||
|
||||
<div class="nav-ac-container">
|
||||
<label for="mobile-menu-submenu-0"><h2 style="margin-top:0;padding-top:0">Support ▼</h2></label>
|
||||
<input id="mobile-menu-submenu-0" name="accordion-1" type="checkbox" />
|
||||
<article class="nav-ac-content nav-ac-content-dropdown">
|
||||
<a href="/journals/fender">News & Updates</a><br>
|
||||
<a href="/help/">Help & Support</a><br>
|
||||
<a href="/advertising.html">Advertising</a><br>
|
||||
<a href="/blm">Black Lives Matter</a>
|
||||
|
||||
<h3>SUPPORT FA</h3>
|
||||
<a href="/plus/">Subscribe to FA+ </a><br>
|
||||
<a href="https://shop.furaffinity.net/" target="_blank">FA Merch Store</a>
|
||||
|
||||
|
||||
<h3>RULES & POLICIES</h3>
|
||||
<a href="/tos">Terms of Service</a><br>
|
||||
<a href="/privacy">Privacy</a><br>
|
||||
<a href="/coc">Code of Conduct</a><br>
|
||||
<a href="/aup">Upload Policy</a>
|
||||
|
||||
<h3>SOCIAL</h3>
|
||||
<a href="https://discord.gg/furaffinity">Discord</a><br>
|
||||
<a href="https://www.twitter.com/furaffinity/">Twitter</a>
|
||||
|
||||
<h3>Support</h3>
|
||||
<a href="/controls/troubletickets/">REPORT A PROBLEM</a>
|
||||
</article>
|
||||
</div>
|
||||
<div class="mobile-sfw-toggle">
|
||||
<h2>SFW Mode</h2>
|
||||
|
||||
<div class="sfw-toggle type-slider slider-button-wrapper">
|
||||
<input type="checkbox" id="sfw-toggle-mobile" class="slider-toggle" />
|
||||
<label class="slider-viewport" for="sfw-toggle-mobile">
|
||||
<div class="slider">
|
||||
<div class="slider-button"> </div>
|
||||
<div class="slider-content left"><span>SFW</span></div>
|
||||
<div class="slider-content right"><span>NSFW</span></div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-ac-container">
|
||||
<label for="mobile-menu-submenu-1"><h2 style="margin-top:0;padding-top:0">Settings ▼</h2></label>
|
||||
<input id="mobile-menu-submenu-1" name="accordion-1" type="checkbox" />
|
||||
<article class="nav-ac-content nav-ac-content-dropdown">
|
||||
<h3>ACCOUNT INFORMATION</h3>
|
||||
<a href="/controls/settings/">Account Settings</a><br>
|
||||
<a href="/controls/site-settings/">Global Site Settings</a><br>
|
||||
<a href="/controls/user-settings/">User Settings</a>
|
||||
|
||||
<h3>CUSTOMIZE USER PROFILE</h3>
|
||||
<a href="/controls/profile/">Profile Info</a><br>
|
||||
<a href="/controls/profilebanner/">Profile Banner</a><br>
|
||||
<a href="/controls/contacts/">Contacts and Social Media</a><br>
|
||||
<a href="/controls/avatar/">Avatar Management</a>
|
||||
|
||||
<h3>MANAGE MY CONTENT</h3>
|
||||
<a href="/controls/submissions/">Submissions</a><br>
|
||||
<a href="/controls/folders/submissions/">Folders</a><br>
|
||||
<a href="/controls/journal/">Journals</a><br>
|
||||
<a href="/controls/favorites/">Favorites</a><br>
|
||||
<a href="/controls/buddylist/">Watches</a><br>
|
||||
<a href="/controls/shouts/">Shouts</a><br>
|
||||
<a href="/controls/badges/">Badges</a>
|
||||
|
||||
<h3>SECURITY</h3>
|
||||
<a href="/controls/sessions/logins/">Active Sessions</a><br>
|
||||
<a href="/controls/sessions/logs/">Activity Log</a><br>
|
||||
<a href="/controls/sessions/labels/">Browser Labels</a>
|
||||
</article>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
<h2><form class="post-btn logout-link" method="post" action="/logout/"><button type="submit">Log Out</button><input type="hidden" name="key" value="86700f9e03ccdf5b667e25b4b13573c6f3c73878"/></form>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_logout_button', '.logout-link button']);
|
||||
</script>
|
||||
</h2>
|
||||
|
||||
|
||||
<h2></h2>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mobile-notification-bar">
|
||||
<a class="notification-container inline" href="/msg/submissions/" title="86,664 Submission Notifications">86664S</a>
|
||||
<a class="notification-container inline" href="/msg/others/#journals" title="17,902 Journal Notifications">17902J</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<nav id="ddmenu">
|
||||
<div class="mobile-nav navhideondesktop hideonmobile hideontablet">
|
||||
<div class="mobile-nav-logo"><a class="mobile-nav-logo" href="/"><img src="/themes/beta/img/banners/fa_logo.png?v2"></a></div>
|
||||
<div class="mobile-nav-header-item"><a href="/browse/">Browse</a></div>
|
||||
<div class="mobile-nav-header-item"><a href="/search/">Search</a></div>
|
||||
</div>
|
||||
|
||||
<div class="menu-icon"></div>
|
||||
|
||||
<ul class="navhideonmobile">
|
||||
<li class="lileft"><div class="lileft hideonmobile" style="vertical-align:middle;line-height:0 !important" ><a class="top-heading" href="/"><img class="nav-bar-logo" src="/themes/beta/img/banners/fa_logo.png?v2"></a></div></li>
|
||||
<li class="lileft"><a class="top-heading" href="/browse/"><div class="sprite-paw menu-space-saver hideonmobile"></div>Browse</a></li>
|
||||
<li class="lileft"><a class="top-heading hideondesktop" href="/search/">Search</a></li>
|
||||
<li class="lileft"><a class="top-heading" href="/submit/"><div class="sprite-upload menu-space-saver hideonmobile"></div> Upload</a></li>
|
||||
<li class="lileft">
|
||||
<a class="top-heading" href="#"><div class="sprite-news menu-space-saver hideonmobile"></div>Support</a>
|
||||
<i class="caret"></i>
|
||||
<div class="dropdown dropdown-left ">
|
||||
<div class="dd-inner">
|
||||
<div class="column">
|
||||
<h3>Community</h3>
|
||||
<a href="/journals/fender">News & Updates</a>
|
||||
<a href="/help/">Help & Support</a>
|
||||
<a href="/advertising.html">Advertising</a>
|
||||
<a href="/blm/">Black Lives Matter</a>
|
||||
|
||||
<h3>Rules & Policies</h3>
|
||||
<a href="/tos">Terms of Service</a>
|
||||
<a href="/privacy">Privacy</a>
|
||||
<a href="/coc">Code of Conduct</a>
|
||||
<a href="/aup">Upload Policy</a>
|
||||
|
||||
<h3>Social</h3>
|
||||
<a href="https://discord.gg/furaffinity">Discord</a>
|
||||
<a href="https://www.twitter.com/furaffinity/">Twitter</a>
|
||||
|
||||
<h3>Trouble Tickets</h3>
|
||||
<a href="/controls/troubletickets/">Report a Problem</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="lileft"><a class="top-heading" href="/plus/" title="FA+"><img style="position:relative;top:3px" src="/themes/beta/img/the-golden-pawb.png"><span class="hidebrowselowres"> FA+</span></a></li>
|
||||
<li class="lileft"><a class="top-heading" href="https://shop.furaffinity.net" title="Shop" target="_blank"><img style="position:relative;top:3px" src="/themes/beta/img/icons/merch_store_icon.png"><span class="hidebrowselowres"> Shop</span></a></li>
|
||||
|
||||
<div class="lileft hideonmobile">
|
||||
<form id="searchbox" method="get" action="/search/">
|
||||
<input type="search" name="q" placeholder="SEARCH">
|
||||
<a href="/search"> </a>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="message-bar-desktop">
|
||||
|
||||
<a class="notification-container inline" href="/msg/submissions/" title="86,664 Submission Notifications">86664S</a>
|
||||
<a class="notification-container inline" href="/msg/others/#journals" title="17,902 Journal Notifications">17902J</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="floatleft hideonmobile">
|
||||
<a href="/user/zzreg"><img class="loggedin_user_avatar menubar-icon-resize avatar" style="cursor:pointer" alt="zzreg" src="//a.furaffinity.net/1424255659/zzreg.gif"/></a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="submenu-trigger">
|
||||
<div class="floatleft hideonmobile">
|
||||
<svg class="avatar-submenu-trigger banner-svg" xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 24 24"><path d="M4 6h16v2H4zm0 5h16v2H4zm0 5h16v2H4z"></path></svg>
|
||||
</div>
|
||||
<a id="my-username" class="top-heading hideondesktop" href="#"><span class="hideondesktop">My FA ( </span>zzreg<span class="hideondesktop"> )</span></a>
|
||||
|
||||
<div class="dropdown dropdown-right">
|
||||
<div class="dd-inner">
|
||||
<div class="column">
|
||||
<h3>Account</h3>
|
||||
<a href="/user/zzreg/">My Userpage</a>
|
||||
<a href="/msg/pms/">Check My Notes</a>
|
||||
<a href="/controls/journal/">Create a Journal</a>
|
||||
<a href="/commissions/zzreg/">My Commission Info</a>
|
||||
|
||||
<h3>Support Fur Affinity</h3>
|
||||
<a href="/plus/">Subscribe to FA+ </a>
|
||||
<a href="https://shop.furaffinity.net/" target="_blank">Merch Store</a>
|
||||
|
||||
<h3>Trouble Tickets</h3>
|
||||
<a href="/controls/troubletickets/">Report a Problem</a>
|
||||
|
||||
<div class="mobile-sfw-toggle">
|
||||
<h3 class="padding-top:10px">Toggle SFW</h3>
|
||||
|
||||
<div class="sfw-toggle type-slider slider-button-wrapper" style="position:relative;top:5px">
|
||||
<input type="checkbox" id="sfw-toggle-mobile" class="slider-toggle" />
|
||||
<label class="slider-viewport" for="sfw-toggle-mobile">
|
||||
<div class="slider">
|
||||
<div class="slider-button"> </div>
|
||||
<div class="slider-content left"><span>SFW</span></div>
|
||||
<div class="slider-content right"><span>NSFW</span></div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<form class="post-btn logout-link" method="post" action="/logout/"><button type="submit">Log Out</button><input type="hidden" name="key" value="86700f9e03ccdf5b667e25b4b13573c6f3c73878"/></form>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_logout_button', '.logout-link button']);
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="submenu-trigger">
|
||||
<a class="top-heading" href="#"><svg class="banner-svg" xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 24 24" style="transform: ;msFilter:;"><path d="M12 16c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4zm0-6c1.084 0 2 .916 2 2s-.916 2-2 2-2-.916-2-2 .916-2 2-2z"></path><path d="m2.845 16.136 1 1.73c.531.917 1.809 1.261 2.73.73l.529-.306A8.1 8.1 0 0 0 9 19.402V20c0 1.103.897 2 2 2h2c1.103 0 2-.897 2-2v-.598a8.132 8.132 0 0 0 1.896-1.111l.529.306c.923.53 2.198.188 2.731-.731l.999-1.729a2.001 2.001 0 0 0-.731-2.732l-.505-.292a7.718 7.718 0 0 0 0-2.224l.505-.292a2.002 2.002 0 0 0 .731-2.732l-.999-1.729c-.531-.92-1.808-1.265-2.731-.732l-.529.306A8.1 8.1 0 0 0 15 4.598V4c0-1.103-.897-2-2-2h-2c-1.103 0-2 .897-2 2v.598a8.132 8.132 0 0 0-1.896 1.111l-.529-.306c-.924-.531-2.2-.187-2.731.732l-.999 1.729a2.001 2.001 0 0 0 .731 2.732l.505.292a7.683 7.683 0 0 0 0 2.223l-.505.292a2.003 2.003 0 0 0-.731 2.733zm3.326-2.758A5.703 5.703 0 0 1 6 12c0-.462.058-.926.17-1.378a.999.999 0 0 0-.47-1.108l-1.123-.65.998-1.729 1.145.662a.997.997 0 0 0 1.188-.142 6.071 6.071 0 0 1 2.384-1.399A1 1 0 0 0 11 5.3V4h2v1.3a1 1 0 0 0 .708.956 6.083 6.083 0 0 1 2.384 1.399.999.999 0 0 0 1.188.142l1.144-.661 1 1.729-1.124.649a1 1 0 0 0-.47 1.108c.112.452.17.916.17 1.378 0 .461-.058.925-.171 1.378a1 1 0 0 0 .471 1.108l1.123.649-.998 1.729-1.145-.661a.996.996 0 0 0-1.188.142 6.071 6.071 0 0 1-2.384 1.399A1 1 0 0 0 13 18.7l.002 1.3H11v-1.3a1 1 0 0 0-.708-.956 6.083 6.083 0 0 1-2.384-1.399.992.992 0 0 0-1.188-.141l-1.144.662-1-1.729 1.124-.651a1 1 0 0 0 .471-1.108z"></path></svg></a>
|
||||
<div class="dropdown dropdown-right">
|
||||
<div class="dd-inner">
|
||||
<div class="column">
|
||||
<h3>Account Information</h3>
|
||||
<a href="/controls/settings/">Account Settings</a>
|
||||
<a href="/controls/site-settings/">Global Site Settings</a>
|
||||
<a href="/controls/user-settings/">User Settings</a>
|
||||
|
||||
<h3>Customize User Profile</h3>
|
||||
<a href="/controls/profile/">Profile Info</a>
|
||||
<a href="/controls/profilebanner/">Profile Banner</a>
|
||||
<a href="/controls/contacts/">Contacts & Social Media</a>
|
||||
<a href="/controls/avatar/">Avatar Management</a>
|
||||
|
||||
<h3>Manage My Content</h3>
|
||||
<a href="/controls/submissions/">Submissions</a>
|
||||
<a href="/controls/folders/submissions/">Folders</a>
|
||||
<a href="/controls/journal/">Journals</a>
|
||||
<a href="/controls/favorites/">Favorites</a>
|
||||
<a href="/controls/buddylist/">Watches</a>
|
||||
<a href="/controls/shouts/">Shouts</a>
|
||||
<a href="/controls/badges/">Badges</a>
|
||||
|
||||
<h3>Security</h3>
|
||||
<a href="/controls/sessions/logins/">Active Sessions</a>
|
||||
<a href="/controls/sessions/logs/">Activity Log</a>
|
||||
<a href="/controls/sessions/labels/">Browser Labels</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_sfw_button', '.sfw-toggle']);
|
||||
</script>
|
||||
</nav>
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function(){
|
||||
// all menus that should be opened only one at a time
|
||||
$$('.css-menu-toggle.only-one').invoke('observe', 'click', function(evt) {
|
||||
var curr_input = $(evt.findElement('label').getAttribute('for'));
|
||||
curr_input.next('.nav-ac-content').removeClassName('no-transition');
|
||||
if(curr_input.checked === false) {
|
||||
$$('.css-menu-toggle.only-one').each(function(elm){
|
||||
var elm_input = $(elm.getAttribute('for'));
|
||||
if(elm_input.checked === true) {
|
||||
elm_input.next('.nav-ac-content').addClassName('no-transition');
|
||||
elm_input.checked = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="news-block">
|
||||
|
||||
<div id="admin_notice_do_not_adblock2" class="newsBlock">
|
||||
<!--strong>Notice:</strong><span class="hideondesktop hideontablet"><br></span-->
|
||||
<a href="https://gofund.me/0a0b27ba">Support Fur Affinity: Honoring Dragoneer's Legacy. https://gofund.me/0a0b27ba</a></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="main-window" class="footer-mobile-tweak g-wrapper">
|
||||
<div id="header" class="has-adminmessage">
|
||||
|
||||
<!-- user profile banner -->
|
||||
|
||||
<site-banner>
|
||||
<a href="/">
|
||||
<picture>
|
||||
<source media="(max-width: 799px)" srcset="//d.furaffinity.net/art/pcraxkers/1670070754/profile_banner_mobile.jpg">
|
||||
<source media="(min-width: 800px)" srcset="//d.furaffinity.net/art/pcraxkers/1670070754/profile_banner.jpg">
|
||||
<img src="//d.furaffinity.net/art/pcraxkers/1670070754/profile_banner.jpg" alt="Profile Banner image">
|
||||
</picture>
|
||||
</a>
|
||||
</site-banner>
|
||||
|
||||
<a name="top"></a>
|
||||
</div>
|
||||
|
||||
<div id="site-content">
|
||||
|
||||
<!-- /header -->
|
||||
|
||||
|
||||
<userpage-nav-header>
|
||||
|
||||
<userpage-nav-avatar>
|
||||
<a class="current" href="/user/pcraxkers/"><img alt="pcraxkers" src="//a.furaffinity.net/1674032155/pcraxkers.gif"/></a>
|
||||
</userpage-nav-avatar>
|
||||
|
||||
<userpage-nav-user-details>
|
||||
<h1><username>
|
||||
~PCraxkers
|
||||
</username></h1>
|
||||
|
||||
<div class="font-small">
|
||||
<username class="user-title">
|
||||
<span class="hideonmobile">Registered:</span> Jul 16, 2021 06:31 </username>
|
||||
</div>
|
||||
</userpage-nav-user-details>
|
||||
|
||||
|
||||
<userpage-nav-interface-buttons>
|
||||
<a class="button standard stop" href="/unwatch/pcraxkers/?key=e7092dc7833fd3e83f6e0b972bf4044234de6127">-Watch</a>
|
||||
<a class="button standard" href="/newpm/pcraxkers/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" style="transform: ;msFilter:;"><path d="M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm0 2v.511l-8 6.223-8-6.222V6h16zM4 18V9.044l7.386 5.745a.994.994 0 0 0 1.228 0L20 9.044 20.002 18H4z"></path></svg></a>
|
||||
|
||||
</userpage-nav-interface-buttons>
|
||||
|
||||
<userpage-nav-links>
|
||||
<ul style="display:flex">
|
||||
<li><h3><a href="/user/pcraxkers/">Home</a></h3></li>
|
||||
<li><h3><a class="current" href="/gallery/pcraxkers/">Gallery</a></h3></li>
|
||||
<li><h3><a href="/scraps/pcraxkers/">Scraps</a></h3></li>
|
||||
<li><h3><a href="/favorites/pcraxkers/">Favs</a></h3></li>
|
||||
<li><h3><a href="/journals/pcraxkers/">Journals</a></h3></li>
|
||||
|
||||
</ul>
|
||||
</userpage-nav-links>
|
||||
|
||||
</userpage-nav-header>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="clear"></div>
|
||||
<!--- /USER NAV --->
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function(){
|
||||
$$('#jsBlockUnblockButton').invoke('observe', 'click', function(evt){
|
||||
var message = 'Are you sure you want to ' + (evt.findElement('a').href.indexOf('/unblock') != -1 ? 'unblock' : 'block') + ' this user?';
|
||||
if (!confirm(message)) {
|
||||
evt.stop();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="page-galleryscraps">
|
||||
<div id="columnpage">
|
||||
<div class="sidebar">
|
||||
|
||||
<div class="folder-list">
|
||||
<div class="user-folders">
|
||||
<div class="container-item-top">
|
||||
<h4>Gallery Folders</h4>
|
||||
</div>
|
||||
<div class="default-folders">
|
||||
<ul style="list-style-type:none">
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/" class="dotted">Main Gallery</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/scraps/pcraxkers/" class="dotted">Scraps</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<ul class="default-group" style="list-style-type:none">
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/folder/1400495/KNOT-ME-OUT-COMIC" title="11 submissions" class="dotted">KNOT ME OUT - COMIC</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
❯❯ <strong title="2 submissions">Hazbin/Hellvua</strong>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/folder/1505829/Pablo" title="18 submissions" class="dotted">Pablo</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/folder/1510162/Hazbin-Hellvua" title="1 submissions" class="dotted">Hazbin/Hellvua</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="rectangleAd">
|
||||
<div data-id="sidebar" class="rectangleAd__slot format--mediumRectangle jsAdSlot"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
|
||||
|
||||
<div class="leaderboardAd">
|
||||
<div data-id="header_middle" class="leaderboardAd__slot format--leaderboard jsAdSlot"></div>
|
||||
</div>
|
||||
|
||||
<section class="gallery-section">
|
||||
<div class="section-body">
|
||||
<div class="submission-list">
|
||||
<div class="folder-description" style="width:100% !important">
|
||||
<div class="container-item-top">
|
||||
<h3>Hazbin/Hellvua</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="gallery-navigation aligncenter">
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="navigation-page-name inline" style="width:32%;">
|
||||
Page #1 </div>
|
||||
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
<!--button class="button standard" type="button">Next</button-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section id="gallery-gallery" class="gallery no-padding aligncenter no-artistname s-200 ">
|
||||
<figure id="sid-59759007" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/59759007/">
|
||||
<img data-tags="hazbin_hotel lucifer alastor rut heat tail_tug tugging demon" class="blocked-content" alt="" src="//t.furaffinity.net/59759007@200-1738667026.jpg" data-width="200" data-height="200" style="width:200px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/59759007/" title="Request - RadioApple (Alastor in Rut)">Request - RadioApple (Alastor in Rut)</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-59654327" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/59654327/">
|
||||
<img data-tags="staticradio hazbin alastor vox bj praise" class="blocked-content" alt="" src="//t.furaffinity.net/59654327@200-1737912116.jpg" data-width="72.567" data-height="200" style="width:72.567px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/59654327/" title="RadioStatic - Body Worship">RadioStatic - Body Worship</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</section>
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_gallery', 'gallery-gallery']);
|
||||
</script>
|
||||
|
||||
<div class="gallery-navigation aligncenter">
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="inline" style="width:32%">
|
||||
<div class="mobile-button">
|
||||
<button type="button" class="button standard toggle_titles">Disable Titles</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
<!--button class="button standard" type="button">Next</button-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var descriptions = {"59759007":{"title":"Request - RadioApple (Alastor in Rut)","description":"Request Box: https:\/\/koddy5555.wixsite.com\/artrequests","username":"PCraxkers","lower":"pcraxkers"},"59654327":{"title":"RadioStatic - Body Worship","description":"Some #StaticRadio doodles, referencing one of @\/TobinArts audio clips \ud83d\udc99\u2764\ufe0f","username":"PCraxkers","lower":"pcraxkers"}};
|
||||
</script>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- /<div id="site-content"> -->
|
||||
|
||||
<div id="footer">
|
||||
<div class="auto_link footer-links">
|
||||
<span class="hideonmobile">
|
||||
<a href="/advertising">Advertise</a> |
|
||||
<a href="/plus"><img style="position:relative;top:4px" src="/themes/beta/img/the-golden-pawb.png"> Get FA+</a> |
|
||||
<a href="https://shop.furaffinity.net/"><img style="position:relative;top:4px" src="/themes/beta/img/icons/merch_store_icon.png"> Merch Store</a> |
|
||||
<a href="/tos">Terms of Service</a> |
|
||||
<a href="/privacy">Privacy</a> |
|
||||
<a href="/coc">Code of Conduct</a> |
|
||||
<a href="/aup">Upload Policy</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footerAds">
|
||||
<div class="footerAds__column">
|
||||
<div class="footerAds__slot format--faMediumRectangle jsAdSlot" data-id="footer_left"></div>
|
||||
</div>
|
||||
|
||||
<div class="footerAds__column">
|
||||
<div class="footerAds__slot footerAds__slot--faLogo">
|
||||
<img src="/themes/beta/img/banners/fa_logo.png?v2">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footerAds__column">
|
||||
<div class="footerAds__slot format--faSmallRectangle jsAdSlot" data-id="footer_right_top"></div>
|
||||
<div class="footerAds__slot format--faSmallRectangle jsAdSlot" data-id="footer_right_bottom"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="online-stats">
|
||||
91924 <strong><span title="Measured in the last 900 seconds">Users online</span></strong> —
|
||||
5249 <strong>guests</strong>,
|
||||
15710 <strong>registered</strong>
|
||||
and 70965 <strong>other</strong>
|
||||
<!-- Online Counter Last Update: Wed, 19 Feb 2025 11:52:00 -0800 -->
|
||||
</div>
|
||||
<small>Limit bot activity to periods with less than 10k registered users online.</small>
|
||||
|
||||
<br><br>
|
||||
<strong>© 2005-2025 Frost Dragon Art LLC</strong>
|
||||
|
||||
<div class="footnote">
|
||||
Server Time: Feb 19, 2025 11:52 AM </div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="cookie-notification" class="default-hidden">
|
||||
<div class="text-container">This website uses cookies to enhance your browsing experience. <a href="/privacy" target="_blank">Learn More</a></div>
|
||||
<div class="button-container"><button class="accept">I Consent</button></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function(){
|
||||
$$('#cookie-notification button').invoke('observe', 'click', function() {
|
||||
setCookie('cc', 1, expiryyear, '/');
|
||||
$('cookie-notification').addClassName('default-hidden');
|
||||
});
|
||||
$('cookie-notification').removeClassName('default-hidden');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- <div id="main-window"> -->
|
||||
|
||||
<!--
|
||||
Server Local Time: Feb 19, 2025 11:52 AM <br />
|
||||
Page generated in 0.012 seconds [ 22.2% PHP, 77.8% SQL ] (25 queries) -->
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function() {
|
||||
var exists = getCookie('sz');
|
||||
var saved = save_viewport_size();
|
||||
if((!exists && saved) || (exists && saved && exists != saved)) {
|
||||
//window.location.reload();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="/themes/beta/js/censor.js?u=2025011001"></script>
|
||||
|
||||
<script type="text/javascript" src="/themes/beta/js/prototype.1.7.3.min.js"></script>
|
||||
<script type="text/javascript" src="/themes/beta/js/script.js?u=2025011001"></script>
|
||||
<script type="text/javascript">
|
||||
var server_timestamp = 1739994754;
|
||||
var client_timestamp = ((new Date()).getTime())/1000;
|
||||
var server_timestamp_delta = server_timestamp - client_timestamp;
|
||||
var sfw_cookie_name = 'sfw';
|
||||
var news_cookie_name = 'n';
|
||||
|
||||
|
||||
|
||||
|
||||
var adData = {"sizeConfig":[{"labels":["desktopWide"],"mediaQuery":"(min-width: 1065px)","sizesSupported":[[728,90],[300,250],[300,168],[300,600],[160,600]]},{"labels":["desktopNarrow"],"mediaQuery":"(min-width: 720px) and (max-width: 1064px)","sizesSupported":[[728,90],[300,250],[300,168]]},{"labels":["mobile"],"mediaQuery":"(min-width: 0px) and (max-width: 719px)","sizesSupported":[[320,50],[300,50],[320,100]]}],"slotConfig":{"header_middle":{"containerSize":{"desktopWide":[728,100],"desktopNarrow":[728,100],"mobile":[320,100]},"providerPriority":["inhouse"]},"above_content":{"containerSize":{"desktopWide":[728,100],"desktopNarrow":[728,100],"mobile":[320,100]},"providerPriority":["inhouse"]},"sidebar":{"containerSize":{"desktopWide":[300,250]},"providerPriority":["inhouse"]},"sidebar_tall":{"containerSize":{"desktopWide":[300,600]},"providerPriority":["inhouse"]},"footer_left":{"containerSize":{"desktopWide":[300,200],"desktopNarrow":[300,200],"mobile":[300,200]},"providerPriority":["inhouse"]},"footer_right_top":{"containerSize":{"desktopWide":[300,90],"desktopNarrow":[300,90],"mobile":[300,90]},"providerPriority":["inhouse"]},"footer_right_bottom":{"containerSize":{"desktopWide":[300,90],"desktopNarrow":[300,90],"mobile":[300,90]},"providerPriority":["inhouse"]},"header_right_left":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]},"header_right_right":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]},"sidebar_top":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]},"sidebar_bottom":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]}},"providerConfig":{"inhouse":{"domain":"https:\/\/rv.furaffinity.net","dataPath":"\/live\/www\/delivery\/spc.php","dataVariableName":"OA_output"}},"adConfig":{"inhouse":{"header_middle":{"default":{"tagId":11,"tagSize":[728,90]},"sizeOverride":{"mobile":{"tagId":19,"tagSize":[300,90]}}},"above_content":{"default":{"tagId":15,"tagSize":[728,90]},"sizeOverride":{"mobile":{"tagId":17,"tagSize":[300,90]}}},"sidebar":{"default":{"tagId":13,"tagSize":[300,250]}},"sidebar_tall":{"default":{"tagId":13,"tagSize":[300,250]}},"footer_left":{"default":{"tagId":10,"tagSize":[300,200]}},"footer_right_top":{"default":{"tagId":5,"tagSize":[300,90]}},"footer_right_bottom":{"default":{"tagId":6,"tagSize":[300,90]}},"header_right_left":{"default":{"tagId":2,"tagSize":[300,90]}},"header_right_right":{"default":{"tagId":4,"tagSize":[300,90]}},"sidebar_top":{"default":{"tagId":2,"tagSize":[300,90]}},"sidebar_bottom":{"default":{"tagId":4,"tagSize":[300,90]}}}}};
|
||||
window.fad = new adManager(adData.sizeConfig, adData.slotConfig, adData.providerConfig, adData.adConfig, 1);
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function() {
|
||||
var ddmenuOptions = {
|
||||
menuId: "ddmenu",
|
||||
linkIdToMenuHtml: null,
|
||||
open: "onmouseover", // or "onclick"
|
||||
delay: 1,
|
||||
speed: 1,
|
||||
keysNav: true,
|
||||
license: "2c1f72"
|
||||
};
|
||||
var ddmenu = new Ddmenu(ddmenuOptions);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
<!---
|
||||
|\ /|
|
||||
/_^ ^_\
|
||||
\v/
|
||||
|
||||
The fox goes "moo!"
|
||||
--->
|
||||
|
||||
</html>
|
||||
730
test/fixtures/files/domain/fa/gallery/folder_hazbin_hellvua_1510162_page_1_pcraxkers.html
vendored
Normal file
730
test/fixtures/files/domain/fa/gallery/folder_hazbin_hellvua_1510162_page_1_pcraxkers.html
vendored
Normal file
@@ -0,0 +1,730 @@
|
||||
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html lang="en" class="no-js" xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<title>Artwork Gallery for PCraxkers -- Fur Affinity [dot] net</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="description" content="Fur Affinity | For all things fluff, scaled, and feathered!" />
|
||||
<meta name="keywords" content="fur furry furries fursuit fursuits cosplay brony bronies zootopia scalies kemono anthro anthropormophic art online gallery portfolio" />
|
||||
<meta name="distribution" content="global" />
|
||||
<meta name="copyright" content="Frost Dragon Art LLC" />
|
||||
<meta name="robots" content="noai, noimageai" />
|
||||
|
||||
<link rel="icon" href="/themes/beta/img/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="/themes/beta/img/favicon.ico" type="image/x-icon" />
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet">
|
||||
|
||||
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=EDGE" />
|
||||
|
||||
|
||||
<!-- generic -->
|
||||
<meta name="robots" content="noindex" />
|
||||
|
||||
<!-- og -->
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="Artwork Gallery for PCraxkers -- Fur Affinity [dot] net" />
|
||||
<meta property="og:url" content="https://www.furaffinity.net/gallery/pcraxkers/" />
|
||||
<meta property="og:description" content="Australian Animator/artist ·Male · . . A place where I post my shame . . ╰━━━━━( ✦ )━━━━━╯" />
|
||||
<meta property="og:image" content="https://www.furaffinity.net/themes/beta/img/banners/fa_logo.png?v2" />
|
||||
|
||||
<!-- twitter -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:domain" content="furaffinity.net" />
|
||||
<meta name="twitter:site" content="@furaffinity" />
|
||||
<meta name="twitter:title" content="Artwork Gallery for PCraxkers -- Fur Affinity [dot] net" />
|
||||
<meta name="twitter:description" content="Australian Animator/artist ·Male · . . A place where I post my shame . . ╰━━━━━( ✦ )━━━━━╯" />
|
||||
<meta name="twitter:url" content="https://www.furaffinity.net/gallery/pcraxkers/" />
|
||||
<meta name="twitter:image" content="https://www.furaffinity.net/themes/beta/img/banners/fa_logo.png?v2" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var _faurl={d:'//d.furaffinity.net',a:'//a.furaffinity.net',r:'//rv.furaffinity.net',t:'//t.furaffinity.net',pb:'/themes/beta/js/prebid-7.54.5-fa.js'};
|
||||
</script>
|
||||
<script type="text/javascript" src="/themes/beta/js/common.js?u=2025011001"></script>
|
||||
<link type="text/css" rel="stylesheet" href="/themes/beta/css/ui_theme_dark.css?u=2025011001" />
|
||||
|
||||
<!-- browser hints -->
|
||||
<link rel="preconnect" href="//t.furaffinity.net" />
|
||||
<link rel="preconnect" href="//a.furaffinity.net" />
|
||||
<link rel="preconnect" href="//rv.furaffinity.net" />
|
||||
<link rel="preconnect" href="https://www15.smartadserver.com" />
|
||||
|
||||
<link rel="preload" href="/themes/beta/js/prototype.1.7.3.min.js" as="script" />
|
||||
<link rel="preload" href="/themes/beta/js/script.js?u=2025011001" as="script" />
|
||||
|
||||
</head>
|
||||
|
||||
<!-- EU request: no -->
|
||||
<body id="pageid-gallery" data-static-path="/themes/beta" data-user-logged-in="1" data-tag-blocklist="" data-tag-blocklist-hide-tagless="0" data-tag-blocklist-nonce="d7890b2d46020491ba77ee39193009a899012433">
|
||||
<script type="text/javascript">
|
||||
0; // attempted fix for fouc in ff
|
||||
</script>
|
||||
|
||||
|
||||
<!-- sidebar -->
|
||||
<div class="mobile-navigation">
|
||||
|
||||
<div class="mobile-nav-container">
|
||||
|
||||
<div class="mobile-nav-container-item left">
|
||||
<label for="mobile-menu-nav" class="css-menu-toggle only-one"><img class="burger-menu" src="/themes/beta/img/fa-burger-menu-icon.png"></label>
|
||||
</div>
|
||||
|
||||
<div class="mobile-nav-container-item center"><a class="mobile-nav-logo" href="/"><img class="site-logo" src="/themes/beta/img/banners/fa_logo.png?v2"></a></div>
|
||||
|
||||
<div class="mobile-nav-container-item right">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="nav-ac-container">
|
||||
<input id="mobile-menu-nav" name="accordion-1" type="checkbox" />
|
||||
<article class="nav-ac-content mobile-menu">
|
||||
|
||||
<div class="mobile-nav-content-container">
|
||||
<div class="aligncenter">
|
||||
<a href="/user/zzreg/"><img class="loggedin_user_avatar avatar" alt="zzreg" src="//a.furaffinity.net/1424255659/zzreg.gif"/></a>
|
||||
<h2 style="margin-bottom:0"><a href="/user/zzreg/">zzreg</a></h2>
|
||||
<a href="/user/zzreg/">Userpage</a> |
|
||||
<a href="/msg/pms/">Notes</a> |
|
||||
<a href="/controls/journal/">Journals</a> |
|
||||
<a href="/plus/"><img style="position:relative;top:4px" src="/themes/beta/img/the-golden-pawb.png"> FA+</a> |
|
||||
<a href="https://shop.furaffinity.net" target="_blank"><img style="position:relative;top:3px" src="/themes/beta/img/icons/merch_store_icon.png"> Shop</a>
|
||||
<br>
|
||||
</div>
|
||||
<hr>
|
||||
<h2><a href="/browse/">Browse</a></h2>
|
||||
<h2><a href="/search/">Search</a></h2>
|
||||
<h2><a href="/submit/">Upload</a></h2>
|
||||
|
||||
<div class="nav-ac-container">
|
||||
<label for="mobile-menu-submenu-0"><h2 style="margin-top:0;padding-top:0">Support ▼</h2></label>
|
||||
<input id="mobile-menu-submenu-0" name="accordion-1" type="checkbox" />
|
||||
<article class="nav-ac-content nav-ac-content-dropdown">
|
||||
<a href="/journals/fender">News & Updates</a><br>
|
||||
<a href="/help/">Help & Support</a><br>
|
||||
<a href="/advertising.html">Advertising</a><br>
|
||||
<a href="/blm">Black Lives Matter</a>
|
||||
|
||||
<h3>SUPPORT FA</h3>
|
||||
<a href="/plus/">Subscribe to FA+ </a><br>
|
||||
<a href="https://shop.furaffinity.net/" target="_blank">FA Merch Store</a>
|
||||
|
||||
|
||||
<h3>RULES & POLICIES</h3>
|
||||
<a href="/tos">Terms of Service</a><br>
|
||||
<a href="/privacy">Privacy</a><br>
|
||||
<a href="/coc">Code of Conduct</a><br>
|
||||
<a href="/aup">Upload Policy</a>
|
||||
|
||||
<h3>SOCIAL</h3>
|
||||
<a href="https://discord.gg/furaffinity">Discord</a><br>
|
||||
<a href="https://www.twitter.com/furaffinity/">Twitter</a>
|
||||
|
||||
<h3>Support</h3>
|
||||
<a href="/controls/troubletickets/">REPORT A PROBLEM</a>
|
||||
</article>
|
||||
</div>
|
||||
<div class="mobile-sfw-toggle">
|
||||
<h2>SFW Mode</h2>
|
||||
|
||||
<div class="sfw-toggle type-slider slider-button-wrapper">
|
||||
<input type="checkbox" id="sfw-toggle-mobile" class="slider-toggle" />
|
||||
<label class="slider-viewport" for="sfw-toggle-mobile">
|
||||
<div class="slider">
|
||||
<div class="slider-button"> </div>
|
||||
<div class="slider-content left"><span>SFW</span></div>
|
||||
<div class="slider-content right"><span>NSFW</span></div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-ac-container">
|
||||
<label for="mobile-menu-submenu-1"><h2 style="margin-top:0;padding-top:0">Settings ▼</h2></label>
|
||||
<input id="mobile-menu-submenu-1" name="accordion-1" type="checkbox" />
|
||||
<article class="nav-ac-content nav-ac-content-dropdown">
|
||||
<h3>ACCOUNT INFORMATION</h3>
|
||||
<a href="/controls/settings/">Account Settings</a><br>
|
||||
<a href="/controls/site-settings/">Global Site Settings</a><br>
|
||||
<a href="/controls/user-settings/">User Settings</a>
|
||||
|
||||
<h3>CUSTOMIZE USER PROFILE</h3>
|
||||
<a href="/controls/profile/">Profile Info</a><br>
|
||||
<a href="/controls/profilebanner/">Profile Banner</a><br>
|
||||
<a href="/controls/contacts/">Contacts and Social Media</a><br>
|
||||
<a href="/controls/avatar/">Avatar Management</a>
|
||||
|
||||
<h3>MANAGE MY CONTENT</h3>
|
||||
<a href="/controls/submissions/">Submissions</a><br>
|
||||
<a href="/controls/folders/submissions/">Folders</a><br>
|
||||
<a href="/controls/journal/">Journals</a><br>
|
||||
<a href="/controls/favorites/">Favorites</a><br>
|
||||
<a href="/controls/buddylist/">Watches</a><br>
|
||||
<a href="/controls/shouts/">Shouts</a><br>
|
||||
<a href="/controls/badges/">Badges</a>
|
||||
|
||||
<h3>SECURITY</h3>
|
||||
<a href="/controls/sessions/logins/">Active Sessions</a><br>
|
||||
<a href="/controls/sessions/logs/">Activity Log</a><br>
|
||||
<a href="/controls/sessions/labels/">Browser Labels</a>
|
||||
</article>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
<h2><form class="post-btn logout-link" method="post" action="/logout/"><button type="submit">Log Out</button><input type="hidden" name="key" value="86700f9e03ccdf5b667e25b4b13573c6f3c73878"/></form>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_logout_button', '.logout-link button']);
|
||||
</script>
|
||||
</h2>
|
||||
|
||||
|
||||
<h2></h2>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mobile-notification-bar">
|
||||
<a class="notification-container inline" href="/msg/submissions/" title="86,664 Submission Notifications">86664S</a>
|
||||
<a class="notification-container inline" href="/msg/others/#journals" title="17,902 Journal Notifications">17902J</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<nav id="ddmenu">
|
||||
<div class="mobile-nav navhideondesktop hideonmobile hideontablet">
|
||||
<div class="mobile-nav-logo"><a class="mobile-nav-logo" href="/"><img src="/themes/beta/img/banners/fa_logo.png?v2"></a></div>
|
||||
<div class="mobile-nav-header-item"><a href="/browse/">Browse</a></div>
|
||||
<div class="mobile-nav-header-item"><a href="/search/">Search</a></div>
|
||||
</div>
|
||||
|
||||
<div class="menu-icon"></div>
|
||||
|
||||
<ul class="navhideonmobile">
|
||||
<li class="lileft"><div class="lileft hideonmobile" style="vertical-align:middle;line-height:0 !important" ><a class="top-heading" href="/"><img class="nav-bar-logo" src="/themes/beta/img/banners/fa_logo.png?v2"></a></div></li>
|
||||
<li class="lileft"><a class="top-heading" href="/browse/"><div class="sprite-paw menu-space-saver hideonmobile"></div>Browse</a></li>
|
||||
<li class="lileft"><a class="top-heading hideondesktop" href="/search/">Search</a></li>
|
||||
<li class="lileft"><a class="top-heading" href="/submit/"><div class="sprite-upload menu-space-saver hideonmobile"></div> Upload</a></li>
|
||||
<li class="lileft">
|
||||
<a class="top-heading" href="#"><div class="sprite-news menu-space-saver hideonmobile"></div>Support</a>
|
||||
<i class="caret"></i>
|
||||
<div class="dropdown dropdown-left ">
|
||||
<div class="dd-inner">
|
||||
<div class="column">
|
||||
<h3>Community</h3>
|
||||
<a href="/journals/fender">News & Updates</a>
|
||||
<a href="/help/">Help & Support</a>
|
||||
<a href="/advertising.html">Advertising</a>
|
||||
<a href="/blm/">Black Lives Matter</a>
|
||||
|
||||
<h3>Rules & Policies</h3>
|
||||
<a href="/tos">Terms of Service</a>
|
||||
<a href="/privacy">Privacy</a>
|
||||
<a href="/coc">Code of Conduct</a>
|
||||
<a href="/aup">Upload Policy</a>
|
||||
|
||||
<h3>Social</h3>
|
||||
<a href="https://discord.gg/furaffinity">Discord</a>
|
||||
<a href="https://www.twitter.com/furaffinity/">Twitter</a>
|
||||
|
||||
<h3>Trouble Tickets</h3>
|
||||
<a href="/controls/troubletickets/">Report a Problem</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="lileft"><a class="top-heading" href="/plus/" title="FA+"><img style="position:relative;top:3px" src="/themes/beta/img/the-golden-pawb.png"><span class="hidebrowselowres"> FA+</span></a></li>
|
||||
<li class="lileft"><a class="top-heading" href="https://shop.furaffinity.net" title="Shop" target="_blank"><img style="position:relative;top:3px" src="/themes/beta/img/icons/merch_store_icon.png"><span class="hidebrowselowres"> Shop</span></a></li>
|
||||
|
||||
<div class="lileft hideonmobile">
|
||||
<form id="searchbox" method="get" action="/search/">
|
||||
<input type="search" name="q" placeholder="SEARCH">
|
||||
<a href="/search"> </a>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="message-bar-desktop">
|
||||
|
||||
<a class="notification-container inline" href="/msg/submissions/" title="86,664 Submission Notifications">86664S</a>
|
||||
<a class="notification-container inline" href="/msg/others/#journals" title="17,902 Journal Notifications">17902J</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="floatleft hideonmobile">
|
||||
<a href="/user/zzreg"><img class="loggedin_user_avatar menubar-icon-resize avatar" style="cursor:pointer" alt="zzreg" src="//a.furaffinity.net/1424255659/zzreg.gif"/></a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="submenu-trigger">
|
||||
<div class="floatleft hideonmobile">
|
||||
<svg class="avatar-submenu-trigger banner-svg" xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 24 24"><path d="M4 6h16v2H4zm0 5h16v2H4zm0 5h16v2H4z"></path></svg>
|
||||
</div>
|
||||
<a id="my-username" class="top-heading hideondesktop" href="#"><span class="hideondesktop">My FA ( </span>zzreg<span class="hideondesktop"> )</span></a>
|
||||
|
||||
<div class="dropdown dropdown-right">
|
||||
<div class="dd-inner">
|
||||
<div class="column">
|
||||
<h3>Account</h3>
|
||||
<a href="/user/zzreg/">My Userpage</a>
|
||||
<a href="/msg/pms/">Check My Notes</a>
|
||||
<a href="/controls/journal/">Create a Journal</a>
|
||||
<a href="/commissions/zzreg/">My Commission Info</a>
|
||||
|
||||
<h3>Support Fur Affinity</h3>
|
||||
<a href="/plus/">Subscribe to FA+ </a>
|
||||
<a href="https://shop.furaffinity.net/" target="_blank">Merch Store</a>
|
||||
|
||||
<h3>Trouble Tickets</h3>
|
||||
<a href="/controls/troubletickets/">Report a Problem</a>
|
||||
|
||||
<div class="mobile-sfw-toggle">
|
||||
<h3 class="padding-top:10px">Toggle SFW</h3>
|
||||
|
||||
<div class="sfw-toggle type-slider slider-button-wrapper" style="position:relative;top:5px">
|
||||
<input type="checkbox" id="sfw-toggle-mobile" class="slider-toggle" />
|
||||
<label class="slider-viewport" for="sfw-toggle-mobile">
|
||||
<div class="slider">
|
||||
<div class="slider-button"> </div>
|
||||
<div class="slider-content left"><span>SFW</span></div>
|
||||
<div class="slider-content right"><span>NSFW</span></div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<form class="post-btn logout-link" method="post" action="/logout/"><button type="submit">Log Out</button><input type="hidden" name="key" value="86700f9e03ccdf5b667e25b4b13573c6f3c73878"/></form>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_logout_button', '.logout-link button']);
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="submenu-trigger">
|
||||
<a class="top-heading" href="#"><svg class="banner-svg" xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 24 24" style="transform: ;msFilter:;"><path d="M12 16c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4zm0-6c1.084 0 2 .916 2 2s-.916 2-2 2-2-.916-2-2 .916-2 2-2z"></path><path d="m2.845 16.136 1 1.73c.531.917 1.809 1.261 2.73.73l.529-.306A8.1 8.1 0 0 0 9 19.402V20c0 1.103.897 2 2 2h2c1.103 0 2-.897 2-2v-.598a8.132 8.132 0 0 0 1.896-1.111l.529.306c.923.53 2.198.188 2.731-.731l.999-1.729a2.001 2.001 0 0 0-.731-2.732l-.505-.292a7.718 7.718 0 0 0 0-2.224l.505-.292a2.002 2.002 0 0 0 .731-2.732l-.999-1.729c-.531-.92-1.808-1.265-2.731-.732l-.529.306A8.1 8.1 0 0 0 15 4.598V4c0-1.103-.897-2-2-2h-2c-1.103 0-2 .897-2 2v.598a8.132 8.132 0 0 0-1.896 1.111l-.529-.306c-.924-.531-2.2-.187-2.731.732l-.999 1.729a2.001 2.001 0 0 0 .731 2.732l.505.292a7.683 7.683 0 0 0 0 2.223l-.505.292a2.003 2.003 0 0 0-.731 2.733zm3.326-2.758A5.703 5.703 0 0 1 6 12c0-.462.058-.926.17-1.378a.999.999 0 0 0-.47-1.108l-1.123-.65.998-1.729 1.145.662a.997.997 0 0 0 1.188-.142 6.071 6.071 0 0 1 2.384-1.399A1 1 0 0 0 11 5.3V4h2v1.3a1 1 0 0 0 .708.956 6.083 6.083 0 0 1 2.384 1.399.999.999 0 0 0 1.188.142l1.144-.661 1 1.729-1.124.649a1 1 0 0 0-.47 1.108c.112.452.17.916.17 1.378 0 .461-.058.925-.171 1.378a1 1 0 0 0 .471 1.108l1.123.649-.998 1.729-1.145-.661a.996.996 0 0 0-1.188.142 6.071 6.071 0 0 1-2.384 1.399A1 1 0 0 0 13 18.7l.002 1.3H11v-1.3a1 1 0 0 0-.708-.956 6.083 6.083 0 0 1-2.384-1.399.992.992 0 0 0-1.188-.141l-1.144.662-1-1.729 1.124-.651a1 1 0 0 0 .471-1.108z"></path></svg></a>
|
||||
<div class="dropdown dropdown-right">
|
||||
<div class="dd-inner">
|
||||
<div class="column">
|
||||
<h3>Account Information</h3>
|
||||
<a href="/controls/settings/">Account Settings</a>
|
||||
<a href="/controls/site-settings/">Global Site Settings</a>
|
||||
<a href="/controls/user-settings/">User Settings</a>
|
||||
|
||||
<h3>Customize User Profile</h3>
|
||||
<a href="/controls/profile/">Profile Info</a>
|
||||
<a href="/controls/profilebanner/">Profile Banner</a>
|
||||
<a href="/controls/contacts/">Contacts & Social Media</a>
|
||||
<a href="/controls/avatar/">Avatar Management</a>
|
||||
|
||||
<h3>Manage My Content</h3>
|
||||
<a href="/controls/submissions/">Submissions</a>
|
||||
<a href="/controls/folders/submissions/">Folders</a>
|
||||
<a href="/controls/journal/">Journals</a>
|
||||
<a href="/controls/favorites/">Favorites</a>
|
||||
<a href="/controls/buddylist/">Watches</a>
|
||||
<a href="/controls/shouts/">Shouts</a>
|
||||
<a href="/controls/badges/">Badges</a>
|
||||
|
||||
<h3>Security</h3>
|
||||
<a href="/controls/sessions/logins/">Active Sessions</a>
|
||||
<a href="/controls/sessions/logs/">Activity Log</a>
|
||||
<a href="/controls/sessions/labels/">Browser Labels</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_sfw_button', '.sfw-toggle']);
|
||||
</script>
|
||||
</nav>
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function(){
|
||||
// all menus that should be opened only one at a time
|
||||
$$('.css-menu-toggle.only-one').invoke('observe', 'click', function(evt) {
|
||||
var curr_input = $(evt.findElement('label').getAttribute('for'));
|
||||
curr_input.next('.nav-ac-content').removeClassName('no-transition');
|
||||
if(curr_input.checked === false) {
|
||||
$$('.css-menu-toggle.only-one').each(function(elm){
|
||||
var elm_input = $(elm.getAttribute('for'));
|
||||
if(elm_input.checked === true) {
|
||||
elm_input.next('.nav-ac-content').addClassName('no-transition');
|
||||
elm_input.checked = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="news-block">
|
||||
|
||||
<div id="admin_notice_do_not_adblock2" class="newsBlock">
|
||||
<!--strong>Notice:</strong><span class="hideondesktop hideontablet"><br></span-->
|
||||
<a href="https://gofund.me/0a0b27ba">Support Fur Affinity: Honoring Dragoneer's Legacy. https://gofund.me/0a0b27ba</a></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="main-window" class="footer-mobile-tweak g-wrapper">
|
||||
<div id="header" class="has-adminmessage">
|
||||
|
||||
<!-- user profile banner -->
|
||||
|
||||
<site-banner>
|
||||
<a href="/">
|
||||
<picture>
|
||||
<source media="(max-width: 799px)" srcset="//d.furaffinity.net/art/pcraxkers/1670070754/profile_banner_mobile.jpg">
|
||||
<source media="(min-width: 800px)" srcset="//d.furaffinity.net/art/pcraxkers/1670070754/profile_banner.jpg">
|
||||
<img src="//d.furaffinity.net/art/pcraxkers/1670070754/profile_banner.jpg" alt="Profile Banner image">
|
||||
</picture>
|
||||
</a>
|
||||
</site-banner>
|
||||
|
||||
<a name="top"></a>
|
||||
</div>
|
||||
|
||||
<div id="site-content">
|
||||
|
||||
<!-- /header -->
|
||||
|
||||
|
||||
<userpage-nav-header>
|
||||
|
||||
<userpage-nav-avatar>
|
||||
<a class="current" href="/user/pcraxkers/"><img alt="pcraxkers" src="//a.furaffinity.net/1674032155/pcraxkers.gif"/></a>
|
||||
</userpage-nav-avatar>
|
||||
|
||||
<userpage-nav-user-details>
|
||||
<h1><username>
|
||||
~PCraxkers
|
||||
</username></h1>
|
||||
|
||||
<div class="font-small">
|
||||
<username class="user-title">
|
||||
<span class="hideonmobile">Registered:</span> Jul 16, 2021 06:31 </username>
|
||||
</div>
|
||||
</userpage-nav-user-details>
|
||||
|
||||
|
||||
<userpage-nav-interface-buttons>
|
||||
<a class="button standard stop" href="/unwatch/pcraxkers/?key=e7092dc7833fd3e83f6e0b972bf4044234de6127">-Watch</a>
|
||||
<a class="button standard" href="/newpm/pcraxkers/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" style="transform: ;msFilter:;"><path d="M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm0 2v.511l-8 6.223-8-6.222V6h16zM4 18V9.044l7.386 5.745a.994.994 0 0 0 1.228 0L20 9.044 20.002 18H4z"></path></svg></a>
|
||||
|
||||
</userpage-nav-interface-buttons>
|
||||
|
||||
<userpage-nav-links>
|
||||
<ul style="display:flex">
|
||||
<li><h3><a href="/user/pcraxkers/">Home</a></h3></li>
|
||||
<li><h3><a class="current" href="/gallery/pcraxkers/">Gallery</a></h3></li>
|
||||
<li><h3><a href="/scraps/pcraxkers/">Scraps</a></h3></li>
|
||||
<li><h3><a href="/favorites/pcraxkers/">Favs</a></h3></li>
|
||||
<li><h3><a href="/journals/pcraxkers/">Journals</a></h3></li>
|
||||
|
||||
</ul>
|
||||
</userpage-nav-links>
|
||||
|
||||
</userpage-nav-header>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="clear"></div>
|
||||
<!--- /USER NAV --->
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function(){
|
||||
$$('#jsBlockUnblockButton').invoke('observe', 'click', function(evt){
|
||||
var message = 'Are you sure you want to ' + (evt.findElement('a').href.indexOf('/unblock') != -1 ? 'unblock' : 'block') + ' this user?';
|
||||
if (!confirm(message)) {
|
||||
evt.stop();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="page-galleryscraps">
|
||||
<div id="columnpage">
|
||||
<div class="sidebar">
|
||||
|
||||
<div class="folder-list">
|
||||
<div class="user-folders">
|
||||
<div class="container-item-top">
|
||||
<h4>Gallery Folders</h4>
|
||||
</div>
|
||||
<div class="default-folders">
|
||||
<ul style="list-style-type:none">
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/" class="dotted">Main Gallery</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/scraps/pcraxkers/" class="dotted">Scraps</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<ul class="default-group" style="list-style-type:none">
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/folder/1400495/KNOT-ME-OUT-COMIC" title="11 submissions" class="dotted">KNOT ME OUT - COMIC</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/folder/1505828/Hazbin-Hellvua" title="2 submissions" class="dotted">Hazbin/Hellvua</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/folder/1505829/Pablo" title="18 submissions" class="dotted">Pablo</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
❯❯ <strong title="1 submissions">Hazbin/Hellvua</strong>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="rectangleAd">
|
||||
<div data-id="sidebar" class="rectangleAd__slot format--mediumRectangle jsAdSlot"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
|
||||
|
||||
<div class="leaderboardAd">
|
||||
<div data-id="header_middle" class="leaderboardAd__slot format--leaderboard jsAdSlot"></div>
|
||||
</div>
|
||||
|
||||
<section class="gallery-section">
|
||||
<div class="section-body">
|
||||
<div class="submission-list">
|
||||
<div class="folder-description" style="width:100% !important">
|
||||
<div class="container-item-top">
|
||||
<h3>Hazbin/Hellvua</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="gallery-navigation aligncenter">
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="navigation-page-name inline" style="width:32%;">
|
||||
Page #1 </div>
|
||||
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
<!--button class="button standard" type="button">Next</button-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section id="gallery-gallery" class="gallery no-padding aligncenter no-artistname s-200 ">
|
||||
<figure id="sid-59893254" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/59893254/">
|
||||
<img data-tags="hazbin_hotel hazbin radioapple pussy alastor lucifer" class="blocked-content" alt="" src="//t.furaffinity.net/59893254@300-1739634205.jpg" data-width="210.802" data-height="200" style="width:210.802px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/59893254/" title="Request - RadioApple (Bottom Alastor)">Request - RadioApple (Bottom Alastor)</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</section>
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_gallery', 'gallery-gallery']);
|
||||
</script>
|
||||
|
||||
<div class="gallery-navigation aligncenter">
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="inline" style="width:32%">
|
||||
<div class="mobile-button">
|
||||
<button type="button" class="button standard toggle_titles">Disable Titles</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
<!--button class="button standard" type="button">Next</button-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var descriptions = {"59893254":{"title":"Request - RadioApple (Bottom Alastor)","description":"Request Box: https:\/\/koddy5555.wixsite.com\/artrequests","username":"PCraxkers","lower":"pcraxkers"}};
|
||||
</script>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- /<div id="site-content"> -->
|
||||
|
||||
<div id="footer">
|
||||
<div class="auto_link footer-links">
|
||||
<span class="hideonmobile">
|
||||
<a href="/advertising">Advertise</a> |
|
||||
<a href="/plus"><img style="position:relative;top:4px" src="/themes/beta/img/the-golden-pawb.png"> Get FA+</a> |
|
||||
<a href="https://shop.furaffinity.net/"><img style="position:relative;top:4px" src="/themes/beta/img/icons/merch_store_icon.png"> Merch Store</a> |
|
||||
<a href="/tos">Terms of Service</a> |
|
||||
<a href="/privacy">Privacy</a> |
|
||||
<a href="/coc">Code of Conduct</a> |
|
||||
<a href="/aup">Upload Policy</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footerAds">
|
||||
<div class="footerAds__column">
|
||||
<div class="footerAds__slot format--faMediumRectangle jsAdSlot" data-id="footer_left"></div>
|
||||
</div>
|
||||
|
||||
<div class="footerAds__column">
|
||||
<div class="footerAds__slot footerAds__slot--faLogo">
|
||||
<img src="/themes/beta/img/banners/fa_logo.png?v2">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footerAds__column">
|
||||
<div class="footerAds__slot format--faSmallRectangle jsAdSlot" data-id="footer_right_top"></div>
|
||||
<div class="footerAds__slot format--faSmallRectangle jsAdSlot" data-id="footer_right_bottom"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="online-stats">
|
||||
91924 <strong><span title="Measured in the last 900 seconds">Users online</span></strong> —
|
||||
5249 <strong>guests</strong>,
|
||||
15710 <strong>registered</strong>
|
||||
and 70965 <strong>other</strong>
|
||||
<!-- Online Counter Last Update: Wed, 19 Feb 2025 11:52:00 -0800 -->
|
||||
</div>
|
||||
<small>Limit bot activity to periods with less than 10k registered users online.</small>
|
||||
|
||||
<br><br>
|
||||
<strong>© 2005-2025 Frost Dragon Art LLC</strong>
|
||||
|
||||
<div class="footnote">
|
||||
Server Time: Feb 19, 2025 11:52 AM </div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="cookie-notification" class="default-hidden">
|
||||
<div class="text-container">This website uses cookies to enhance your browsing experience. <a href="/privacy" target="_blank">Learn More</a></div>
|
||||
<div class="button-container"><button class="accept">I Consent</button></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function(){
|
||||
$$('#cookie-notification button').invoke('observe', 'click', function() {
|
||||
setCookie('cc', 1, expiryyear, '/');
|
||||
$('cookie-notification').addClassName('default-hidden');
|
||||
});
|
||||
$('cookie-notification').removeClassName('default-hidden');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- <div id="main-window"> -->
|
||||
|
||||
<!--
|
||||
Server Local Time: Feb 19, 2025 11:52 AM <br />
|
||||
Page generated in 0.014 seconds [ 21.5% PHP, 78.5% SQL ] (25 queries) -->
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function() {
|
||||
var exists = getCookie('sz');
|
||||
var saved = save_viewport_size();
|
||||
if((!exists && saved) || (exists && saved && exists != saved)) {
|
||||
//window.location.reload();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="/themes/beta/js/censor.js?u=2025011001"></script>
|
||||
|
||||
<script type="text/javascript" src="/themes/beta/js/prototype.1.7.3.min.js"></script>
|
||||
<script type="text/javascript" src="/themes/beta/js/script.js?u=2025011001"></script>
|
||||
<script type="text/javascript">
|
||||
var server_timestamp = 1739994759;
|
||||
var client_timestamp = ((new Date()).getTime())/1000;
|
||||
var server_timestamp_delta = server_timestamp - client_timestamp;
|
||||
var sfw_cookie_name = 'sfw';
|
||||
var news_cookie_name = 'n';
|
||||
|
||||
|
||||
|
||||
|
||||
var adData = {"sizeConfig":[{"labels":["desktopWide"],"mediaQuery":"(min-width: 1065px)","sizesSupported":[[728,90],[300,250],[300,168],[300,600],[160,600]]},{"labels":["desktopNarrow"],"mediaQuery":"(min-width: 720px) and (max-width: 1064px)","sizesSupported":[[728,90],[300,250],[300,168]]},{"labels":["mobile"],"mediaQuery":"(min-width: 0px) and (max-width: 719px)","sizesSupported":[[320,50],[300,50],[320,100]]}],"slotConfig":{"header_middle":{"containerSize":{"desktopWide":[728,100],"desktopNarrow":[728,100],"mobile":[320,100]},"providerPriority":["inhouse"]},"above_content":{"containerSize":{"desktopWide":[728,100],"desktopNarrow":[728,100],"mobile":[320,100]},"providerPriority":["inhouse"]},"sidebar":{"containerSize":{"desktopWide":[300,250]},"providerPriority":["inhouse"]},"sidebar_tall":{"containerSize":{"desktopWide":[300,600]},"providerPriority":["inhouse"]},"footer_left":{"containerSize":{"desktopWide":[300,200],"desktopNarrow":[300,200],"mobile":[300,200]},"providerPriority":["inhouse"]},"footer_right_top":{"containerSize":{"desktopWide":[300,90],"desktopNarrow":[300,90],"mobile":[300,90]},"providerPriority":["inhouse"]},"footer_right_bottom":{"containerSize":{"desktopWide":[300,90],"desktopNarrow":[300,90],"mobile":[300,90]},"providerPriority":["inhouse"]},"header_right_left":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]},"header_right_right":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]},"sidebar_top":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]},"sidebar_bottom":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]}},"providerConfig":{"inhouse":{"domain":"https:\/\/rv.furaffinity.net","dataPath":"\/live\/www\/delivery\/spc.php","dataVariableName":"OA_output"}},"adConfig":{"inhouse":{"header_middle":{"default":{"tagId":11,"tagSize":[728,90]},"sizeOverride":{"mobile":{"tagId":19,"tagSize":[300,90]}}},"above_content":{"default":{"tagId":15,"tagSize":[728,90]},"sizeOverride":{"mobile":{"tagId":17,"tagSize":[300,90]}}},"sidebar":{"default":{"tagId":13,"tagSize":[300,250]}},"sidebar_tall":{"default":{"tagId":13,"tagSize":[300,250]}},"footer_left":{"default":{"tagId":10,"tagSize":[300,200]}},"footer_right_top":{"default":{"tagId":5,"tagSize":[300,90]}},"footer_right_bottom":{"default":{"tagId":6,"tagSize":[300,90]}},"header_right_left":{"default":{"tagId":2,"tagSize":[300,90]}},"header_right_right":{"default":{"tagId":4,"tagSize":[300,90]}},"sidebar_top":{"default":{"tagId":2,"tagSize":[300,90]}},"sidebar_bottom":{"default":{"tagId":4,"tagSize":[300,90]}}}}};
|
||||
window.fad = new adManager(adData.sizeConfig, adData.slotConfig, adData.providerConfig, adData.adConfig, 1);
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function() {
|
||||
var ddmenuOptions = {
|
||||
menuId: "ddmenu",
|
||||
linkIdToMenuHtml: null,
|
||||
open: "onmouseover", // or "onclick"
|
||||
delay: 1,
|
||||
speed: 1,
|
||||
keysNav: true,
|
||||
license: "2c1f72"
|
||||
};
|
||||
var ddmenu = new Ddmenu(ddmenuOptions);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
<!---
|
||||
|\ /|
|
||||
/_^ ^_\
|
||||
\v/
|
||||
|
||||
The fox goes "moo!"
|
||||
--->
|
||||
|
||||
</html>
|
||||
916
test/fixtures/files/domain/fa/gallery/folder_knot_me_out_comic_page_1_pcraxkers.html
vendored
Normal file
916
test/fixtures/files/domain/fa/gallery/folder_knot_me_out_comic_page_1_pcraxkers.html
vendored
Normal file
@@ -0,0 +1,916 @@
|
||||
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html lang="en" class="no-js" xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<title>Artwork Gallery for PCraxkers -- Fur Affinity [dot] net</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="description" content="Fur Affinity | For all things fluff, scaled, and feathered!" />
|
||||
<meta name="keywords" content="fur furry furries fursuit fursuits cosplay brony bronies zootopia scalies kemono anthro anthropormophic art online gallery portfolio" />
|
||||
<meta name="distribution" content="global" />
|
||||
<meta name="copyright" content="Frost Dragon Art LLC" />
|
||||
<meta name="robots" content="noai, noimageai" />
|
||||
|
||||
<link rel="icon" href="/themes/beta/img/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="/themes/beta/img/favicon.ico" type="image/x-icon" />
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet">
|
||||
|
||||
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=EDGE" />
|
||||
|
||||
|
||||
<!-- generic -->
|
||||
<meta name="robots" content="noindex" />
|
||||
|
||||
<!-- og -->
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="Artwork Gallery for PCraxkers -- Fur Affinity [dot] net" />
|
||||
<meta property="og:url" content="https://www.furaffinity.net/gallery/pcraxkers/" />
|
||||
<meta property="og:description" content="Australian Animator/artist ·Male · . . A place where I post my shame . . ╰━━━━━( ✦ )━━━━━╯" />
|
||||
<meta property="og:image" content="https://t.furaffinity.net/56255183@600-1712970293.jpg" />
|
||||
<meta property="og:image:secure_url" content="https://t.furaffinity.net/56255183@600-1712970293.jpg" />
|
||||
<meta property="og:image:type" content="image/jpeg" />
|
||||
<meta property="og:image:width" content="201" />
|
||||
<meta property="og:image:height" content="600" />
|
||||
|
||||
<!-- twitter -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:domain" content="furaffinity.net" />
|
||||
<meta name="twitter:site" content="@furaffinity" />
|
||||
<meta name="twitter:title" content="Artwork Gallery for PCraxkers -- Fur Affinity [dot] net" />
|
||||
<meta name="twitter:description" content="Australian Animator/artist ·Male · . . A place where I post my shame . . ╰━━━━━( ✦ )━━━━━╯" />
|
||||
<meta name="twitter:url" content="https://www.furaffinity.net/gallery/pcraxkers/" />
|
||||
<meta name="twitter:image" content="https://t.furaffinity.net/56255183@600-1712970293.jpg" />
|
||||
<meta name="twitter:label1" content="Submission Title" />
|
||||
<meta name="twitter:data1" content="“KNOT ME OUT” - Page 2/11" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var _faurl={d:'//d.furaffinity.net',a:'//a.furaffinity.net',r:'//rv.furaffinity.net',t:'//t.furaffinity.net',pb:'/themes/beta/js/prebid-7.54.5-fa.js'};
|
||||
</script>
|
||||
<script type="text/javascript" src="/themes/beta/js/common.js?u=2025011001"></script>
|
||||
<link type="text/css" rel="stylesheet" href="/themes/beta/css/ui_theme_dark.css?u=2025011001" />
|
||||
|
||||
<!-- browser hints -->
|
||||
<link rel="preconnect" href="//t.furaffinity.net" />
|
||||
<link rel="preconnect" href="//a.furaffinity.net" />
|
||||
<link rel="preconnect" href="//rv.furaffinity.net" />
|
||||
<link rel="preconnect" href="https://www15.smartadserver.com" />
|
||||
|
||||
<link rel="preload" href="/themes/beta/js/prototype.1.7.3.min.js" as="script" />
|
||||
<link rel="preload" href="/themes/beta/js/script.js?u=2025011001" as="script" />
|
||||
|
||||
</head>
|
||||
|
||||
<!-- EU request: no -->
|
||||
<body id="pageid-gallery" data-static-path="/themes/beta" data-user-logged-in="1" data-tag-blocklist="" data-tag-blocklist-hide-tagless="0" data-tag-blocklist-nonce="d7890b2d46020491ba77ee39193009a899012433">
|
||||
<script type="text/javascript">
|
||||
0; // attempted fix for fouc in ff
|
||||
</script>
|
||||
|
||||
|
||||
<!-- sidebar -->
|
||||
<div class="mobile-navigation">
|
||||
|
||||
<div class="mobile-nav-container">
|
||||
|
||||
<div class="mobile-nav-container-item left">
|
||||
<label for="mobile-menu-nav" class="css-menu-toggle only-one"><img class="burger-menu" src="/themes/beta/img/fa-burger-menu-icon.png"></label>
|
||||
</div>
|
||||
|
||||
<div class="mobile-nav-container-item center"><a class="mobile-nav-logo" href="/"><img class="site-logo" src="/themes/beta/img/banners/fa_logo.png?v2"></a></div>
|
||||
|
||||
<div class="mobile-nav-container-item right">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="nav-ac-container">
|
||||
<input id="mobile-menu-nav" name="accordion-1" type="checkbox" />
|
||||
<article class="nav-ac-content mobile-menu">
|
||||
|
||||
<div class="mobile-nav-content-container">
|
||||
<div class="aligncenter">
|
||||
<a href="/user/zzreg/"><img class="loggedin_user_avatar avatar" alt="zzreg" src="//a.furaffinity.net/1424255659/zzreg.gif"/></a>
|
||||
<h2 style="margin-bottom:0"><a href="/user/zzreg/">zzreg</a></h2>
|
||||
<a href="/user/zzreg/">Userpage</a> |
|
||||
<a href="/msg/pms/">Notes</a> |
|
||||
<a href="/controls/journal/">Journals</a> |
|
||||
<a href="/plus/"><img style="position:relative;top:4px" src="/themes/beta/img/the-golden-pawb.png"> FA+</a> |
|
||||
<a href="https://shop.furaffinity.net" target="_blank"><img style="position:relative;top:3px" src="/themes/beta/img/icons/merch_store_icon.png"> Shop</a>
|
||||
<br>
|
||||
</div>
|
||||
<hr>
|
||||
<h2><a href="/browse/">Browse</a></h2>
|
||||
<h2><a href="/search/">Search</a></h2>
|
||||
<h2><a href="/submit/">Upload</a></h2>
|
||||
|
||||
<div class="nav-ac-container">
|
||||
<label for="mobile-menu-submenu-0"><h2 style="margin-top:0;padding-top:0">Support ▼</h2></label>
|
||||
<input id="mobile-menu-submenu-0" name="accordion-1" type="checkbox" />
|
||||
<article class="nav-ac-content nav-ac-content-dropdown">
|
||||
<a href="/journals/fender">News & Updates</a><br>
|
||||
<a href="/help/">Help & Support</a><br>
|
||||
<a href="/advertising.html">Advertising</a><br>
|
||||
<a href="/blm">Black Lives Matter</a>
|
||||
|
||||
<h3>SUPPORT FA</h3>
|
||||
<a href="/plus/">Subscribe to FA+ </a><br>
|
||||
<a href="https://shop.furaffinity.net/" target="_blank">FA Merch Store</a>
|
||||
|
||||
|
||||
<h3>RULES & POLICIES</h3>
|
||||
<a href="/tos">Terms of Service</a><br>
|
||||
<a href="/privacy">Privacy</a><br>
|
||||
<a href="/coc">Code of Conduct</a><br>
|
||||
<a href="/aup">Upload Policy</a>
|
||||
|
||||
<h3>SOCIAL</h3>
|
||||
<a href="https://discord.gg/furaffinity">Discord</a><br>
|
||||
<a href="https://www.twitter.com/furaffinity/">Twitter</a>
|
||||
|
||||
<h3>Support</h3>
|
||||
<a href="/controls/troubletickets/">REPORT A PROBLEM</a>
|
||||
</article>
|
||||
</div>
|
||||
<div class="mobile-sfw-toggle">
|
||||
<h2>SFW Mode</h2>
|
||||
|
||||
<div class="sfw-toggle type-slider slider-button-wrapper">
|
||||
<input type="checkbox" id="sfw-toggle-mobile" class="slider-toggle" />
|
||||
<label class="slider-viewport" for="sfw-toggle-mobile">
|
||||
<div class="slider">
|
||||
<div class="slider-button"> </div>
|
||||
<div class="slider-content left"><span>SFW</span></div>
|
||||
<div class="slider-content right"><span>NSFW</span></div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-ac-container">
|
||||
<label for="mobile-menu-submenu-1"><h2 style="margin-top:0;padding-top:0">Settings ▼</h2></label>
|
||||
<input id="mobile-menu-submenu-1" name="accordion-1" type="checkbox" />
|
||||
<article class="nav-ac-content nav-ac-content-dropdown">
|
||||
<h3>ACCOUNT INFORMATION</h3>
|
||||
<a href="/controls/settings/">Account Settings</a><br>
|
||||
<a href="/controls/site-settings/">Global Site Settings</a><br>
|
||||
<a href="/controls/user-settings/">User Settings</a>
|
||||
|
||||
<h3>CUSTOMIZE USER PROFILE</h3>
|
||||
<a href="/controls/profile/">Profile Info</a><br>
|
||||
<a href="/controls/profilebanner/">Profile Banner</a><br>
|
||||
<a href="/controls/contacts/">Contacts and Social Media</a><br>
|
||||
<a href="/controls/avatar/">Avatar Management</a>
|
||||
|
||||
<h3>MANAGE MY CONTENT</h3>
|
||||
<a href="/controls/submissions/">Submissions</a><br>
|
||||
<a href="/controls/folders/submissions/">Folders</a><br>
|
||||
<a href="/controls/journal/">Journals</a><br>
|
||||
<a href="/controls/favorites/">Favorites</a><br>
|
||||
<a href="/controls/buddylist/">Watches</a><br>
|
||||
<a href="/controls/shouts/">Shouts</a><br>
|
||||
<a href="/controls/badges/">Badges</a>
|
||||
|
||||
<h3>SECURITY</h3>
|
||||
<a href="/controls/sessions/logins/">Active Sessions</a><br>
|
||||
<a href="/controls/sessions/logs/">Activity Log</a><br>
|
||||
<a href="/controls/sessions/labels/">Browser Labels</a>
|
||||
</article>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
<h2><form class="post-btn logout-link" method="post" action="/logout/"><button type="submit">Log Out</button><input type="hidden" name="key" value="86700f9e03ccdf5b667e25b4b13573c6f3c73878"/></form>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_logout_button', '.logout-link button']);
|
||||
</script>
|
||||
</h2>
|
||||
|
||||
|
||||
<h2></h2>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mobile-notification-bar">
|
||||
<a class="notification-container inline" href="/msg/submissions/" title="86,664 Submission Notifications">86664S</a>
|
||||
<a class="notification-container inline" href="/msg/others/#journals" title="17,902 Journal Notifications">17902J</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<nav id="ddmenu">
|
||||
<div class="mobile-nav navhideondesktop hideonmobile hideontablet">
|
||||
<div class="mobile-nav-logo"><a class="mobile-nav-logo" href="/"><img src="/themes/beta/img/banners/fa_logo.png?v2"></a></div>
|
||||
<div class="mobile-nav-header-item"><a href="/browse/">Browse</a></div>
|
||||
<div class="mobile-nav-header-item"><a href="/search/">Search</a></div>
|
||||
</div>
|
||||
|
||||
<div class="menu-icon"></div>
|
||||
|
||||
<ul class="navhideonmobile">
|
||||
<li class="lileft"><div class="lileft hideonmobile" style="vertical-align:middle;line-height:0 !important" ><a class="top-heading" href="/"><img class="nav-bar-logo" src="/themes/beta/img/banners/fa_logo.png?v2"></a></div></li>
|
||||
<li class="lileft"><a class="top-heading" href="/browse/"><div class="sprite-paw menu-space-saver hideonmobile"></div>Browse</a></li>
|
||||
<li class="lileft"><a class="top-heading hideondesktop" href="/search/">Search</a></li>
|
||||
<li class="lileft"><a class="top-heading" href="/submit/"><div class="sprite-upload menu-space-saver hideonmobile"></div> Upload</a></li>
|
||||
<li class="lileft">
|
||||
<a class="top-heading" href="#"><div class="sprite-news menu-space-saver hideonmobile"></div>Support</a>
|
||||
<i class="caret"></i>
|
||||
<div class="dropdown dropdown-left ">
|
||||
<div class="dd-inner">
|
||||
<div class="column">
|
||||
<h3>Community</h3>
|
||||
<a href="/journals/fender">News & Updates</a>
|
||||
<a href="/help/">Help & Support</a>
|
||||
<a href="/advertising.html">Advertising</a>
|
||||
<a href="/blm/">Black Lives Matter</a>
|
||||
|
||||
<h3>Rules & Policies</h3>
|
||||
<a href="/tos">Terms of Service</a>
|
||||
<a href="/privacy">Privacy</a>
|
||||
<a href="/coc">Code of Conduct</a>
|
||||
<a href="/aup">Upload Policy</a>
|
||||
|
||||
<h3>Social</h3>
|
||||
<a href="https://discord.gg/furaffinity">Discord</a>
|
||||
<a href="https://www.twitter.com/furaffinity/">Twitter</a>
|
||||
|
||||
<h3>Trouble Tickets</h3>
|
||||
<a href="/controls/troubletickets/">Report a Problem</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="lileft"><a class="top-heading" href="/plus/" title="FA+"><img style="position:relative;top:3px" src="/themes/beta/img/the-golden-pawb.png"><span class="hidebrowselowres"> FA+</span></a></li>
|
||||
<li class="lileft"><a class="top-heading" href="https://shop.furaffinity.net" title="Shop" target="_blank"><img style="position:relative;top:3px" src="/themes/beta/img/icons/merch_store_icon.png"><span class="hidebrowselowres"> Shop</span></a></li>
|
||||
|
||||
<div class="lileft hideonmobile">
|
||||
<form id="searchbox" method="get" action="/search/">
|
||||
<input type="search" name="q" placeholder="SEARCH">
|
||||
<a href="/search"> </a>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="message-bar-desktop">
|
||||
|
||||
<a class="notification-container inline" href="/msg/submissions/" title="86,664 Submission Notifications">86664S</a>
|
||||
<a class="notification-container inline" href="/msg/others/#journals" title="17,902 Journal Notifications">17902J</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="floatleft hideonmobile">
|
||||
<a href="/user/zzreg"><img class="loggedin_user_avatar menubar-icon-resize avatar" style="cursor:pointer" alt="zzreg" src="//a.furaffinity.net/1424255659/zzreg.gif"/></a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="submenu-trigger">
|
||||
<div class="floatleft hideonmobile">
|
||||
<svg class="avatar-submenu-trigger banner-svg" xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 24 24"><path d="M4 6h16v2H4zm0 5h16v2H4zm0 5h16v2H4z"></path></svg>
|
||||
</div>
|
||||
<a id="my-username" class="top-heading hideondesktop" href="#"><span class="hideondesktop">My FA ( </span>zzreg<span class="hideondesktop"> )</span></a>
|
||||
|
||||
<div class="dropdown dropdown-right">
|
||||
<div class="dd-inner">
|
||||
<div class="column">
|
||||
<h3>Account</h3>
|
||||
<a href="/user/zzreg/">My Userpage</a>
|
||||
<a href="/msg/pms/">Check My Notes</a>
|
||||
<a href="/controls/journal/">Create a Journal</a>
|
||||
<a href="/commissions/zzreg/">My Commission Info</a>
|
||||
|
||||
<h3>Support Fur Affinity</h3>
|
||||
<a href="/plus/">Subscribe to FA+ </a>
|
||||
<a href="https://shop.furaffinity.net/" target="_blank">Merch Store</a>
|
||||
|
||||
<h3>Trouble Tickets</h3>
|
||||
<a href="/controls/troubletickets/">Report a Problem</a>
|
||||
|
||||
<div class="mobile-sfw-toggle">
|
||||
<h3 class="padding-top:10px">Toggle SFW</h3>
|
||||
|
||||
<div class="sfw-toggle type-slider slider-button-wrapper" style="position:relative;top:5px">
|
||||
<input type="checkbox" id="sfw-toggle-mobile" class="slider-toggle" />
|
||||
<label class="slider-viewport" for="sfw-toggle-mobile">
|
||||
<div class="slider">
|
||||
<div class="slider-button"> </div>
|
||||
<div class="slider-content left"><span>SFW</span></div>
|
||||
<div class="slider-content right"><span>NSFW</span></div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<form class="post-btn logout-link" method="post" action="/logout/"><button type="submit">Log Out</button><input type="hidden" name="key" value="86700f9e03ccdf5b667e25b4b13573c6f3c73878"/></form>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_logout_button', '.logout-link button']);
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="submenu-trigger">
|
||||
<a class="top-heading" href="#"><svg class="banner-svg" xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 24 24" style="transform: ;msFilter:;"><path d="M12 16c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4zm0-6c1.084 0 2 .916 2 2s-.916 2-2 2-2-.916-2-2 .916-2 2-2z"></path><path d="m2.845 16.136 1 1.73c.531.917 1.809 1.261 2.73.73l.529-.306A8.1 8.1 0 0 0 9 19.402V20c0 1.103.897 2 2 2h2c1.103 0 2-.897 2-2v-.598a8.132 8.132 0 0 0 1.896-1.111l.529.306c.923.53 2.198.188 2.731-.731l.999-1.729a2.001 2.001 0 0 0-.731-2.732l-.505-.292a7.718 7.718 0 0 0 0-2.224l.505-.292a2.002 2.002 0 0 0 .731-2.732l-.999-1.729c-.531-.92-1.808-1.265-2.731-.732l-.529.306A8.1 8.1 0 0 0 15 4.598V4c0-1.103-.897-2-2-2h-2c-1.103 0-2 .897-2 2v.598a8.132 8.132 0 0 0-1.896 1.111l-.529-.306c-.924-.531-2.2-.187-2.731.732l-.999 1.729a2.001 2.001 0 0 0 .731 2.732l.505.292a7.683 7.683 0 0 0 0 2.223l-.505.292a2.003 2.003 0 0 0-.731 2.733zm3.326-2.758A5.703 5.703 0 0 1 6 12c0-.462.058-.926.17-1.378a.999.999 0 0 0-.47-1.108l-1.123-.65.998-1.729 1.145.662a.997.997 0 0 0 1.188-.142 6.071 6.071 0 0 1 2.384-1.399A1 1 0 0 0 11 5.3V4h2v1.3a1 1 0 0 0 .708.956 6.083 6.083 0 0 1 2.384 1.399.999.999 0 0 0 1.188.142l1.144-.661 1 1.729-1.124.649a1 1 0 0 0-.47 1.108c.112.452.17.916.17 1.378 0 .461-.058.925-.171 1.378a1 1 0 0 0 .471 1.108l1.123.649-.998 1.729-1.145-.661a.996.996 0 0 0-1.188.142 6.071 6.071 0 0 1-2.384 1.399A1 1 0 0 0 13 18.7l.002 1.3H11v-1.3a1 1 0 0 0-.708-.956 6.083 6.083 0 0 1-2.384-1.399.992.992 0 0 0-1.188-.141l-1.144.662-1-1.729 1.124-.651a1 1 0 0 0 .471-1.108z"></path></svg></a>
|
||||
<div class="dropdown dropdown-right">
|
||||
<div class="dd-inner">
|
||||
<div class="column">
|
||||
<h3>Account Information</h3>
|
||||
<a href="/controls/settings/">Account Settings</a>
|
||||
<a href="/controls/site-settings/">Global Site Settings</a>
|
||||
<a href="/controls/user-settings/">User Settings</a>
|
||||
|
||||
<h3>Customize User Profile</h3>
|
||||
<a href="/controls/profile/">Profile Info</a>
|
||||
<a href="/controls/profilebanner/">Profile Banner</a>
|
||||
<a href="/controls/contacts/">Contacts & Social Media</a>
|
||||
<a href="/controls/avatar/">Avatar Management</a>
|
||||
|
||||
<h3>Manage My Content</h3>
|
||||
<a href="/controls/submissions/">Submissions</a>
|
||||
<a href="/controls/folders/submissions/">Folders</a>
|
||||
<a href="/controls/journal/">Journals</a>
|
||||
<a href="/controls/favorites/">Favorites</a>
|
||||
<a href="/controls/buddylist/">Watches</a>
|
||||
<a href="/controls/shouts/">Shouts</a>
|
||||
<a href="/controls/badges/">Badges</a>
|
||||
|
||||
<h3>Security</h3>
|
||||
<a href="/controls/sessions/logins/">Active Sessions</a>
|
||||
<a href="/controls/sessions/logs/">Activity Log</a>
|
||||
<a href="/controls/sessions/labels/">Browser Labels</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_sfw_button', '.sfw-toggle']);
|
||||
</script>
|
||||
</nav>
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function(){
|
||||
// all menus that should be opened only one at a time
|
||||
$$('.css-menu-toggle.only-one').invoke('observe', 'click', function(evt) {
|
||||
var curr_input = $(evt.findElement('label').getAttribute('for'));
|
||||
curr_input.next('.nav-ac-content').removeClassName('no-transition');
|
||||
if(curr_input.checked === false) {
|
||||
$$('.css-menu-toggle.only-one').each(function(elm){
|
||||
var elm_input = $(elm.getAttribute('for'));
|
||||
if(elm_input.checked === true) {
|
||||
elm_input.next('.nav-ac-content').addClassName('no-transition');
|
||||
elm_input.checked = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="news-block">
|
||||
|
||||
<div id="admin_notice_do_not_adblock2" class="newsBlock">
|
||||
<!--strong>Notice:</strong><span class="hideondesktop hideontablet"><br></span-->
|
||||
<a href="https://gofund.me/0a0b27ba">Support Fur Affinity: Honoring Dragoneer's Legacy. https://gofund.me/0a0b27ba</a></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="main-window" class="footer-mobile-tweak g-wrapper">
|
||||
<div id="header" class="has-adminmessage">
|
||||
|
||||
<!-- user profile banner -->
|
||||
|
||||
<site-banner>
|
||||
<a href="/">
|
||||
<picture>
|
||||
<source media="(max-width: 799px)" srcset="//d.furaffinity.net/art/pcraxkers/1670070754/profile_banner_mobile.jpg">
|
||||
<source media="(min-width: 800px)" srcset="//d.furaffinity.net/art/pcraxkers/1670070754/profile_banner.jpg">
|
||||
<img src="//d.furaffinity.net/art/pcraxkers/1670070754/profile_banner.jpg" alt="Profile Banner image">
|
||||
</picture>
|
||||
</a>
|
||||
</site-banner>
|
||||
|
||||
<a name="top"></a>
|
||||
</div>
|
||||
|
||||
<div id="site-content">
|
||||
|
||||
<!-- /header -->
|
||||
|
||||
|
||||
<userpage-nav-header>
|
||||
|
||||
<userpage-nav-avatar>
|
||||
<a class="current" href="/user/pcraxkers/"><img alt="pcraxkers" src="//a.furaffinity.net/1674032155/pcraxkers.gif"/></a>
|
||||
</userpage-nav-avatar>
|
||||
|
||||
<userpage-nav-user-details>
|
||||
<h1><username>
|
||||
~PCraxkers
|
||||
</username></h1>
|
||||
|
||||
<div class="font-small">
|
||||
<username class="user-title">
|
||||
<span class="hideonmobile">Registered:</span> Jul 16, 2021 06:31 </username>
|
||||
</div>
|
||||
</userpage-nav-user-details>
|
||||
|
||||
|
||||
<userpage-nav-interface-buttons>
|
||||
<a class="button standard stop" href="/unwatch/pcraxkers/?key=e7092dc7833fd3e83f6e0b972bf4044234de6127">-Watch</a>
|
||||
<a class="button standard" href="/newpm/pcraxkers/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" style="transform: ;msFilter:;"><path d="M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm0 2v.511l-8 6.223-8-6.222V6h16zM4 18V9.044l7.386 5.745a.994.994 0 0 0 1.228 0L20 9.044 20.002 18H4z"></path></svg></a>
|
||||
|
||||
</userpage-nav-interface-buttons>
|
||||
|
||||
<userpage-nav-links>
|
||||
<ul style="display:flex">
|
||||
<li><h3><a href="/user/pcraxkers/">Home</a></h3></li>
|
||||
<li><h3><a class="current" href="/gallery/pcraxkers/">Gallery</a></h3></li>
|
||||
<li><h3><a href="/scraps/pcraxkers/">Scraps</a></h3></li>
|
||||
<li><h3><a href="/favorites/pcraxkers/">Favs</a></h3></li>
|
||||
<li><h3><a href="/journals/pcraxkers/">Journals</a></h3></li>
|
||||
|
||||
</ul>
|
||||
</userpage-nav-links>
|
||||
|
||||
</userpage-nav-header>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="clear"></div>
|
||||
<!--- /USER NAV --->
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function(){
|
||||
$$('#jsBlockUnblockButton').invoke('observe', 'click', function(evt){
|
||||
var message = 'Are you sure you want to ' + (evt.findElement('a').href.indexOf('/unblock') != -1 ? 'unblock' : 'block') + ' this user?';
|
||||
if (!confirm(message)) {
|
||||
evt.stop();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="page-galleryscraps">
|
||||
<div id="columnpage">
|
||||
<div class="sidebar">
|
||||
|
||||
<div class="folder-list">
|
||||
<div class="user-folders">
|
||||
<div class="container-item-top">
|
||||
<h4>Gallery Folders</h4>
|
||||
</div>
|
||||
<div class="default-folders">
|
||||
<ul style="list-style-type:none">
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/" class="dotted">Main Gallery</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/scraps/pcraxkers/" class="dotted">Scraps</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<ul class="default-group" style="list-style-type:none">
|
||||
<li class="active">
|
||||
❯❯ <strong title="11 submissions">KNOT ME OUT - COMIC</strong>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/folder/1505828/Hazbin-Hellvua" title="2 submissions" class="dotted">Hazbin/Hellvua</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/folder/1505829/Pablo" title="18 submissions" class="dotted">Pablo</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/folder/1510162/Hazbin-Hellvua" title="1 submissions" class="dotted">Hazbin/Hellvua</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="rectangleAd">
|
||||
<div data-id="sidebar" class="rectangleAd__slot format--mediumRectangle jsAdSlot"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
|
||||
|
||||
<div class="leaderboardAd">
|
||||
<div data-id="header_middle" class="leaderboardAd__slot format--leaderboard jsAdSlot"></div>
|
||||
</div>
|
||||
|
||||
<section class="gallery-section">
|
||||
<div class="section-body">
|
||||
<div class="submission-list">
|
||||
<div class="folder-description" style="width:100% !important">
|
||||
<div class="container-item-top">
|
||||
<h3>KNOT ME OUT - COMIC</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="gallery-navigation aligncenter">
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="navigation-page-name inline" style="width:32%;">
|
||||
Page #1 </div>
|
||||
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
<!--button class="button standard" type="button">Next</button-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section id="gallery-gallery" class="gallery no-padding aligncenter no-artistname s-200 ">
|
||||
<figure id="sid-56257478" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/56257478/">
|
||||
<img data-tags="knot knotting knotted trip slip deer husky wall stuckinwall comic" class="blocked-content" alt="" src="//t.furaffinity.net/56257478@200-1712990864.jpg" data-width="78.55" data-height="200" style="width:78.55px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/56257478/" title="“KNOT ME OUT” - Page 11/11 - END">“KNOT ME OUT” - Page 11/11 - END</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-56257455" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/56257455/">
|
||||
<img data-tags="pump pumping cum cumming deer husky dog comic stuck stuckinwall wall" class="blocked-content" alt="" src="//t.furaffinity.net/56257455@200-1712990589.jpg" data-width="72.916" data-height="200" style="width:72.916px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/56257455/" title="“KNOT ME OUT” - Page 10/11">“KNOT ME OUT” - Page 10/11</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-56257447" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/56257447/">
|
||||
<img data-tags="knot knotting knotted comic deer husky dog cum cumming wormseye" class="blocked-content" alt="" src="//t.furaffinity.net/56257447@200-1712990404.jpg" data-width="89.874" data-height="200" style="width:89.874px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/56257447/" title="“KNOT ME OUT” - Page 9/11">“KNOT ME OUT” - Page 9/11</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-56255449" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/56255449/">
|
||||
<img data-tags="knot knotting deer husky dog stuck stuckinwall" class="blocked-content" alt="" src="//t.furaffinity.net/56255449@200-1712972291.jpg" data-width="95.464" data-height="200" style="width:95.464px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/56255449/" title="“KNOT ME OUT” - Page 8/11">“KNOT ME OUT” - Page 8/11</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-56255361" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/56255361/">
|
||||
<img data-tags="deer stuck stuckinwall wall comic" class="blocked-content" alt="" src="//t.furaffinity.net/56255361@200-1712971553.jpg" data-width="95.887" data-height="200" style="width:95.887px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/56255361/" title="“KNOT ME OUT” - Page 7/11">“KNOT ME OUT” - Page 7/11</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-56255339" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/56255339/">
|
||||
<img data-tags="stuck stuckinwall wall deer husky dog" class="blocked-content" alt="" src="//t.furaffinity.net/56255339@200-1712971367.jpg" data-width="72.023" data-height="200" style="width:72.023px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/56255339/" title="“KNOT ME OUT” - Page 6/11">“KNOT ME OUT” - Page 6/11</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-56255248" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/56255248/">
|
||||
<img data-tags="stuck stuckinwall wall deer dog husky rimming comic" class="blocked-content" alt="" src="//t.furaffinity.net/56255248@200-1712970728.jpg" data-width="90.871" data-height="200" style="width:90.871px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/56255248/" title="“KNOT ME OUT” - Page 5/11">“KNOT ME OUT” - Page 5/11</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-56255219" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/56255219/">
|
||||
<img data-tags="rimming wall stuck stuckinwall deer dog husky butt" class="blocked-content" alt="" src="//t.furaffinity.net/56255219@200-1712970577.jpg" data-width="82.953" data-height="200" style="width:82.953px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/56255219/" title="“KNOT ME OUT” - Page 4/11">“KNOT ME OUT” - Page 4/11</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-56255203" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/56255203/">
|
||||
<img data-tags="butt stuck stuckinwall wall deer dog comic" class="blocked-content" alt="" src="//t.furaffinity.net/56255203@200-1712970427.jpg" data-width="75.32" data-height="200" style="width:75.32px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/56255203/" title="“KNOT ME OUT” - Page 3/11">“KNOT ME OUT” - Page 3/11</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-56255183" class="r-general t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/56255183/">
|
||||
<img data-tags="stuckinwall stuck wall deer dog" class="blocked-content" alt="" src="//t.furaffinity.net/56255183@200-1712970293.jpg" data-width="67.271" data-height="200" style="width:67.271px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/56255183/" title="“KNOT ME OUT” - Page 2/11">“KNOT ME OUT” - Page 2/11</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-56246081" class="r-general t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/56246081/">
|
||||
<img data-tags="fox comic wall stuckinwall deer stuck" class="blocked-content" alt="" src="//t.furaffinity.net/56246081@200-1712914173.jpg" data-width="85.083" data-height="200" style="width:85.083px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/56246081/" title="“KNOT ME OUT” - Page 1/11">“KNOT ME OUT” - Page 1/11</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</section>
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_gallery', 'gallery-gallery']);
|
||||
</script>
|
||||
|
||||
<div class="gallery-navigation aligncenter">
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="inline" style="width:32%">
|
||||
<div class="mobile-button">
|
||||
<button type="button" class="button standard toggle_titles">Disable Titles</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
<!--button class="button standard" type="button">Next</button-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var descriptions = {"56257478":{"title":"\u201cKNOT ME OUT\u201d - Page 11\/11 - END","description":"[i][b]END!\r\n[\/b][\/i]\r\n[url=https:\/\/www.furaffinity.net\/view\/56246081\/] BACK TO PAGE1 [\/url]\r\n\r\n[b]CREDITS: \r\n[\/b] PANEL1 - referenced from \u2018Rajii\u2019\r\n PANEL 4 - Inspired by \u201cA Fruitful Quest\u201d","username":"PCraxkers","lower":"pcraxkers"},"56257455":{"title":"\u201cKNOT ME OUT\u201d - Page 10\/11","description":"[url=https:\/\/www.furaffinity.net\/view\/56257478\/] NEXT [\/url]\r\n\r\n[url=https:\/\/www.furaffinity.net\/view\/56257447\/] BACK [\/url]","username":"PCraxkers","lower":"pcraxkers"},"56257447":{"title":"\u201cKNOT ME OUT\u201d - Page 9\/11","description":"[url=https:\/\/www.furaffinity.net\/view\/56257455\/] NEXT [\/url]\r\n\r\n[url=https:\/\/www.furaffinity.net\/view\/56255449\/] BACK [\/url]","username":"PCraxkers","lower":"pcraxkers"},"56255449":{"title":"\u201cKNOT ME OUT\u201d - Page 8\/11","description":"[url=https:\/\/www.furaffinity.net\/view\/56257447\/] NEXT [\/url]\r\n\r\n[url=https:\/\/www.furaffinity.net\/view\/56255361\/] BACK [\/url]","username":"PCraxkers","lower":"pcraxkers"},"56255361":{"title":"\u201cKNOT ME OUT\u201d - Page 7\/11","description":"[url=https:\/\/www.furaffinity.net\/view\/56255449\/] NEXT [\/url]\r\n\r\n[url=https:\/\/www.furaffinity.net\/view\/56255339\/] BACK [\/url]","username":"PCraxkers","lower":"pcraxkers"},"56255339":{"title":"\u201cKNOT ME OUT\u201d - Page 6\/11","description":"[url=https:\/\/www.furaffinity.net\/view\/56255361\/] NEXT [\/url]\r\n\r\n[url=https:\/\/www.furaffinity.net\/view\/56255248\/] BACK [\/url]","username":"PCraxkers","lower":"pcraxkers"},"56255248":{"title":"\u201cKNOT ME OUT\u201d - Page 5\/11","description":"[url=https:\/\/www.furaffinity.net\/view\/56255339\/] NEXT [\/url]\r\n\r\n[url=https:\/\/www.furaffinity.net\/view\/56255219\/] BACK [\/url]","username":"PCraxkers","lower":"pcraxkers"},"56255219":{"title":"\u201cKNOT ME OUT\u201d - Page 4\/11","description":"[url=https:\/\/www.furaffinity.net\/view\/56255248\/] NEXT [\/url]\r\n\r\n[url=https:\/\/www.furaffinity.net\/view\/56255203\/] BACK [\/url]","username":"PCraxkers","lower":"pcraxkers"},"56255203":{"title":"\u201cKNOT ME OUT\u201d - Page 3\/11","description":"[url=https:\/\/www.furaffinity.net\/view\/56255219\/] NEXT [\/url]\r\n\r\n[url=https:\/\/www.furaffinity.net\/view\/56255183\/] BACK [\/url]\r\n\r\n[i]NOTE: Page 3, second panel pose was loosely referenced from on of Isatorus animations.[\/i]","username":"PCraxkers","lower":"pcraxkers"},"56255183":{"title":"\u201cKNOT ME OUT\u201d - Page 2\/11","description":"[url=https:\/\/www.furaffinity.net\/view\/56255203\/] NEXT [\/url]\r\n\r\n[url=https:\/\/www.furaffinity.net\/view\/56246081\/] BACK [\/url]","username":"PCraxkers","lower":"pcraxkers"},"56246081":{"title":"\u201cKNOT ME OUT\u201d - Page 1\/11","description":"[url=https:\/\/www.furaffinity.net\/view\/56255183\/] NEXT [\/url] \r\n\r\nDrawing request - comic\r\n Rey Cameo, Belongs to: @\/AnimatedMau","username":"PCraxkers","lower":"pcraxkers"}};
|
||||
</script>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- /<div id="site-content"> -->
|
||||
|
||||
<div id="footer">
|
||||
<div class="auto_link footer-links">
|
||||
<span class="hideonmobile">
|
||||
<a href="/advertising">Advertise</a> |
|
||||
<a href="/plus"><img style="position:relative;top:4px" src="/themes/beta/img/the-golden-pawb.png"> Get FA+</a> |
|
||||
<a href="https://shop.furaffinity.net/"><img style="position:relative;top:4px" src="/themes/beta/img/icons/merch_store_icon.png"> Merch Store</a> |
|
||||
<a href="/tos">Terms of Service</a> |
|
||||
<a href="/privacy">Privacy</a> |
|
||||
<a href="/coc">Code of Conduct</a> |
|
||||
<a href="/aup">Upload Policy</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footerAds">
|
||||
<div class="footerAds__column">
|
||||
<div class="footerAds__slot format--faMediumRectangle jsAdSlot" data-id="footer_left"></div>
|
||||
</div>
|
||||
|
||||
<div class="footerAds__column">
|
||||
<div class="footerAds__slot footerAds__slot--faLogo">
|
||||
<img src="/themes/beta/img/banners/fa_logo.png?v2">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footerAds__column">
|
||||
<div class="footerAds__slot format--faSmallRectangle jsAdSlot" data-id="footer_right_top"></div>
|
||||
<div class="footerAds__slot format--faSmallRectangle jsAdSlot" data-id="footer_right_bottom"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="online-stats">
|
||||
91411 <strong><span title="Measured in the last 900 seconds">Users online</span></strong> —
|
||||
5228 <strong>guests</strong>,
|
||||
15761 <strong>registered</strong>
|
||||
and 70422 <strong>other</strong>
|
||||
<!-- Online Counter Last Update: Wed, 19 Feb 2025 11:51:00 -0800 -->
|
||||
</div>
|
||||
<small>Limit bot activity to periods with less than 10k registered users online.</small>
|
||||
|
||||
<br><br>
|
||||
<strong>© 2005-2025 Frost Dragon Art LLC</strong>
|
||||
|
||||
<div class="footnote">
|
||||
Server Time: Feb 19, 2025 11:51 AM </div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="cookie-notification" class="default-hidden">
|
||||
<div class="text-container">This website uses cookies to enhance your browsing experience. <a href="/privacy" target="_blank">Learn More</a></div>
|
||||
<div class="button-container"><button class="accept">I Consent</button></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function(){
|
||||
$$('#cookie-notification button').invoke('observe', 'click', function() {
|
||||
setCookie('cc', 1, expiryyear, '/');
|
||||
$('cookie-notification').addClassName('default-hidden');
|
||||
});
|
||||
$('cookie-notification').removeClassName('default-hidden');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- <div id="main-window"> -->
|
||||
|
||||
<!--
|
||||
Server Local Time: Feb 19, 2025 11:51 AM <br />
|
||||
Page generated in 0.019 seconds [ 15% PHP, 85% SQL ] (25 queries) -->
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function() {
|
||||
var exists = getCookie('sz');
|
||||
var saved = save_viewport_size();
|
||||
if((!exists && saved) || (exists && saved && exists != saved)) {
|
||||
//window.location.reload();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="/themes/beta/js/censor.js?u=2025011001"></script>
|
||||
|
||||
<script type="text/javascript" src="/themes/beta/js/prototype.1.7.3.min.js"></script>
|
||||
<script type="text/javascript" src="/themes/beta/js/script.js?u=2025011001"></script>
|
||||
<script type="text/javascript">
|
||||
var server_timestamp = 1739994664;
|
||||
var client_timestamp = ((new Date()).getTime())/1000;
|
||||
var server_timestamp_delta = server_timestamp - client_timestamp;
|
||||
var sfw_cookie_name = 'sfw';
|
||||
var news_cookie_name = 'n';
|
||||
|
||||
|
||||
|
||||
|
||||
var adData = {"sizeConfig":[{"labels":["desktopWide"],"mediaQuery":"(min-width: 1065px)","sizesSupported":[[728,90],[300,250],[300,168],[300,600],[160,600]]},{"labels":["desktopNarrow"],"mediaQuery":"(min-width: 720px) and (max-width: 1064px)","sizesSupported":[[728,90],[300,250],[300,168]]},{"labels":["mobile"],"mediaQuery":"(min-width: 0px) and (max-width: 719px)","sizesSupported":[[320,50],[300,50],[320,100]]}],"slotConfig":{"header_middle":{"containerSize":{"desktopWide":[728,100],"desktopNarrow":[728,100],"mobile":[320,100]},"providerPriority":["inhouse"]},"above_content":{"containerSize":{"desktopWide":[728,100],"desktopNarrow":[728,100],"mobile":[320,100]},"providerPriority":["inhouse"]},"sidebar":{"containerSize":{"desktopWide":[300,250]},"providerPriority":["inhouse"]},"sidebar_tall":{"containerSize":{"desktopWide":[300,600]},"providerPriority":["inhouse"]},"footer_left":{"containerSize":{"desktopWide":[300,200],"desktopNarrow":[300,200],"mobile":[300,200]},"providerPriority":["inhouse"]},"footer_right_top":{"containerSize":{"desktopWide":[300,90],"desktopNarrow":[300,90],"mobile":[300,90]},"providerPriority":["inhouse"]},"footer_right_bottom":{"containerSize":{"desktopWide":[300,90],"desktopNarrow":[300,90],"mobile":[300,90]},"providerPriority":["inhouse"]},"header_right_left":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]},"header_right_right":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]},"sidebar_top":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]},"sidebar_bottom":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]}},"providerConfig":{"inhouse":{"domain":"https:\/\/rv.furaffinity.net","dataPath":"\/live\/www\/delivery\/spc.php","dataVariableName":"OA_output"}},"adConfig":{"inhouse":{"header_middle":{"default":{"tagId":11,"tagSize":[728,90]},"sizeOverride":{"mobile":{"tagId":19,"tagSize":[300,90]}}},"above_content":{"default":{"tagId":15,"tagSize":[728,90]},"sizeOverride":{"mobile":{"tagId":17,"tagSize":[300,90]}}},"sidebar":{"default":{"tagId":13,"tagSize":[300,250]}},"sidebar_tall":{"default":{"tagId":13,"tagSize":[300,250]}},"footer_left":{"default":{"tagId":10,"tagSize":[300,200]}},"footer_right_top":{"default":{"tagId":5,"tagSize":[300,90]}},"footer_right_bottom":{"default":{"tagId":6,"tagSize":[300,90]}},"header_right_left":{"default":{"tagId":2,"tagSize":[300,90]}},"header_right_right":{"default":{"tagId":4,"tagSize":[300,90]}},"sidebar_top":{"default":{"tagId":2,"tagSize":[300,90]}},"sidebar_bottom":{"default":{"tagId":4,"tagSize":[300,90]}}}}};
|
||||
window.fad = new adManager(adData.sizeConfig, adData.slotConfig, adData.providerConfig, adData.adConfig, 1);
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function() {
|
||||
var ddmenuOptions = {
|
||||
menuId: "ddmenu",
|
||||
linkIdToMenuHtml: null,
|
||||
open: "onmouseover", // or "onclick"
|
||||
delay: 1,
|
||||
speed: 1,
|
||||
keysNav: true,
|
||||
license: "2c1f72"
|
||||
};
|
||||
var ddmenu = new Ddmenu(ddmenuOptions);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
<!---
|
||||
|\ /|
|
||||
/_^ ^_\
|
||||
\v/
|
||||
|
||||
The fox goes "moo!"
|
||||
--->
|
||||
|
||||
</html>
|
||||
1042
test/fixtures/files/domain/fa/gallery/folder_pablo_page_1_pcraxkers.html
vendored
Normal file
1042
test/fixtures/files/domain/fa/gallery/folder_pablo_page_1_pcraxkers.html
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1415
test/fixtures/files/domain/fa/gallery/gallery_page_1_pcraxkers.html
vendored
Normal file
1415
test/fixtures/files/domain/fa/gallery/gallery_page_1_pcraxkers.html
vendored
Normal file
File diff suppressed because one or more lines are too long
558
test/fixtures/files/domain/fa/gallery/not_found_user_fortuneiceskular2002.html
vendored
Normal file
558
test/fixtures/files/domain/fa/gallery/not_found_user_fortuneiceskular2002.html
vendored
Normal file
File diff suppressed because one or more lines are too long
947
test/fixtures/files/domain/fa/gallery/scraps_page_1_pcraxkers.html
vendored
Normal file
947
test/fixtures/files/domain/fa/gallery/scraps_page_1_pcraxkers.html
vendored
Normal file
@@ -0,0 +1,947 @@
|
||||
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html lang="en" class="no-js" xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<title>Scraps Gallery for PCraxkers -- Fur Affinity [dot] net</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="description" content="Fur Affinity | For all things fluff, scaled, and feathered!" />
|
||||
<meta name="keywords" content="fur furry furries fursuit fursuits cosplay brony bronies zootopia scalies kemono anthro anthropormophic art online gallery portfolio" />
|
||||
<meta name="distribution" content="global" />
|
||||
<meta name="copyright" content="Frost Dragon Art LLC" />
|
||||
<meta name="robots" content="noai, noimageai" />
|
||||
|
||||
<link rel="icon" href="/themes/beta/img/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="/themes/beta/img/favicon.ico" type="image/x-icon" />
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet">
|
||||
|
||||
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=EDGE" />
|
||||
|
||||
|
||||
<!-- generic -->
|
||||
<meta name="robots" content="noindex" />
|
||||
|
||||
<!-- og -->
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="Scraps Gallery for PCraxkers -- Fur Affinity [dot] net" />
|
||||
<meta property="og:url" content="https://www.furaffinity.net/gallery/pcraxkers/" />
|
||||
<meta property="og:description" content="Australian Animator/artist ·Male · . . A place where I post my shame . . ╰━━━━━( ✦ )━━━━━╯" />
|
||||
<meta property="og:image" content="https://t.furaffinity.net/44225295@600-1634614032.jpg" />
|
||||
<meta property="og:image:secure_url" content="https://t.furaffinity.net/44225295@600-1634614032.jpg" />
|
||||
<meta property="og:image:type" content="image/jpeg" />
|
||||
<meta property="og:image:width" content="600" />
|
||||
<meta property="og:image:height" content="448" />
|
||||
|
||||
<!-- twitter -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:domain" content="furaffinity.net" />
|
||||
<meta name="twitter:site" content="@furaffinity" />
|
||||
<meta name="twitter:title" content="Scraps Gallery for PCraxkers -- Fur Affinity [dot] net" />
|
||||
<meta name="twitter:description" content="Australian Animator/artist ·Male · . . A place where I post my shame . . ╰━━━━━( ✦ )━━━━━╯" />
|
||||
<meta name="twitter:url" content="https://www.furaffinity.net/gallery/pcraxkers/" />
|
||||
<meta name="twitter:image" content="https://t.furaffinity.net/44225295@600-1634614032.jpg" />
|
||||
<meta name="twitter:label1" content="Submission Title" />
|
||||
<meta name="twitter:data1" content="Snack" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var _faurl={d:'//d.furaffinity.net',a:'//a.furaffinity.net',r:'//rv.furaffinity.net',t:'//t.furaffinity.net',pb:'/themes/beta/js/prebid-7.54.5-fa.js'};
|
||||
</script>
|
||||
<script type="text/javascript" src="/themes/beta/js/common.js?u=2025011001"></script>
|
||||
<link type="text/css" rel="stylesheet" href="/themes/beta/css/ui_theme_dark.css?u=2025011001" />
|
||||
|
||||
<!-- browser hints -->
|
||||
<link rel="preconnect" href="//t.furaffinity.net" />
|
||||
<link rel="preconnect" href="//a.furaffinity.net" />
|
||||
<link rel="preconnect" href="//rv.furaffinity.net" />
|
||||
<link rel="preconnect" href="https://www15.smartadserver.com" />
|
||||
|
||||
<link rel="preload" href="/themes/beta/js/prototype.1.7.3.min.js" as="script" />
|
||||
<link rel="preload" href="/themes/beta/js/script.js?u=2025011001" as="script" />
|
||||
|
||||
</head>
|
||||
|
||||
<!-- EU request: no -->
|
||||
<body id="pageid-gallery" data-static-path="/themes/beta" data-user-logged-in="1" data-tag-blocklist="" data-tag-blocklist-hide-tagless="0" data-tag-blocklist-nonce="d7890b2d46020491ba77ee39193009a899012433">
|
||||
<script type="text/javascript">
|
||||
0; // attempted fix for fouc in ff
|
||||
</script>
|
||||
|
||||
|
||||
<!-- sidebar -->
|
||||
<div class="mobile-navigation">
|
||||
|
||||
<div class="mobile-nav-container">
|
||||
|
||||
<div class="mobile-nav-container-item left">
|
||||
<label for="mobile-menu-nav" class="css-menu-toggle only-one"><img class="burger-menu" src="/themes/beta/img/fa-burger-menu-icon.png"></label>
|
||||
</div>
|
||||
|
||||
<div class="mobile-nav-container-item center"><a class="mobile-nav-logo" href="/"><img class="site-logo" src="/themes/beta/img/banners/fa_logo.png?v2"></a></div>
|
||||
|
||||
<div class="mobile-nav-container-item right">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="nav-ac-container">
|
||||
<input id="mobile-menu-nav" name="accordion-1" type="checkbox" />
|
||||
<article class="nav-ac-content mobile-menu">
|
||||
|
||||
<div class="mobile-nav-content-container">
|
||||
<div class="aligncenter">
|
||||
<a href="/user/zzreg/"><img class="loggedin_user_avatar avatar" alt="zzreg" src="//a.furaffinity.net/1424255659/zzreg.gif"/></a>
|
||||
<h2 style="margin-bottom:0"><a href="/user/zzreg/">zzreg</a></h2>
|
||||
<a href="/user/zzreg/">Userpage</a> |
|
||||
<a href="/msg/pms/">Notes</a> |
|
||||
<a href="/controls/journal/">Journals</a> |
|
||||
<a href="/plus/"><img style="position:relative;top:4px" src="/themes/beta/img/the-golden-pawb.png"> FA+</a> |
|
||||
<a href="https://shop.furaffinity.net" target="_blank"><img style="position:relative;top:3px" src="/themes/beta/img/icons/merch_store_icon.png"> Shop</a>
|
||||
<br>
|
||||
</div>
|
||||
<hr>
|
||||
<h2><a href="/browse/">Browse</a></h2>
|
||||
<h2><a href="/search/">Search</a></h2>
|
||||
<h2><a href="/submit/">Upload</a></h2>
|
||||
|
||||
<div class="nav-ac-container">
|
||||
<label for="mobile-menu-submenu-0"><h2 style="margin-top:0;padding-top:0">Support ▼</h2></label>
|
||||
<input id="mobile-menu-submenu-0" name="accordion-1" type="checkbox" />
|
||||
<article class="nav-ac-content nav-ac-content-dropdown">
|
||||
<a href="/journals/fender">News & Updates</a><br>
|
||||
<a href="/help/">Help & Support</a><br>
|
||||
<a href="/advertising.html">Advertising</a><br>
|
||||
<a href="/blm">Black Lives Matter</a>
|
||||
|
||||
<h3>SUPPORT FA</h3>
|
||||
<a href="/plus/">Subscribe to FA+ </a><br>
|
||||
<a href="https://shop.furaffinity.net/" target="_blank">FA Merch Store</a>
|
||||
|
||||
|
||||
<h3>RULES & POLICIES</h3>
|
||||
<a href="/tos">Terms of Service</a><br>
|
||||
<a href="/privacy">Privacy</a><br>
|
||||
<a href="/coc">Code of Conduct</a><br>
|
||||
<a href="/aup">Upload Policy</a>
|
||||
|
||||
<h3>SOCIAL</h3>
|
||||
<a href="https://discord.gg/furaffinity">Discord</a><br>
|
||||
<a href="https://www.twitter.com/furaffinity/">Twitter</a>
|
||||
|
||||
<h3>Support</h3>
|
||||
<a href="/controls/troubletickets/">REPORT A PROBLEM</a>
|
||||
</article>
|
||||
</div>
|
||||
<div class="mobile-sfw-toggle">
|
||||
<h2>SFW Mode</h2>
|
||||
|
||||
<div class="sfw-toggle type-slider slider-button-wrapper">
|
||||
<input type="checkbox" id="sfw-toggle-mobile" class="slider-toggle" />
|
||||
<label class="slider-viewport" for="sfw-toggle-mobile">
|
||||
<div class="slider">
|
||||
<div class="slider-button"> </div>
|
||||
<div class="slider-content left"><span>SFW</span></div>
|
||||
<div class="slider-content right"><span>NSFW</span></div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-ac-container">
|
||||
<label for="mobile-menu-submenu-1"><h2 style="margin-top:0;padding-top:0">Settings ▼</h2></label>
|
||||
<input id="mobile-menu-submenu-1" name="accordion-1" type="checkbox" />
|
||||
<article class="nav-ac-content nav-ac-content-dropdown">
|
||||
<h3>ACCOUNT INFORMATION</h3>
|
||||
<a href="/controls/settings/">Account Settings</a><br>
|
||||
<a href="/controls/site-settings/">Global Site Settings</a><br>
|
||||
<a href="/controls/user-settings/">User Settings</a>
|
||||
|
||||
<h3>CUSTOMIZE USER PROFILE</h3>
|
||||
<a href="/controls/profile/">Profile Info</a><br>
|
||||
<a href="/controls/profilebanner/">Profile Banner</a><br>
|
||||
<a href="/controls/contacts/">Contacts and Social Media</a><br>
|
||||
<a href="/controls/avatar/">Avatar Management</a>
|
||||
|
||||
<h3>MANAGE MY CONTENT</h3>
|
||||
<a href="/controls/submissions/">Submissions</a><br>
|
||||
<a href="/controls/folders/submissions/">Folders</a><br>
|
||||
<a href="/controls/journal/">Journals</a><br>
|
||||
<a href="/controls/favorites/">Favorites</a><br>
|
||||
<a href="/controls/buddylist/">Watches</a><br>
|
||||
<a href="/controls/shouts/">Shouts</a><br>
|
||||
<a href="/controls/badges/">Badges</a>
|
||||
|
||||
<h3>SECURITY</h3>
|
||||
<a href="/controls/sessions/logins/">Active Sessions</a><br>
|
||||
<a href="/controls/sessions/logs/">Activity Log</a><br>
|
||||
<a href="/controls/sessions/labels/">Browser Labels</a>
|
||||
</article>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
<h2><form class="post-btn logout-link" method="post" action="/logout/"><button type="submit">Log Out</button><input type="hidden" name="key" value="86700f9e03ccdf5b667e25b4b13573c6f3c73878"/></form>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_logout_button', '.logout-link button']);
|
||||
</script>
|
||||
</h2>
|
||||
|
||||
|
||||
<h2></h2>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mobile-notification-bar">
|
||||
<a class="notification-container inline" href="/msg/submissions/" title="86,651 Submission Notifications">86651S</a>
|
||||
<a class="notification-container inline" href="/msg/others/#journals" title="17,902 Journal Notifications">17902J</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<nav id="ddmenu">
|
||||
<div class="mobile-nav navhideondesktop hideonmobile hideontablet">
|
||||
<div class="mobile-nav-logo"><a class="mobile-nav-logo" href="/"><img src="/themes/beta/img/banners/fa_logo.png?v2"></a></div>
|
||||
<div class="mobile-nav-header-item"><a href="/browse/">Browse</a></div>
|
||||
<div class="mobile-nav-header-item"><a href="/search/">Search</a></div>
|
||||
</div>
|
||||
|
||||
<div class="menu-icon"></div>
|
||||
|
||||
<ul class="navhideonmobile">
|
||||
<li class="lileft"><div class="lileft hideonmobile" style="vertical-align:middle;line-height:0 !important" ><a class="top-heading" href="/"><img class="nav-bar-logo" src="/themes/beta/img/banners/fa_logo.png?v2"></a></div></li>
|
||||
<li class="lileft"><a class="top-heading" href="/browse/"><div class="sprite-paw menu-space-saver hideonmobile"></div>Browse</a></li>
|
||||
<li class="lileft"><a class="top-heading hideondesktop" href="/search/">Search</a></li>
|
||||
<li class="lileft"><a class="top-heading" href="/submit/"><div class="sprite-upload menu-space-saver hideonmobile"></div> Upload</a></li>
|
||||
<li class="lileft">
|
||||
<a class="top-heading" href="#"><div class="sprite-news menu-space-saver hideonmobile"></div>Support</a>
|
||||
<i class="caret"></i>
|
||||
<div class="dropdown dropdown-left ">
|
||||
<div class="dd-inner">
|
||||
<div class="column">
|
||||
<h3>Community</h3>
|
||||
<a href="/journals/fender">News & Updates</a>
|
||||
<a href="/help/">Help & Support</a>
|
||||
<a href="/advertising.html">Advertising</a>
|
||||
<a href="/blm/">Black Lives Matter</a>
|
||||
|
||||
<h3>Rules & Policies</h3>
|
||||
<a href="/tos">Terms of Service</a>
|
||||
<a href="/privacy">Privacy</a>
|
||||
<a href="/coc">Code of Conduct</a>
|
||||
<a href="/aup">Upload Policy</a>
|
||||
|
||||
<h3>Social</h3>
|
||||
<a href="https://discord.gg/furaffinity">Discord</a>
|
||||
<a href="https://www.twitter.com/furaffinity/">Twitter</a>
|
||||
|
||||
<h3>Trouble Tickets</h3>
|
||||
<a href="/controls/troubletickets/">Report a Problem</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="lileft"><a class="top-heading" href="/plus/" title="FA+"><img style="position:relative;top:3px" src="/themes/beta/img/the-golden-pawb.png"><span class="hidebrowselowres"> FA+</span></a></li>
|
||||
<li class="lileft"><a class="top-heading" href="https://shop.furaffinity.net" title="Shop" target="_blank"><img style="position:relative;top:3px" src="/themes/beta/img/icons/merch_store_icon.png"><span class="hidebrowselowres"> Shop</span></a></li>
|
||||
|
||||
<div class="lileft hideonmobile">
|
||||
<form id="searchbox" method="get" action="/search/">
|
||||
<input type="search" name="q" placeholder="SEARCH">
|
||||
<a href="/search"> </a>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="message-bar-desktop">
|
||||
|
||||
<a class="notification-container inline" href="/msg/submissions/" title="86,651 Submission Notifications">86651S</a>
|
||||
<a class="notification-container inline" href="/msg/others/#journals" title="17,902 Journal Notifications">17902J</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="floatleft hideonmobile">
|
||||
<a href="/user/zzreg"><img class="loggedin_user_avatar menubar-icon-resize avatar" style="cursor:pointer" alt="zzreg" src="//a.furaffinity.net/1424255659/zzreg.gif"/></a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="submenu-trigger">
|
||||
<div class="floatleft hideonmobile">
|
||||
<svg class="avatar-submenu-trigger banner-svg" xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 24 24"><path d="M4 6h16v2H4zm0 5h16v2H4zm0 5h16v2H4z"></path></svg>
|
||||
</div>
|
||||
<a id="my-username" class="top-heading hideondesktop" href="#"><span class="hideondesktop">My FA ( </span>zzreg<span class="hideondesktop"> )</span></a>
|
||||
|
||||
<div class="dropdown dropdown-right">
|
||||
<div class="dd-inner">
|
||||
<div class="column">
|
||||
<h3>Account</h3>
|
||||
<a href="/user/zzreg/">My Userpage</a>
|
||||
<a href="/msg/pms/">Check My Notes</a>
|
||||
<a href="/controls/journal/">Create a Journal</a>
|
||||
<a href="/commissions/zzreg/">My Commission Info</a>
|
||||
|
||||
<h3>Support Fur Affinity</h3>
|
||||
<a href="/plus/">Subscribe to FA+ </a>
|
||||
<a href="https://shop.furaffinity.net/" target="_blank">Merch Store</a>
|
||||
|
||||
<h3>Trouble Tickets</h3>
|
||||
<a href="/controls/troubletickets/">Report a Problem</a>
|
||||
|
||||
<div class="mobile-sfw-toggle">
|
||||
<h3 class="padding-top:10px">Toggle SFW</h3>
|
||||
|
||||
<div class="sfw-toggle type-slider slider-button-wrapper" style="position:relative;top:5px">
|
||||
<input type="checkbox" id="sfw-toggle-mobile" class="slider-toggle" />
|
||||
<label class="slider-viewport" for="sfw-toggle-mobile">
|
||||
<div class="slider">
|
||||
<div class="slider-button"> </div>
|
||||
<div class="slider-content left"><span>SFW</span></div>
|
||||
<div class="slider-content right"><span>NSFW</span></div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<form class="post-btn logout-link" method="post" action="/logout/"><button type="submit">Log Out</button><input type="hidden" name="key" value="86700f9e03ccdf5b667e25b4b13573c6f3c73878"/></form>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_logout_button', '.logout-link button']);
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="submenu-trigger">
|
||||
<a class="top-heading" href="#"><svg class="banner-svg" xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 24 24" style="transform: ;msFilter:;"><path d="M12 16c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4zm0-6c1.084 0 2 .916 2 2s-.916 2-2 2-2-.916-2-2 .916-2 2-2z"></path><path d="m2.845 16.136 1 1.73c.531.917 1.809 1.261 2.73.73l.529-.306A8.1 8.1 0 0 0 9 19.402V20c0 1.103.897 2 2 2h2c1.103 0 2-.897 2-2v-.598a8.132 8.132 0 0 0 1.896-1.111l.529.306c.923.53 2.198.188 2.731-.731l.999-1.729a2.001 2.001 0 0 0-.731-2.732l-.505-.292a7.718 7.718 0 0 0 0-2.224l.505-.292a2.002 2.002 0 0 0 .731-2.732l-.999-1.729c-.531-.92-1.808-1.265-2.731-.732l-.529.306A8.1 8.1 0 0 0 15 4.598V4c0-1.103-.897-2-2-2h-2c-1.103 0-2 .897-2 2v.598a8.132 8.132 0 0 0-1.896 1.111l-.529-.306c-.924-.531-2.2-.187-2.731.732l-.999 1.729a2.001 2.001 0 0 0 .731 2.732l.505.292a7.683 7.683 0 0 0 0 2.223l-.505.292a2.003 2.003 0 0 0-.731 2.733zm3.326-2.758A5.703 5.703 0 0 1 6 12c0-.462.058-.926.17-1.378a.999.999 0 0 0-.47-1.108l-1.123-.65.998-1.729 1.145.662a.997.997 0 0 0 1.188-.142 6.071 6.071 0 0 1 2.384-1.399A1 1 0 0 0 11 5.3V4h2v1.3a1 1 0 0 0 .708.956 6.083 6.083 0 0 1 2.384 1.399.999.999 0 0 0 1.188.142l1.144-.661 1 1.729-1.124.649a1 1 0 0 0-.47 1.108c.112.452.17.916.17 1.378 0 .461-.058.925-.171 1.378a1 1 0 0 0 .471 1.108l1.123.649-.998 1.729-1.145-.661a.996.996 0 0 0-1.188.142 6.071 6.071 0 0 1-2.384 1.399A1 1 0 0 0 13 18.7l.002 1.3H11v-1.3a1 1 0 0 0-.708-.956 6.083 6.083 0 0 1-2.384-1.399.992.992 0 0 0-1.188-.141l-1.144.662-1-1.729 1.124-.651a1 1 0 0 0 .471-1.108z"></path></svg></a>
|
||||
<div class="dropdown dropdown-right">
|
||||
<div class="dd-inner">
|
||||
<div class="column">
|
||||
<h3>Account Information</h3>
|
||||
<a href="/controls/settings/">Account Settings</a>
|
||||
<a href="/controls/site-settings/">Global Site Settings</a>
|
||||
<a href="/controls/user-settings/">User Settings</a>
|
||||
|
||||
<h3>Customize User Profile</h3>
|
||||
<a href="/controls/profile/">Profile Info</a>
|
||||
<a href="/controls/profilebanner/">Profile Banner</a>
|
||||
<a href="/controls/contacts/">Contacts & Social Media</a>
|
||||
<a href="/controls/avatar/">Avatar Management</a>
|
||||
|
||||
<h3>Manage My Content</h3>
|
||||
<a href="/controls/submissions/">Submissions</a>
|
||||
<a href="/controls/folders/submissions/">Folders</a>
|
||||
<a href="/controls/journal/">Journals</a>
|
||||
<a href="/controls/favorites/">Favorites</a>
|
||||
<a href="/controls/buddylist/">Watches</a>
|
||||
<a href="/controls/shouts/">Shouts</a>
|
||||
<a href="/controls/badges/">Badges</a>
|
||||
|
||||
<h3>Security</h3>
|
||||
<a href="/controls/sessions/logins/">Active Sessions</a>
|
||||
<a href="/controls/sessions/logs/">Activity Log</a>
|
||||
<a href="/controls/sessions/labels/">Browser Labels</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_sfw_button', '.sfw-toggle']);
|
||||
</script>
|
||||
</nav>
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function(){
|
||||
// all menus that should be opened only one at a time
|
||||
$$('.css-menu-toggle.only-one').invoke('observe', 'click', function(evt) {
|
||||
var curr_input = $(evt.findElement('label').getAttribute('for'));
|
||||
curr_input.next('.nav-ac-content').removeClassName('no-transition');
|
||||
if(curr_input.checked === false) {
|
||||
$$('.css-menu-toggle.only-one').each(function(elm){
|
||||
var elm_input = $(elm.getAttribute('for'));
|
||||
if(elm_input.checked === true) {
|
||||
elm_input.next('.nav-ac-content').addClassName('no-transition');
|
||||
elm_input.checked = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="news-block">
|
||||
|
||||
<div id="admin_notice_do_not_adblock2" class="newsBlock">
|
||||
<!--strong>Notice:</strong><span class="hideondesktop hideontablet"><br></span-->
|
||||
<a href="https://gofund.me/0a0b27ba">Support Fur Affinity: Honoring Dragoneer's Legacy. https://gofund.me/0a0b27ba</a></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="main-window" class="footer-mobile-tweak g-wrapper">
|
||||
<div id="header" class="has-adminmessage">
|
||||
|
||||
<!-- user profile banner -->
|
||||
|
||||
<site-banner>
|
||||
<a href="/">
|
||||
<picture>
|
||||
<source media="(max-width: 799px)" srcset="//d.furaffinity.net/art/pcraxkers/1670070754/profile_banner_mobile.jpg">
|
||||
<source media="(min-width: 800px)" srcset="//d.furaffinity.net/art/pcraxkers/1670070754/profile_banner.jpg">
|
||||
<img src="//d.furaffinity.net/art/pcraxkers/1670070754/profile_banner.jpg" alt="Profile Banner image">
|
||||
</picture>
|
||||
</a>
|
||||
</site-banner>
|
||||
|
||||
<a name="top"></a>
|
||||
</div>
|
||||
|
||||
<div id="site-content">
|
||||
|
||||
<!-- /header -->
|
||||
|
||||
|
||||
<userpage-nav-header>
|
||||
|
||||
<userpage-nav-avatar>
|
||||
<a class="current" href="/user/pcraxkers/"><img alt="pcraxkers" src="//a.furaffinity.net/1674032155/pcraxkers.gif"/></a>
|
||||
</userpage-nav-avatar>
|
||||
|
||||
<userpage-nav-user-details>
|
||||
<h1><username>
|
||||
~PCraxkers
|
||||
</username></h1>
|
||||
|
||||
<div class="font-small">
|
||||
<username class="user-title">
|
||||
<span class="hideonmobile">Registered:</span> Jul 16, 2021 06:31 </username>
|
||||
</div>
|
||||
</userpage-nav-user-details>
|
||||
|
||||
|
||||
<userpage-nav-interface-buttons>
|
||||
<a class="button standard stop" href="/unwatch/pcraxkers/?key=e7092dc7833fd3e83f6e0b972bf4044234de6127">-Watch</a>
|
||||
<a class="button standard" href="/newpm/pcraxkers/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" style="transform: ;msFilter:;"><path d="M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm0 2v.511l-8 6.223-8-6.222V6h16zM4 18V9.044l7.386 5.745a.994.994 0 0 0 1.228 0L20 9.044 20.002 18H4z"></path></svg></a>
|
||||
|
||||
</userpage-nav-interface-buttons>
|
||||
|
||||
<userpage-nav-links>
|
||||
<ul style="display:flex">
|
||||
<li><h3><a href="/user/pcraxkers/">Home</a></h3></li>
|
||||
<li><h3><a href="/gallery/pcraxkers/">Gallery</a></h3></li>
|
||||
<li><h3><a class="current" href="/scraps/pcraxkers/">Scraps</a></h3></li>
|
||||
<li><h3><a href="/favorites/pcraxkers/">Favs</a></h3></li>
|
||||
<li><h3><a href="/journals/pcraxkers/">Journals</a></h3></li>
|
||||
|
||||
</ul>
|
||||
</userpage-nav-links>
|
||||
|
||||
</userpage-nav-header>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="clear"></div>
|
||||
<!--- /USER NAV --->
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function(){
|
||||
$$('#jsBlockUnblockButton').invoke('observe', 'click', function(evt){
|
||||
var message = 'Are you sure you want to ' + (evt.findElement('a').href.indexOf('/unblock') != -1 ? 'unblock' : 'block') + ' this user?';
|
||||
if (!confirm(message)) {
|
||||
evt.stop();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="page-galleryscraps">
|
||||
<div id="columnpage">
|
||||
<div class="sidebar">
|
||||
|
||||
<div class="folder-list">
|
||||
<div class="user-folders">
|
||||
<div class="container-item-top">
|
||||
<h4>Gallery Folders</h4>
|
||||
</div>
|
||||
<div class="default-folders">
|
||||
<ul style="list-style-type:none">
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/" class="dotted">Main Gallery</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
❯❯ <strong>Scraps</strong>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<ul class="default-group" style="list-style-type:none">
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/folder/1400495/KNOT-ME-OUT-COMIC" title="11 submissions" class="dotted">KNOT ME OUT - COMIC</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/folder/1505828/Hazbin-Hellvua" title="2 submissions" class="dotted">Hazbin/Hellvua</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/folder/1505829/Pablo" title="18 submissions" class="dotted">Pablo</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/gallery/pcraxkers/folder/1510162/Hazbin-Hellvua" title="1 submissions" class="dotted">Hazbin/Hellvua</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="rectangleAd">
|
||||
<div data-id="sidebar" class="rectangleAd__slot format--mediumRectangle jsAdSlot"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
|
||||
|
||||
<div class="leaderboardAd">
|
||||
<div data-id="header_middle" class="leaderboardAd__slot format--leaderboard jsAdSlot"></div>
|
||||
</div>
|
||||
|
||||
<section class="gallery-section">
|
||||
<div class="section-body">
|
||||
<div class="submission-list">
|
||||
|
||||
<div class="gallery-navigation aligncenter">
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="navigation-page-name inline" style="width:32%;">
|
||||
Page #1 </div>
|
||||
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
<!--button class="button standard" type="button">Next</button-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section id="gallery-gallery" class="gallery no-padding aligncenter no-artistname s-200 ">
|
||||
<figure id="sid-56461291" class="r-mature t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/56461291/">
|
||||
<img data-tags="pillow chameleon lizard emo" class="blocked-content" alt="" src="//t.furaffinity.net/56461291@300-1714453508.jpg" data-width="275.616" data-height="200" style="width:275.616px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/56461291/" title="Pillow hug">Pillow hug</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-55797643" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/55797643/">
|
||||
<img data-tags="eggs penetration ovipostion slime wet tease teasing" class="blocked-content" alt="" src="//t.furaffinity.net/55797643@300-1709728979.jpg" data-width="244.214" data-height="200" style="width:244.214px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/55797643/" title="Egg - 2/2">Egg - 2/2</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-55797631" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/55797631/">
|
||||
<img data-tags="penetration eggs ovipostion slime" class="blocked-content" alt="" src="//t.furaffinity.net/55797631@200-1709728773.jpg" data-width="137.889" data-height="200" style="width:137.889px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/55797631/" title="Egg - 1/2">Egg - 1/2</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-49563421" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/49563421/">
|
||||
<img data-tags="ghosthands deer spread legspread" class="blocked-content" alt="" src="//t.furaffinity.net/49563421@400-1666880737.jpg" data-width="300.117" data-height="200" style="width:300.117px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/49563421/" title="Drawing Request: Ghost Hands">Drawing Request: Ghost Hands</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-45148271" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/45148271/">
|
||||
<img data-tags="pablo law comic potion deer dog cum internal love_potion breeding" class="blocked-content" alt="" src="//t.furaffinity.net/45148271@200-1640071386.jpg" data-width="81.406" data-height="200" style="width:81.406px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/45148271/" title=""What's this?" - Commission">"What's this?" - Commission</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-44991684" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/44991684/">
|
||||
<img data-tags="nickick143 dog anthro cloths" class="blocked-content" alt="" src="//t.furaffinity.net/44991684@200-1639138517.jpg" data-width="200" data-height="200" style="width:200px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/44991684/" title=""Don't Spill" - Commission">"Don't Spill" - Commission</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-44271816" class="r-mature t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/44271816/">
|
||||
<img data-tags="human drugs drugged love-potion cum exhausted tired male" class="blocked-content" alt="" src="//t.furaffinity.net/44271816@300-1634890722.jpg" data-width="200.178" data-height="200" style="width:200.178px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/44271816/" title="Settling Down">Settling Down</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-44267946" class="r-mature t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/44267946/">
|
||||
<img data-tags="deer farmer barn hay butt cute sleep sleeping close-up farm resting" class="blocked-content" alt="" src="//t.furaffinity.net/44267946@200-1634862265.jpg" data-width="197.656" data-height="200" style="width:197.656px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/44267946/" title="Resting Up In The Barn">Resting Up In The Barn</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-44225295" class="r-general t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/44225295/">
|
||||
<img data-tags="deer panda bambo burger snack eating friends" class="blocked-content" alt="" src="//t.furaffinity.net/44225295@300-1634614032.jpg" data-width="268.908" data-height="200" style="width:268.908px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/44225295/" title="Snack">Snack</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-42808676" class="r-adult t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/42808676/">
|
||||
<img data-tags="commission cum cumming" class="blocked-content" alt="" src="//t.furaffinity.net/42808676@200-1626439165.jpg" data-width="120.313" data-height="200" style="width:120.313px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/42808676/" title="Going For A Ride">Going For A Ride</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-42808554" class="r-mature t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/42808554/">
|
||||
<img data-tags="pillow chameleon sleeping exposed tired bodypillow goth emo" class="blocked-content" alt="" src="//t.furaffinity.net/42808554@300-1626438393.jpg" data-width="241.509" data-height="200" style="width:241.509px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/42808554/" title="Pillows">Pillows</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-42808287" class="r-mature t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/42808287/">
|
||||
<img data-tags="deer upsidedown shy embarrassed firsttime clumsy" class="blocked-content" alt="" src="//t.furaffinity.net/42808287@200-1626436484.jpg" data-width="200" data-height="200" style="width:200px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/42808287/" title=""Like this?"">"Like this?"</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure id="sid-42808246" class="r-mature t-image">
|
||||
<b>
|
||||
<u>
|
||||
<a href="/view/42808246/">
|
||||
<img data-tags="" class="blocked-content" alt="" src="//t.furaffinity.net/42808246@200-1626436223.jpg" data-width="200" data-height="200" style="width:200px; height:200px" loading="lazy" decoding="async" />
|
||||
<i title="Click for description"></i>
|
||||
</a>
|
||||
</u>
|
||||
</b>
|
||||
<figcaption>
|
||||
<p>
|
||||
<a href="/view/42808246/" title="Fursonas, Am I right?">Fursonas, Am I right?</a>
|
||||
</p>
|
||||
<p>
|
||||
<i>by</i> <a href="/user/pcraxkers/" title="PCraxkers">PCraxkers</a>
|
||||
</p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</section>
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_gallery', 'gallery-gallery']);
|
||||
</script>
|
||||
|
||||
<div class="gallery-navigation aligncenter">
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="inline" style="width:32%">
|
||||
<div class="mobile-button">
|
||||
<button type="button" class="button standard toggle_titles">Disable Titles</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="inline" style="width:32%">
|
||||
|
||||
<!--button class="button standard" type="button">Next</button-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var descriptions = {"56461291":{"title":"Pillow hug","description":"0.0","username":"PCraxkers","lower":"pcraxkers"},"55797643":{"title":"Egg - 2\/2","description":"egg egg","username":"PCraxkers","lower":"pcraxkers"},"55797631":{"title":"Egg - 1\/2","description":"egg","username":"PCraxkers","lower":"pcraxkers"},"49563421":{"title":"Drawing Request: Ghost Hands","description":"Grabby Grabby","username":"PCraxkers","lower":"pcraxkers"},"45148271":{"title":""What's this?" - Commission","description":"Commisson for @CY_Law ft. Pablo\r\n\r\nIntersex Alt: https:\/\/twitter.com\/PCraxkers\/status\/1473190031044997120","username":"PCraxkers","lower":"pcraxkers"},"44991684":{"title":""Don't Spill" - Commission","description":"Commission for nicky_unsafe (tw)","username":"PCraxkers","lower":"pcraxkers"},"44271816":{"title":"Settling Down","description":"Peri Sketch","username":"PCraxkers","lower":"pcraxkers"},"44267946":{"title":"Resting Up In The Barn","description":"I don't normally draw backgrounds or do detailed lighting (If you can even call this "detailed") but this was still good practice as I do want to get more confident with background drawings.","username":"PCraxkers","lower":"pcraxkers"},"44225295":{"title":"Snack","description":"2 buds having a snack\r\n\r\n(Panda guy belongs to my friend)","username":"PCraxkers","lower":"pcraxkers"},"42808676":{"title":"Going For A Ride","description":"Commission I did for @\/gooeybea and @\/otto_erottic (Twitter)","username":"PCraxkers","lower":"pcraxkers"},"42808554":{"title":"Pillows","description":"This is Zak enjoying his pillow","username":"PCraxkers","lower":"pcraxkers"},"42808287":{"title":""Like this?"","description":"(\u2018-\u2019*)","username":"PCraxkers","lower":"pcraxkers"},"42808246":{"title":"Fursonas, Am I right?","description":"(\u2032\ua20d\u03c9\ua20d\u2035)","username":"PCraxkers","lower":"pcraxkers"}};
|
||||
</script>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- /<div id="site-content"> -->
|
||||
|
||||
<div id="footer">
|
||||
<div class="auto_link footer-links">
|
||||
<span class="hideonmobile">
|
||||
<a href="/advertising">Advertise</a> |
|
||||
<a href="/plus"><img style="position:relative;top:4px" src="/themes/beta/img/the-golden-pawb.png"> Get FA+</a> |
|
||||
<a href="https://shop.furaffinity.net/"><img style="position:relative;top:4px" src="/themes/beta/img/icons/merch_store_icon.png"> Merch Store</a> |
|
||||
<a href="/tos">Terms of Service</a> |
|
||||
<a href="/privacy">Privacy</a> |
|
||||
<a href="/coc">Code of Conduct</a> |
|
||||
<a href="/aup">Upload Policy</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footerAds">
|
||||
<div class="footerAds__column">
|
||||
<div class="footerAds__slot format--faMediumRectangle jsAdSlot" data-id="footer_left"></div>
|
||||
</div>
|
||||
|
||||
<div class="footerAds__column">
|
||||
<div class="footerAds__slot footerAds__slot--faLogo">
|
||||
<img src="/themes/beta/img/banners/fa_logo.png?v2">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footerAds__column">
|
||||
<div class="footerAds__slot format--faSmallRectangle jsAdSlot" data-id="footer_right_top"></div>
|
||||
<div class="footerAds__slot format--faSmallRectangle jsAdSlot" data-id="footer_right_bottom"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="online-stats">
|
||||
86802 <strong><span title="Measured in the last 900 seconds">Users online</span></strong> —
|
||||
5181 <strong>guests</strong>,
|
||||
15405 <strong>registered</strong>
|
||||
and 66216 <strong>other</strong>
|
||||
<!-- Online Counter Last Update: Wed, 19 Feb 2025 11:13:00 -0800 -->
|
||||
</div>
|
||||
<small>Limit bot activity to periods with less than 10k registered users online.</small>
|
||||
|
||||
<br><br>
|
||||
<strong>© 2005-2025 Frost Dragon Art LLC</strong>
|
||||
|
||||
<div class="footnote">
|
||||
Server Time: Feb 19, 2025 11:13 AM </div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="cookie-notification" class="default-hidden">
|
||||
<div class="text-container">This website uses cookies to enhance your browsing experience. <a href="/privacy" target="_blank">Learn More</a></div>
|
||||
<div class="button-container"><button class="accept">I Consent</button></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function(){
|
||||
$$('#cookie-notification button').invoke('observe', 'click', function() {
|
||||
setCookie('cc', 1, expiryyear, '/');
|
||||
$('cookie-notification').addClassName('default-hidden');
|
||||
});
|
||||
$('cookie-notification').removeClassName('default-hidden');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- <div id="main-window"> -->
|
||||
|
||||
<!--
|
||||
Server Local Time: Feb 19, 2025 11:13 AM <br />
|
||||
Page generated in 0.011 seconds [ 22.6% PHP, 77.4% SQL ] (24 queries) -->
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function() {
|
||||
var exists = getCookie('sz');
|
||||
var saved = save_viewport_size();
|
||||
if((!exists && saved) || (exists && saved && exists != saved)) {
|
||||
//window.location.reload();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="/themes/beta/js/censor.js?u=2025011001"></script>
|
||||
|
||||
<script type="text/javascript" src="/themes/beta/js/prototype.1.7.3.min.js"></script>
|
||||
<script type="text/javascript" src="/themes/beta/js/script.js?u=2025011001"></script>
|
||||
<script type="text/javascript">
|
||||
var server_timestamp = 1739992388;
|
||||
var client_timestamp = ((new Date()).getTime())/1000;
|
||||
var server_timestamp_delta = server_timestamp - client_timestamp;
|
||||
var sfw_cookie_name = 'sfw';
|
||||
var news_cookie_name = 'n';
|
||||
|
||||
|
||||
|
||||
|
||||
var adData = {"sizeConfig":[{"labels":["desktopWide"],"mediaQuery":"(min-width: 1065px)","sizesSupported":[[728,90],[300,250],[300,168],[300,600],[160,600]]},{"labels":["desktopNarrow"],"mediaQuery":"(min-width: 720px) and (max-width: 1064px)","sizesSupported":[[728,90],[300,250],[300,168]]},{"labels":["mobile"],"mediaQuery":"(min-width: 0px) and (max-width: 719px)","sizesSupported":[[320,50],[300,50],[320,100]]}],"slotConfig":{"header_middle":{"containerSize":{"desktopWide":[728,100],"desktopNarrow":[728,100],"mobile":[320,100]},"providerPriority":["inhouse"]},"above_content":{"containerSize":{"desktopWide":[728,100],"desktopNarrow":[728,100],"mobile":[320,100]},"providerPriority":["inhouse"]},"sidebar":{"containerSize":{"desktopWide":[300,250]},"providerPriority":["inhouse"]},"sidebar_tall":{"containerSize":{"desktopWide":[300,600]},"providerPriority":["inhouse"]},"footer_left":{"containerSize":{"desktopWide":[300,200],"desktopNarrow":[300,200],"mobile":[300,200]},"providerPriority":["inhouse"]},"footer_right_top":{"containerSize":{"desktopWide":[300,90],"desktopNarrow":[300,90],"mobile":[300,90]},"providerPriority":["inhouse"]},"footer_right_bottom":{"containerSize":{"desktopWide":[300,90],"desktopNarrow":[300,90],"mobile":[300,90]},"providerPriority":["inhouse"]},"header_right_left":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]},"header_right_right":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]},"sidebar_top":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]},"sidebar_bottom":{"containerSize":{"desktopWide":[300,90]},"providerPriority":["inhouse"]}},"providerConfig":{"inhouse":{"domain":"https:\/\/rv.furaffinity.net","dataPath":"\/live\/www\/delivery\/spc.php","dataVariableName":"OA_output"}},"adConfig":{"inhouse":{"header_middle":{"default":{"tagId":11,"tagSize":[728,90]},"sizeOverride":{"mobile":{"tagId":19,"tagSize":[300,90]}}},"above_content":{"default":{"tagId":15,"tagSize":[728,90]},"sizeOverride":{"mobile":{"tagId":17,"tagSize":[300,90]}}},"sidebar":{"default":{"tagId":13,"tagSize":[300,250]}},"sidebar_tall":{"default":{"tagId":13,"tagSize":[300,250]}},"footer_left":{"default":{"tagId":10,"tagSize":[300,200]}},"footer_right_top":{"default":{"tagId":5,"tagSize":[300,90]}},"footer_right_bottom":{"default":{"tagId":6,"tagSize":[300,90]}},"header_right_left":{"default":{"tagId":2,"tagSize":[300,90]}},"header_right_right":{"default":{"tagId":4,"tagSize":[300,90]}},"sidebar_top":{"default":{"tagId":2,"tagSize":[300,90]}},"sidebar_bottom":{"default":{"tagId":4,"tagSize":[300,90]}}}}};
|
||||
window.fad = new adManager(adData.sizeConfig, adData.slotConfig, adData.providerConfig, adData.adConfig, 1);
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(function() {
|
||||
var ddmenuOptions = {
|
||||
menuId: "ddmenu",
|
||||
linkIdToMenuHtml: null,
|
||||
open: "onmouseover", // or "onclick"
|
||||
delay: 1,
|
||||
speed: 1,
|
||||
keysNav: true,
|
||||
license: "2c1f72"
|
||||
};
|
||||
var ddmenu = new Ddmenu(ddmenuOptions);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
<!---
|
||||
|\ /|
|
||||
/_^ ^_\
|
||||
\v/
|
||||
|
||||
The fox goes "moo!"
|
||||
--->
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user