Tumblr Despammer

Get spammy posts out of the Tumblr tags

// ==UserScript==
// @name		Tumblr Despammer
// @namespace	http://keelanrosa.tumblr.com
// @version		0.3.0
// @description	Get spammy posts out of the Tumblr tags
// @include		*://www.tumblr.com/tagged/*
// @require 	http://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js
// @grant     none
// ==/UserScript==

var spamTags = 10; // number of tags before a link post is considered spam post
var spamExterminate = true; // change to false if you want to be able flag/block spamblogs, keep true if you want them completely invisible

// Nb while blogs which post links with many tags are generally spam-blogs, there is no guarantee every heavily-tagged link is spam; please be certain before flagging!

var spamResults = document.evaluate("//div[contains(@class,'is_link') or contains(@class,'post_media')]//a[contains(@class,'has-thumbnail') or contains(@class,'no-thumbnail') or contains(@class,'post_media_photo_anchor')]",
     document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = spamResults.snapshotLength - 1; i >=0; i--) {
  var spamPost = spamResults.snapshotItem(i).parentNode.parentNode.parentNode.parentNode;
  var spamClass = 'spam' + i;
  $(spamPost).addClass(spamClass);
  var spamTagged = document.evaluate("//div[contains(@class,'" + spamClass + "')]//a[contains(@class,'post_tag')]",
       document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  var spamTagCount = spamTagged.snapshotLength + 1;
  if (spamExterminate == true && spamTagCount >= spamTags) {
    $(spamPost.parentNode.parentNode).empty();
  } else if (spamExterminate == false && spamTagCount >= spamTags) {
  spamPost.innerHTML = '<div class="post_content"><div class="post_content_inner"><div class="post_body" style="padding-bottom:30px;"><strong>Spam Detected:</strong> Link with ' + (spamTagCount) + ' tags removed</div></div></div>';
  };
};