// ==UserScript==
// @name LP Tags
// @author baldurk
// @version 2.0
// @namespace http://baldurk.org
// @description Adds a best-guess of SSLP vs. VLP tags to the index on command for those too lazy to click
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_xmlhttpRequest
// @include http://forums.somethingawful.com/*forumid=191*
// ==/UserScript==
function substr_count(haystack, needle)
{
var count = 0;
for(var i=0; i < haystack.length; i++)
if(needle == haystack.substr(i, needle.length))
count++;
return count;
}
function toggletype()
{
var threadid = this.id.substr(4);
var type = GM_getValue("type" + threadid, "");
if(type === "")
type = "";
else if(type == "VLP")
type = "SSLP";
else if(type == "SSLP")
type = "VLP";
GM_setValue("type" + threadid, type);
var typeTD = document.getElementById("type" + threadid);
if(type === "")
typeTD.innerHTML = "";
else if (type == "VLP")
typeTD.innerHTML = "";
else if (type == "SSLP")
typeTD.innerHTML = "";
}
function gettype()
{
var threadid = this.id.substr(4);
var url = "http://forums.somethingawful.com/showthread.php?noseen=1&threadid=" + threadid;
GM_xmlhttpRequest({
method: 'GET',
url: url,
headers: {
'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
'Accept': 'text/html',
},
onload: function(responseDetails) {
var data = responseDetails.responseText;
var type = "SSLP";
text = data.substr(0, data.indexOf(""));
var vidcount = substr_count(text, "youtube.") +
substr_count(text, "youtu.be") +
substr_count(text, "www.dailymotion");
var sacount = substr_count(text, "href=\"http://forums.somethingawful");
if(vidcount > sacount && vidcount > 1)
{
type = "VLP";
}
console.log(vidcount + " " + sacount);
GM_setValue("type" + threadid, type);
var typeTD = document.getElementById("type" + threadid);
if(type === "")
typeTD.innerHTML = "";
else if (type == "VLP")
typeTD.innerHTML = "";
else if (type == "SSLP")
typeTD.innerHTML = "";
typeTD.removeEventListener("click", gettype, false);
typeTD.addEventListener("click", toggletype, false);
}
});
}
var elems = document.getElementsByTagName('th');
for(var i=0; i < elems.length; i++)
{
if(elems[i].className == "icon")
{
var typeheader = document.createElement('th');
typeheader.innerHTML = "Type";
elems[i].parentNode.insertBefore(typeheader, elems[i].nextSibling);
}
}
elems = document.getElementsByTagName('tr');
for(var i=0; i < elems.length; i++)
{
if(elems[i].id.indexOf("thread") === 0)
{
var threadid = elems[i].id.substr(6);
var type = document.createElement('td');
type.id = "type" + threadid;
var threadtype = GM_getValue(type.id, "");
if(threadtype === "")
{
type.innerHTML = "";
type.addEventListener("click", gettype, false);
}
else if (threadtype == "VLP")
{
type.innerHTML = "";
type.addEventListener("click", toggletype, false);
}
else if (threadtype == "SSLP")
{
type.innerHTML = "";
type.addEventListener("click", toggletype, false);
}
elems[i].insertBefore(type, elems[i].childNodes[4]);
}
else if(elems[i].className === "thread")
{
var type = document.createElement('td');
elems[i].insertBefore(type, elems[i].childNodes[4]);
}
}