Hide kickstarter projects that don't interest you
// ==UserScript==
// @name Kickshrouder
// @namespace Kickshrouder
// @version 1.2
// @description Hide kickstarter projects that don't interest you
// @author Mindez
// @match https://www.kickstarter.com/discover*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var SHROUDED_COOKIE_NAME = '_kickshrouded'
var $ = window.jQuery
if (!$) { return console.log('Kickshrouder :: Error :: No JQuery') }
function getNameFromElement(element) {
const lines = element.children[0].children[0].children[0].outerText.split('\n')
if (lines[0] === 'Project We Love') {
return lines[1]
}
return lines[0]
}
function getIdFromElement(element) {
return element.children[0].children[0].children[0].children[1].children[0].href.split('/')[5].split('?')[0]
}
function getButtonParentFromElement(element) {
return element.children[0].children[0].children[0].children[0].children[0]
}
function setCookie(name, value) {
document.cookie = name + '=' + value + '; path=/'
}
let shroudedIds = []
var cookies = document.cookie.split(';')
cookies.forEach(cookie => {
if (cookie.split('=')[0].trim() === SHROUDED_COOKIE_NAME) {
console.log('Kickshrouder :: Info :: Loading List')
shroudedIds = JSON.parse(cookie.split('=')[1])
}
})
let existingButtons = []
function shroudKickstarters() {
$('.js-react-proj-card, .js-react-async-proj-card').each(function (index, element) {
var id = getIdFromElement(element)
var name = getNameFromElement(element)
if (shroudedIds.indexOf(id) !== -1) {
console.log('Kickshrouder :: Shrouded :: ' + name)
return element.remove()
}
if (existingButtons.indexOf(id) == -1) {
var button = document.createElement('button')
button.className = 'pill bg-soft-black_50 h6 w6 ksr-tooltip text-nowrap flex p0 keyboard-focusable-transparent z1 no-outline shadow-avatar absolute t2 r2'
button.innerHTML = '<span style="align:center; color:white; font-size:2em; margin-left:0.4em">X</span>'
button.setAttribute('data-tooltip', 'Ignore')
button.style.margin = '3em 0em 0em 0em'
getButtonParentFromElement(element).append(button)
button.addEventListener("click", function() {
shroudedIds.push(id)
setCookie(SHROUDED_COOKIE_NAME, JSON.stringify(shroudedIds))
console.log('Kickshrouder :: Shrouded :: ' + name)
element.remove()
});
existingButtons.push(id)
}
})
}
function begin()
{
shroudKickstarters()
setTimeout(begin, 500)
}
begin()
})();