add rating parsing
This commit is contained in:
@@ -103,7 +103,13 @@ class Domain::Fa::Parser::Page < Domain::Fa::Parser::Base
|
||||
|
||||
def probably_listings_page?
|
||||
# center.flow seems to wrap all lists of submissions
|
||||
@page.css("center.flow").first || @page.css("section.submission-list") ? true : false
|
||||
case @page_version
|
||||
when VERSION_0, VERSION_1
|
||||
@page.css("center.flow").first || @page.css("section.submission-list") ? true : false
|
||||
when VERSION_2
|
||||
(@page.css(".submission-list").first || @page.css("#gallery-browse").first) ? true : false
|
||||
else unimplemented_version!
|
||||
end
|
||||
end
|
||||
|
||||
def user_page
|
||||
@@ -121,7 +127,13 @@ class Domain::Fa::Parser::Page < Domain::Fa::Parser::Base
|
||||
|
||||
def probably_submission?
|
||||
# @page.css(".alt1.actions").first ? true : false
|
||||
@page.css("#submissionImg").first ? true : false
|
||||
case @page_version
|
||||
when VERSION_0, VERSION_1
|
||||
@page.css("#submissionImg").first ? true : false
|
||||
when VERSION_2
|
||||
@page.css(".submission-content").first ? true : false
|
||||
else unimplemented_version!
|
||||
end
|
||||
end
|
||||
|
||||
def submission
|
||||
|
||||
@@ -95,6 +95,22 @@ class Domain::Fa::Parser::SubmissionParserHelper < Domain::Fa::Parser::Base
|
||||
end
|
||||
end
|
||||
|
||||
def rating
|
||||
case @page_version
|
||||
when VERSION_2
|
||||
if @elem.css(".rating-box.mature").first
|
||||
:mature
|
||||
elsif @elem.css(".rating-box.adult").first
|
||||
:adult
|
||||
elsif @elem.css(".rating-box.general").first
|
||||
:general
|
||||
else
|
||||
raise("unable to determine rating")
|
||||
end
|
||||
else unimplemented_version!
|
||||
end
|
||||
end
|
||||
|
||||
def category
|
||||
@category ||= case @page_version
|
||||
when VERSION_0, VERSION_1
|
||||
|
||||
1121
test/fixtures/files/domain/fa/parser/redux/submission_20340491.html
vendored
Normal file
1121
test/fixtures/files/domain/fa/parser/redux/submission_20340491.html
vendored
Normal file
File diff suppressed because one or more lines are too long
2772
test/fixtures/files/domain/fa/parser/redux/submission_21956745_flash.html
vendored
Normal file
2772
test/fixtures/files/domain/fa/parser/redux/submission_21956745_flash.html
vendored
Normal file
File diff suppressed because it is too large
Load Diff
995
test/fixtures/files/domain/fa/parser/redux/submission_51067352_adult.html
vendored
Normal file
995
test/fixtures/files/domain/fa/parser/redux/submission_51067352_adult.html
vendored
Normal file
@@ -0,0 +1,995 @@
|
||||
|
||||
<!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>The Second Kind of Tarpit by CleverDerpy -- 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" />
|
||||
|
||||
|
||||
<!-- og -->
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="The Second Kind of Tarpit by CleverDerpy" />
|
||||
<meta property="og:url" content="https://www.furaffinity.net/view/51067352/" />
|
||||
<meta property="og:description" content="Rosie Shaymin is going to be inside the massive balls of Tarryn, sirnopesalot112 's lovely Tarboi God!. Already enjoying the sensat ..." />
|
||||
<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="The Second Kind of Tarpit by CleverDerpy" />
|
||||
<meta name="twitter:description" content="Rosie Shaymin is going to be inside the massive balls of Tarryn, sirnopesalot112 's lovely Tarboi God!. Already enjoying the sensat ..." />
|
||||
<meta name="twitter:url" content="https://www.furaffinity.net/view/51067352/" />
|
||||
<meta name="twitter:label1" content="Created On" />
|
||||
<meta name="twitter:data1" content="February 18, 2023" />
|
||||
<meta name="twitter:label2" content="Rating" />
|
||||
<meta name="twitter:data2" content="Adult" />
|
||||
<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-6.13.0-fa.js'};
|
||||
</script>
|
||||
<script type="text/javascript" src="/themes/beta/js/common.js?u=2023011700"></script>
|
||||
<link type="text/css" rel="stylesheet" href="/themes/beta/css/ui_theme_dark.css?u=2023011700" />
|
||||
|
||||
<!-- 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=2023011700" as="script" />
|
||||
|
||||
</head>
|
||||
|
||||
<!-- EU request: no -->
|
||||
<body data-static-path="/themes/beta" id="pageid-submission">
|
||||
|
||||
<!-- 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>
|
||||
<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/">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/fur-affinity">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="3d571edd3040f6bd34d5c9de2c26f676a79464e8"/></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="31,533 Submission Notifications">31533S</a>
|
||||
<a class="notification-container inline" href="/msg/others/#journals" title="15,201 Journal Notifications">15201J</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/fur-affinity">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 menu-space-saver"><a class="top-heading hideontablet" href="/plus/"><img style="position:relative;top:3px" src="/themes/beta/img/the-golden-pawb.png"> FA+</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="31,533 Submission Notifications">31533S</a>
|
||||
<a class="notification-container inline" href="/msg/others/#journals" title="15,201 Journal Notifications">15201J</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/">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="3d571edd3040f6bd34d5c9de2c26f676a79464e8"/></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>
|
||||
|
||||
|
||||
<div id="main-window" class="footer-mobile-tweak g-wrapper">
|
||||
<div id="header">
|
||||
|
||||
<!-- site banner -->
|
||||
<site-banner>
|
||||
<a href="/"><img src="/themes/beta/img/banners/logo/fa-banner-winter.jpg"></a>
|
||||
</site-banner>
|
||||
|
||||
<a name="top"></a>
|
||||
</div>
|
||||
|
||||
<div id="site-content">
|
||||
<!-- /header -->
|
||||
|
||||
|
||||
<div id="submission_page" class="page-content-type-image">
|
||||
|
||||
<div id="columnpage">
|
||||
|
||||
<div class="submission-sidebar">
|
||||
|
||||
|
||||
<div class="sidebarAds">
|
||||
<div data-id="sidebar_top" class="sidebarAds__slot format--faSmallRectangle jsAdSlot"></div>
|
||||
<div data-id="sidebar_bottom" class="sidebarAds__slot format--faSmallRectangle jsAdSlot"></div>
|
||||
</div>
|
||||
|
||||
<section class="stats-container text">
|
||||
<div class="views">
|
||||
<span class="font-large">201</span><br>
|
||||
<span class="font-small highlight">Views</span>
|
||||
</div>
|
||||
|
||||
<div class="comments">
|
||||
<span class="font-large">0</span><br>
|
||||
<span class="font-small highlight">Comments</span>
|
||||
</div>
|
||||
|
||||
<div class="favorites">
|
||||
<span class="font-large">15</span><br>
|
||||
<span class="font-small highlight">Favorites</span>
|
||||
</div>
|
||||
|
||||
<div class="rating">
|
||||
<span class="font-large rating-box inline adult"> Adult</span><br>
|
||||
<span class="font-small highlight">Rating</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="buttons">
|
||||
<div class="fav"><a href="/fav/51067352/?key=55993e91b5ec69977d536362a31169e1ddbd795e">+ Fav</a></div>
|
||||
<div class="download"><a href="//d.furaffinity.net/art/cleverderpy/1676764142/1676764142.cleverderpy_tarryn_and_rosie_shaymin_tar_cv_00001.png">Download</a></div>
|
||||
<div class="note"><a href="/newpm/cleverderpy/">Note</a></div>
|
||||
</section>
|
||||
|
||||
<section class="info text">
|
||||
<div><strong class="highlight">Category</strong> <div><span class="category-name">Artwork (Digital)</span> / <span class="type-name">Vore</span></div></div> <div><strong class="highlight">Species</strong> <span>Unspecified / Any</span></div> <div><strong class="highlight">Gender</strong> <span>Multiple characters</span></div> <div><strong class="highlight">Size</strong> <span>1920 x 1080</span></div> </section>
|
||||
|
||||
<section class="tags-row">
|
||||
<span class="tags"><a href="/search/@keywords pokemon">pokemon</a></span>
|
||||
<span class="tags"><a href="/search/@keywords rosie">rosie</a></span>
|
||||
<span class="tags"><a href="/search/@keywords shaymin">shaymin</a></span>
|
||||
<span class="tags"><a href="/search/@keywords hedgegog">hedgegog</a></span>
|
||||
<span class="tags"><a href="/search/@keywords naked">naked</a></span>
|
||||
<span class="tags"><a href="/search/@keywords nude">nude</a></span>
|
||||
<span class="tags"><a href="/search/@keywords female">female</a></span>
|
||||
<span class="tags"><a href="/search/@keywords anthro">anthro</a></span>
|
||||
<span class="tags"><a href="/search/@keywords cock">cock</a></span>
|
||||
<span class="tags"><a href="/search/@keywords vore">vore</a></span>
|
||||
<span class="tags"><a href="/search/@keywords tar">tar</a></span>
|
||||
<span class="tags"><a href="/search/@keywords quicksand">quicksand</a></span>
|
||||
<span class="tags"><a href="/search/@keywords sinking">sinking</a></span>
|
||||
<span class="tags"><a href="/search/@keywords stuck">stuck</a></span>
|
||||
<span class="tags"><a href="/search/@keywords tarryn">tarryn</a></span>
|
||||
<span class="tags"><a href="/search/@keywords sirnopesalot112">sirnopesalot112</a></span>
|
||||
<span class="tags"><a href="/search/@keywords sinnoh">sinnoh</a></span>
|
||||
<span class="tags"><a href="/search/@keywords diamond">diamond</a></span>
|
||||
<span class="tags"><a href="/search/@keywords pearl">pearl</a></span>
|
||||
<span class="tags"><a href="/search/@keywords platinum">platinum</a></span>
|
||||
<span class="tags"><a href="/search/@keywords mythical">mythical</a></span>
|
||||
<span class="tags"><a href="/search/@keywords grass">grass</a></span>
|
||||
<span class="tags"><a href="/search/@keywords cleverderpy">cleverderpy</a></span>
|
||||
<span class="tags"><a href="/search/@keywords cv">cv</a></span>
|
||||
<span class="tags"><a href="/search/@keywords pier">pier</a></span>
|
||||
<span class="tags"><a href="/search/@keywords dock">dock</a></span>
|
||||
<span class="tags"><a href="/search/@keywords pumping">pumping</a></span>
|
||||
<span class="tags"><a href="/search/@keywords messy">messy</a></span>
|
||||
<span class="tags"><a href="/search/@keywords wam">wam</a></span>
|
||||
</section>
|
||||
|
||||
|
||||
<div class="rectangleAd">
|
||||
<div data-id="sidebar" class="rectangleAd__slot format--mediumRectangle jsAdSlot"></div>
|
||||
</div>
|
||||
|
||||
<section class="shinies-promo text">
|
||||
<div class="shinies-promo-star">★</div>
|
||||
<div class="shinies-promo-text"><a href="/user/cleverderpy/#tip">Like CleverDerpy's stuff? Support them by sending some Shinies their way!</a></div>
|
||||
</section>
|
||||
|
||||
<section class="minigallery-more">
|
||||
<h3>See more from <a href="/gallery/cleverderpy/">CleverDerpy</a></h3>
|
||||
|
||||
<div class="preview-gallery hideonmobile">
|
||||
<div class="preview-gallery-container">
|
||||
<a href="/view/51007825/"><img class="preview-gallery-image" title="Valantine's Day Card 2023!" src="//t.furaffinity.net/51007825@200-1676384797.jpg"/></a>
|
||||
</div>
|
||||
<div class="preview-gallery-container">
|
||||
<a href="/view/50942074/"><img class="preview-gallery-image" title="The Great and Powerful!" src="//t.furaffinity.net/50942074@200-1675948043.jpg"/></a>
|
||||
</div>
|
||||
<div class="preview-gallery-container">
|
||||
<a href="/view/50941989/"><img class="preview-gallery-image" title="Belly Dancer Deerlia Deerling" src="//t.furaffinity.net/50941989@200-1675947373.jpg"/></a>
|
||||
</div>
|
||||
<div class="preview-gallery-container">
|
||||
<a href="/view/50924842/"><img class="preview-gallery-image" title="Deerlia... Lopunny? -Year of the Rabbit-" src="//t.furaffinity.net/50924842@200-1675820723.jpg"/></a>
|
||||
</div>
|
||||
<div class="preview-gallery-container">
|
||||
<a href="/view/50924800/"><img class="preview-gallery-image" title="Rosie... Cinderace? -Year of the Rabbit-" src="//t.furaffinity.net/50924800@200-1675820464.jpg"/></a>
|
||||
</div>
|
||||
<div class="preview-gallery-container">
|
||||
<a href="/view/50502079/"><img class="preview-gallery-image" title="Approaching the Martian Roche Limit!" src="//t.furaffinity.net/50502079@200-1672997142.jpg"/></a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="folder-list-container text">
|
||||
<h3>Listed in Folders</h3>
|
||||
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/38111/Cock-Vore/" title="62 submissions" class="dotted">
|
||||
<strong>Vore</strong> -
|
||||
<span>Cock Vore</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/38133/Tar/" title="119 submissions" class="dotted">
|
||||
<strong>Quicksand</strong> -
|
||||
<span>Tar</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/38204/Stuck-or-tied-up/" title="690 submissions" class="dotted">
|
||||
<strong>Bondage</strong> -
|
||||
<span>Stuck or tied up</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/41707/Special-Things/" title="765 submissions" class="dotted">
|
||||
<span>Special Things</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/84356/Art-Trades/" title="516 submissions" class="dotted">
|
||||
<span>Art Trades</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/156873/Request-Remix/" title="454 submissions" class="dotted">
|
||||
<span>Request Remix</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/207777/Pokemon-Neo/" title="359 submissions" class="dotted">
|
||||
<span>Pokemon Neo</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/569384/True-Chars/" title="87 submissions" class="dotted">
|
||||
<span>True Chars</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="submission-content">
|
||||
|
||||
|
||||
<div class="leaderboardAd">
|
||||
<div data-id="header_middle" class="leaderboardAd__slot format--leaderboard jsAdSlot"></div>
|
||||
</div>
|
||||
|
||||
<div class="aligncenter submission-area">
|
||||
<img id="submissionImg" title="Click to change the View" alt="The Second Kind of Tarpit" data-fullview-src="//d.furaffinity.net/art/cleverderpy/1676764142/1676764142.cleverderpy_tarryn_and_rosie_shaymin_tar_cv_00001.png" data-preview-src="//t.furaffinity.net/51067352@600-1676764142.jpg" src="//d.furaffinity.net/art/cleverderpy/1676764142/1676764142.cleverderpy_tarryn_and_rosie_shaymin_tar_cv_00001.png" style="cursor: pointer;" />
|
||||
</div>
|
||||
|
||||
|
||||
<div class="aligncenter auto_link hideonfull1 favorite-nav">
|
||||
|
||||
<a class="button standard mobile-fix" href="/fav/51067352/?key=55993e91b5ec69977d536362a31169e1ddbd795e">+Fav</a>
|
||||
|
||||
<a class="button standard mobile-fix" href="/gallery/cleverderpy/" title="1213 submissions">Main Gallery</a>
|
||||
<a class="button standard mobile-fix" href="//d.furaffinity.net/art/cleverderpy/1676764142/1676764142.cleverderpy_tarryn_and_rosie_shaymin_tar_cv_00001.png">Download</a>
|
||||
|
||||
<a class="button standard mobile-fix" href="/newpm/cleverderpy/">Note</a>
|
||||
<a href="/view/51007825/" class="button standard mobile-fix">Next</a>
|
||||
</div>
|
||||
|
||||
<section>
|
||||
<div class="section-header">
|
||||
<div class="submission-id-container">
|
||||
<div class="submission-id-avatar">
|
||||
<a href="/user/cleverderpy/"><img class="submission-user-icon floatleft avatar" src="//a.furaffinity.net/1673878431/cleverderpy.gif"></a>
|
||||
</div>
|
||||
|
||||
<div class="submission-id-sub-container">
|
||||
<div class="submission-title">
|
||||
<h2><p>The Second Kind of Tarpit</p></h2>
|
||||
</div>
|
||||
By <a href="/user/cleverderpy/"><strong>CleverDerpy</strong></a>,
|
||||
<span class="hideontablet hideondesktop"><br> </span>
|
||||
<span class="hideonmobile">posted </span>
|
||||
<strong><span title="Feb 18, 2023 06:49 PM" class="popup_date">a day ago</span></strong>
|
||||
Digital Artist | <a href="/user/cleverderpy/#tip">Support me with Shinies!</a> </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<div class="submission-description user-submitted-links">
|
||||
Rosie Shaymin is going to be inside the massive balls of Tarryn, <a href="/user/sirnopesalot112" class="iconusername"><img src="//a.furaffinity.net/20230219/sirnopesalot112.gif" align="middle" title="sirnopesalot112" alt="sirnopesalot112" /></a> 's lovely Tarboi God!<br />
|
||||
Already enjoying the sensation, she slowly pumps her legs into his gooey Cock~<br />
|
||||
---<br />
|
||||
Rosie Shaymin belongs to me, <a href="/user/cleverderpy" class="iconusername"><img src="//a.furaffinity.net/20230219/cleverderpy.gif" align="middle" title="cleverderpy" alt="cleverderpy" /></a><br />
|
||||
Tarryn belongs to <a href="/user/sirnopesalot112" class="iconusername"><img src="//a.furaffinity.net/20230219/sirnopesalot112.gif" align="middle" title="sirnopesalot112" alt="sirnopesalot112" /></a><br />
|
||||
Shaymin (Land Forme) belongs to Nintendo/Game Freak/TPCi<br />
|
||||
---<br />
|
||||
Created by CleverDerpy Arts, 2012-2023<br />
|
||||
(Some Rights Reserved)
|
||||
<div class="submission-footer">
|
||||
<hr />
|
||||
For tips, send me Shinies here: <a href="https://www.furaffinity.net/user/cleverderpy/#tip" title="https://www.furaffinity.net/user/cleverderpy/#tip" class="auto_link">https://www.furaffinity.net/user/cleverderpy/#tip</a> <br />
|
||||
Or go here for my PayPal directly, for tips or commissions, send a note first! <a href="https://paypal.me/cleverderpy" title="https://paypal.me/cleverderpy" class="auto_link">https://paypal.me/cleverderpy</a> (Do not leave Notes on Paypal when paying, thank you!)<br />
|
||||
---<br />
|
||||
Visit for your Requests, Trades, Gifts, and special orders here: <a href="https://forms.gle/bmrTzqFsmZaAK4Z46" title="https://forms.gle/bmrTzqFsmZaAK4Z46" class="auto_link">https://forms.gle/bmrTzqFsmZaAK4Z46</a><br />
|
||||
---<br />
|
||||
For Fastest Service reach out on my discord: Deerlia Deerling#8967 (Please mention you found me on FA or that you're from FA, thanks!) </div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- mobile view -->
|
||||
<div class="section-footer section-footer-padding hideonfull alignright">
|
||||
<div class="submission-stats-container">
|
||||
<div class="views">
|
||||
<span class="font-large">201</span><br>
|
||||
<span class="font-small highlight">Views</span>
|
||||
</div>
|
||||
|
||||
<div class="favorites">
|
||||
<span class="font-large">15</span><br>
|
||||
<span class="font-small highlight">Favorites</span>
|
||||
</div>
|
||||
|
||||
<div class="comments">
|
||||
<span class="font-large">0</span><br>
|
||||
<span class="font-small highlight">Comments</span>
|
||||
</div>
|
||||
|
||||
<div class="rating">
|
||||
<span class="font-large rating-box inline adult"> Adult</span><br>
|
||||
<span class="font-small highlight">Rating</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- mobile view -->
|
||||
<div class="hideonfull">
|
||||
<section class="stats-mobile">
|
||||
<div class="section-body info">
|
||||
<div><strong class="highlight">Category</strong> <span class="category-name">Artwork (Digital)</span> / <span class="type-name">Vore</span></div> <div><strong class="highlight">Species</strong> <span>Unspecified / Any</span></div> <div><strong class="highlight">Gender</strong> <span>Multiple characters</span></div> <div><strong class="highlight">Size</strong> <span>1920 x 1080px</span></div> </div>
|
||||
</section>
|
||||
|
||||
<section class="tags-mobile">
|
||||
<div class="section-body">
|
||||
<span class="tags"><a href="/search/@keywords pokemon">pokemon</a></span>
|
||||
<span class="tags"><a href="/search/@keywords rosie">rosie</a></span>
|
||||
<span class="tags"><a href="/search/@keywords shaymin">shaymin</a></span>
|
||||
<span class="tags"><a href="/search/@keywords hedgegog">hedgegog</a></span>
|
||||
<span class="tags"><a href="/search/@keywords naked">naked</a></span>
|
||||
<span class="tags"><a href="/search/@keywords nude">nude</a></span>
|
||||
<span class="tags"><a href="/search/@keywords female">female</a></span>
|
||||
<span class="tags"><a href="/search/@keywords anthro">anthro</a></span>
|
||||
<span class="tags"><a href="/search/@keywords cock">cock</a></span>
|
||||
<span class="tags"><a href="/search/@keywords vore">vore</a></span>
|
||||
<span class="tags"><a href="/search/@keywords tar">tar</a></span>
|
||||
<span class="tags"><a href="/search/@keywords quicksand">quicksand</a></span>
|
||||
<span class="tags"><a href="/search/@keywords sinking">sinking</a></span>
|
||||
<span class="tags"><a href="/search/@keywords stuck">stuck</a></span>
|
||||
<span class="tags"><a href="/search/@keywords tarryn">tarryn</a></span>
|
||||
<span class="tags"><a href="/search/@keywords sirnopesalot112">sirnopesalot112</a></span>
|
||||
<span class="tags"><a href="/search/@keywords sinnoh">sinnoh</a></span>
|
||||
<span class="tags"><a href="/search/@keywords diamond">diamond</a></span>
|
||||
<span class="tags"><a href="/search/@keywords pearl">pearl</a></span>
|
||||
<span class="tags"><a href="/search/@keywords platinum">platinum</a></span>
|
||||
<span class="tags"><a href="/search/@keywords mythical">mythical</a></span>
|
||||
<span class="tags"><a href="/search/@keywords grass">grass</a></span>
|
||||
<span class="tags"><a href="/search/@keywords cleverderpy">cleverderpy</a></span>
|
||||
<span class="tags"><a href="/search/@keywords cv">cv</a></span>
|
||||
<span class="tags"><a href="/search/@keywords pier">pier</a></span>
|
||||
<span class="tags"><a href="/search/@keywords dock">dock</a></span>
|
||||
<span class="tags"><a href="/search/@keywords pumping">pumping</a></span>
|
||||
<span class="tags"><a href="/search/@keywords messy">messy</a></span>
|
||||
<span class="tags"><a href="/search/@keywords wam">wam</a></span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="folders-mobile">
|
||||
<div class="section-body">
|
||||
<h3>Listed in Folders</h3>
|
||||
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/38111/Cock-Vore/" title="62 submissions" class="dotted">
|
||||
<strong>Vore</strong> -
|
||||
<span>Cock Vore</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/38133/Tar/" title="119 submissions" class="dotted">
|
||||
<strong>Quicksand</strong> -
|
||||
<span>Tar</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/38204/Stuck-or-tied-up/" title="690 submissions" class="dotted">
|
||||
<strong>Bondage</strong> -
|
||||
<span>Stuck or tied up</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/41707/Special-Things/" title="765 submissions" class="dotted">
|
||||
<span>Special Things</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/84356/Art-Trades/" title="516 submissions" class="dotted">
|
||||
<span>Art Trades</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/156873/Request-Remix/" title="454 submissions" class="dotted">
|
||||
<span>Request Remix</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/207777/Pokemon-Neo/" title="359 submissions" class="dotted">
|
||||
<span>Pokemon Neo</span>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/gallery/cleverderpy/folder/569384/True-Chars/" title="87 submissions" class="dotted">
|
||||
<span>True Chars</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="comments-list">
|
||||
|
||||
|
||||
<div id="responsebox" class="aligncenter">
|
||||
<form name="myform" method="post" action="/view/51067352/" id="add_comment_form">
|
||||
<div class="section-body no-padding">
|
||||
<input type="hidden" name="f" value="0"/>
|
||||
<input type="hidden" name="action" value="reply" id="form-action">
|
||||
<input type="hidden" name="replyto" id="form-replyto" value=""/>
|
||||
<textarea id="JSMessage" name="reply" class="textarea textarearesize" placeholder="Type your comment here."></textarea>
|
||||
</div>
|
||||
|
||||
<div class="section-footer alignright">
|
||||
<span class="floatleft" style="padding: 7px 0 0 0"><i class="bbcodeformat b hand" title="Bold (CTRL+B)" onclick="performInsert(this, '[b]', '[/b]');"></i>
|
||||
<i class="bbcodeformat i hand" title="Italic (CTRL+I)" onclick="performInsert(this, '[i]', '[/i]');"></i>
|
||||
<i class="bbcodeformat u hand" title="Underlined (CTRL+U)" onclick="performInsert(this, '[u]', '[/u]');"></i>
|
||||
|
||||
<i class="bbcodeformat align_left hand" title="Align Left" onclick="performInsert(this, '[left]', '[/left]');"></i>
|
||||
<i class="bbcodeformat align_center hand" title="Align Center" onclick="performInsert(this, '[center]', '[/center]');"></i>
|
||||
<i class="bbcodeformat align_right hand" title="Align Right" onclick="performInsert(this, '[right]', '[/right]');"></i>
|
||||
</span>
|
||||
<button class="go post-comment" type="submit" name="submit" value="Post Comment">Post Comment</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_bbcode_hotkeys', 'JSMessage']);
|
||||
</script>
|
||||
|
||||
|
||||
<div id="comments-submission">
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
_fajs.push(['init_reply_links', 'comments-submission']);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
var ctrl_key_hold = false;
|
||||
var shift_key_hold = false;
|
||||
var comment_edit_window_sec = 300;
|
||||
|
||||
_fajs.push(function(){
|
||||
document.observe('keydown', function(evt){
|
||||
if(evt.keyCode == 16)
|
||||
shift_key_hold = true;
|
||||
if(evt.keyCode == 17)
|
||||
ctrl_key_hold = true;
|
||||
});
|
||||
document.observe('keyup', function(evt){
|
||||
var selected_tags = $$('#keywords .keyword-active');
|
||||
var search_keywords = '';
|
||||
|
||||
var delimiter = shift_key_hold ? ' | ' : ' ';
|
||||
for(var i=0, cnt=selected_tags.length; i<cnt; i++)
|
||||
search_keywords += selected_tags[i].innerHTML.replace(/[^-_\w\d ]+/, '') + delimiter;
|
||||
|
||||
if(search_keywords)
|
||||
{
|
||||
search_keywords = search_keywords.substr(0, search_keywords.length-(shift_key_hold?3:1));
|
||||
var url = '/search/@keywords '+escape(search_keywords);
|
||||
window.location.href = url;
|
||||
}
|
||||
|
||||
shift_key_hold = false;
|
||||
ctrl_key_hold = false;
|
||||
});
|
||||
|
||||
document.observe('click', function(evt){
|
||||
if(!evt.findElement('#keywords'))
|
||||
return true;
|
||||
|
||||
var elm = evt.element();
|
||||
if(elm.tagName.toLowerCase() != 'a')
|
||||
return true;
|
||||
|
||||
if(shift_key_hold || ctrl_key_hold)
|
||||
{
|
||||
evt.stop();
|
||||
elm.toggleClassName('keyword-active');
|
||||
}
|
||||
});
|
||||
|
||||
// hide comment edit links upon comment edit window expiring
|
||||
edit_links_hide_handler();
|
||||
});
|
||||
|
||||
_fajs.push(function(){
|
||||
//
|
||||
// initialize lightbox
|
||||
//
|
||||
var img = $('submissionImg');
|
||||
if(img) {
|
||||
img.observe('click', function(evt) {
|
||||
evt.stop();
|
||||
var img = $(evt.element()).clone(true);
|
||||
img.src = img.readAttribute('data-fullview-src');
|
||||
|
||||
lightbox_create('submission', img);
|
||||
});
|
||||
}
|
||||
});
|
||||
_fajs.push(function(){
|
||||
$$('span.popup_date').each(function(elm){
|
||||
elm.observe('click',function(evt){
|
||||
var elm = evt.element();
|
||||
var tmp=elm.title;
|
||||
elm.title=elm.innerHTML;
|
||||
elm.innerHTML=tmp;
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
</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/">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">
|
||||
50213 <strong><span title="Measured in the last 900 seconds">Users online</span></strong> —
|
||||
2440 <strong>guests</strong>,
|
||||
17749 <strong>registered</strong>
|
||||
and 30024 <strong>other</strong>
|
||||
<!-- Online Counter Last Update: Sun, 19 Feb 2023 13:35:00 -0800 -->
|
||||
</div>
|
||||
<small>Limit bot activity to periods with less than 10k registered users online.</small>
|
||||
|
||||
<br><br>
|
||||
<strong>© 2005-2023 Frost Dragon Art LLC</strong>
|
||||
|
||||
<div class="footnote">
|
||||
Server Time: Feb 19, 2023 01:35 PM </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, 2023 01:35 PM <br />
|
||||
Page generated in 0.019 seconds [ 21.2% PHP, 78.8% 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/prototype.1.7.3.min.js"></script>
|
||||
<script type="text/javascript" src="/themes/beta/js/script.js?u=2023011700"></script>
|
||||
<script type="text/javascript">
|
||||
var server_timestamp = 1676842522;
|
||||
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>
|
||||
@@ -29,6 +29,7 @@ class Domain::Fa::Parser::ReduxPageTest < ActiveSupport::TestCase
|
||||
def test_user_page_is_correct
|
||||
parser = get_parser "user_page_miles_df.html"
|
||||
assert parser.logged_in?
|
||||
assert_page_type parser, :probably_user_page?
|
||||
assert parser.probably_user_page?
|
||||
up = parser.user_page
|
||||
|
||||
@@ -47,7 +48,7 @@ class Domain::Fa::Parser::ReduxPageTest < ActiveSupport::TestCase
|
||||
def test_gallery_is_correct
|
||||
parser = get_parser "gallery_page_miles_df.html"
|
||||
assert parser.logged_in?
|
||||
assert parser.probably_listings_page?
|
||||
assert_page_type parser, :probably_listings_page?
|
||||
|
||||
listings = parser.submissions_parsed
|
||||
assert_equal 48, listings.length
|
||||
@@ -69,7 +70,7 @@ class Domain::Fa::Parser::ReduxPageTest < ActiveSupport::TestCase
|
||||
|
||||
def test_gallery_is_correct_with_folders
|
||||
parser = get_parser "gallery_page_with_folders_feretta.html"
|
||||
assert parser.probably_listings_page?
|
||||
assert_page_type parser, :probably_listings_page?
|
||||
|
||||
listings = parser.submissions_parsed
|
||||
assert_equal 48, listings.length
|
||||
@@ -102,8 +103,7 @@ class Domain::Fa::Parser::ReduxPageTest < ActiveSupport::TestCase
|
||||
# https://www.furaffinity.net/browse/
|
||||
|
||||
parser = get_parser "browse_page.html"
|
||||
assert parser.probably_listings_page?
|
||||
assert !parser.probably_submission?
|
||||
assert_page_type parser, :probably_listings_page?
|
||||
|
||||
listings = parser.submissions_parsed
|
||||
# FA appears to respond with only 47?
|
||||
@@ -118,15 +118,38 @@ class Domain::Fa::Parser::ReduxPageTest < ActiveSupport::TestCase
|
||||
assert_equal "//t.furaffinity.net/51067352@400-1676764142.jpg", first.thumb_path
|
||||
end
|
||||
|
||||
def test_adult_submission
|
||||
parser = get_parser "submission_51067352_adult.html"
|
||||
assert_page_type parser, :probably_submission?
|
||||
sub = parser.submission
|
||||
assert_equal 51067352, sub.id
|
||||
assert_equal "CleverDerpy", sub.artist
|
||||
assert_equal "/user/cleverderpy/", sub.artist_user_page_path
|
||||
assert_equal "The Second Kind of Tarpit", sub.title
|
||||
assert_equal :adult, sub.rating
|
||||
assert_equal "//d.furaffinity.net/art/cleverderpy/1676764142/1676764142.cleverderpy_tarryn_and_rosie_shaymin_tar_cv_00001.png", sub.full_res_img
|
||||
assert_equal DateTime.new(2023, 2, 18, 18, 49), sub.posted_date
|
||||
assert_equal "Artwork (Digital)", sub.category
|
||||
assert_equal "Vore", sub.theme
|
||||
assert_equal "Unspecified / Any", sub.species
|
||||
assert_equal "Multiple characters", sub.gender
|
||||
assert_equal 201, sub.num_views
|
||||
assert_equal 0, sub.num_comments
|
||||
assert_equal 15, sub.num_favorites
|
||||
assert_equal "1920x1080", sub.resolution_str
|
||||
assert sub.description_html =~ /belongs to Nintendo/
|
||||
end
|
||||
|
||||
def test_submission_is_correct
|
||||
parser = get_parser "submission_51067333_blauhaher.html"
|
||||
assert parser.probably_submission?
|
||||
assert_page_type parser, :probably_submission?
|
||||
|
||||
sub = parser.submission
|
||||
assert_equal 51067333, sub.id
|
||||
assert_equal "BlauHaher", sub.artist
|
||||
assert_equal "/user/blauhaher/", sub.artist_user_page_path
|
||||
assert_equal '"CUTIE!"', sub.title
|
||||
assert_equal :general, sub.rating
|
||||
assert_equal "//d.furaffinity.net/art/blauhaher/1676764049/1676764049.blauhaher_хорнь.png", sub.small_img
|
||||
assert_equal "//d.furaffinity.net/art/blauhaher/1676764049/1676764049.blauhaher_хорнь.png", sub.full_res_img
|
||||
assert_equal DateTime.new(2023, 2, 18, 18, 47), sub.posted_date
|
||||
@@ -144,13 +167,14 @@ class Domain::Fa::Parser::ReduxPageTest < ActiveSupport::TestCase
|
||||
|
||||
def test_submission_with_tags
|
||||
parser = get_parser "submission_19190013_korichi.html"
|
||||
assert parser.probably_submission?
|
||||
assert_page_type parser, :probably_submission?
|
||||
|
||||
sub = parser.submission
|
||||
assert_equal 19190013, sub.id
|
||||
assert_equal "Korichi", sub.artist
|
||||
assert_equal "General Furry Art", sub.theme
|
||||
assert_equal "Artwork (Digital)", sub.category
|
||||
assert_equal :general, sub.rating
|
||||
assert_equal "1280x914", sub.resolution_str
|
||||
assert_equal 6272, sub.num_views
|
||||
assert_equal "Male", sub.gender
|
||||
@@ -161,7 +185,7 @@ class Domain::Fa::Parser::ReduxPageTest < ActiveSupport::TestCase
|
||||
|
||||
def test_text_only_submission
|
||||
parser = get_parser("submission_10327196_icyfoxy_text_only.html")
|
||||
assert parser.probably_submission?
|
||||
assert_page_type parser, :probably_submission?
|
||||
|
||||
sub = parser.submission
|
||||
assert_equal 10327196, sub.id
|
||||
@@ -169,6 +193,7 @@ class Domain::Fa::Parser::ReduxPageTest < ActiveSupport::TestCase
|
||||
assert_equal "/user/icyfoxy/", sub.artist_user_page_path
|
||||
assert_equal "Ancient Awakening- Wereyena herm TF (By Wyraachur)", sub.title
|
||||
assert_equal "//d.furaffinity.net/download/art/icyfoxy/stories/1488278723/1365480658.icyfoxy_sonya_the_wereyena.txt", sub.full_res_img
|
||||
assert_equal :adult, sub.rating
|
||||
assert_equal 819, sub.num_views
|
||||
assert_equal 0, sub.num_comments
|
||||
assert_equal 12, sub.num_favorites
|
||||
@@ -176,11 +201,38 @@ class Domain::Fa::Parser::ReduxPageTest < ActiveSupport::TestCase
|
||||
assert_equal "Story", sub.category
|
||||
assert_equal "General Furry Art", sub.theme
|
||||
assert_equal "50x50", sub.resolution_str
|
||||
assert_equal %w[Transformation TF Change Male Herm TFTG Transgender Growth Fang Breasts Ass Cock Balls Icyfoxy Wyraachur wereyena Sonya], sub.keywords_array
|
||||
assert_equal %w[Transformation TF Change Male Herm TFTG Transgender
|
||||
Growth Fang Breasts Ass Cock Balls Icyfoxy Wyraachur
|
||||
wereyena Sonya], sub.keywords_array
|
||||
assert_equal "Other / Not Specified", sub.gender
|
||||
assert_equal DateTime.new(2013, 4, 9, 0, 10), sub.posted_date
|
||||
end
|
||||
|
||||
def test_submission_id_is_correct_20340491
|
||||
parser = get_parser("submission_20340491.html")
|
||||
assert_page_type parser, :probably_submission?
|
||||
|
||||
sub = parser.submission
|
||||
assert_equal 20340491, sub.id
|
||||
assert_equal "Skye", sub.title
|
||||
assert_equal :general, sub.rating
|
||||
end
|
||||
|
||||
def test_flash_submission
|
||||
parser = get_parser("submission_21956745_flash.html")
|
||||
assert_page_type parser, :probably_submission?
|
||||
|
||||
sub = parser.submission
|
||||
assert_equal 21956745, sub.id
|
||||
assert_equal "Drake Test: Take One", sub.title
|
||||
assert_equal :mature, sub.rating
|
||||
assert_equal "Tasuric", sub.artist
|
||||
assert_equal "Flash", sub.category
|
||||
assert_equal "Animal related (non-anthro)", sub.theme
|
||||
assert (/A closeup of the drake g/) =~ sub.description_html
|
||||
assert_equal "//d.furaffinity.net/download/art/tasuric/1481384060/1481384060.tasuric_tasflash_camnom.swf", sub.full_res_img
|
||||
end
|
||||
|
||||
def get_parser(file, require_logged_in: true)
|
||||
path = File.join("domain/fa/parser/redux", file)
|
||||
contents = read_fixture_file(path) || raise("Couldn't open #{path}")
|
||||
@@ -188,4 +240,18 @@ class Domain::Fa::Parser::ReduxPageTest < ActiveSupport::TestCase
|
||||
assert_equal Domain::Fa::Parser::Page::VERSION_2, page.page_version, "page version mismatch for file #{file}"
|
||||
page
|
||||
end
|
||||
|
||||
def assert_page_type(parser, expected_type)
|
||||
types = [
|
||||
:probably_listings_page?,
|
||||
:probably_user_page?,
|
||||
:probably_submission?,
|
||||
]
|
||||
outcomes = types.map do |type|
|
||||
[type, parser.send(type)]
|
||||
end.to_h
|
||||
|
||||
assert_equal 1, outcomes.values.filter { |a| a }.to_a.length, "parser detected multiple page types: #{outcomes}"
|
||||
assert outcomes[expected_type], "parser has wrong guessed page type, expected #{expected_type}, got #{outcomes}"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -11,7 +11,7 @@ class ActiveSupport::TestCase
|
||||
|
||||
# Add more helper methods to be used by all tests here...
|
||||
parallelize_teardown do
|
||||
Rails.log.error "Deleting all records: #{ReduxApplicationRecord.subclasses.map(&:name)}"
|
||||
Rails.logger.error "Deleting all records: #{ReduxApplicationRecord.subclasses.map(&:name)}"
|
||||
ReduxApplicationRecord.subclasses.each(&:delete_all)
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user