// ==UserScript==
// @name Sugg
// @namespace Sugg Systems
// @description Provides link suggestions based on the current page, similar to youtube
// @match *://*/*
// @grant GM_setValue
// @grant GM_getValue
// @noframes
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js
// @version 0.0.1.20190313025650
// ==/UserScript==
function suggdiv() {
var div = $('<body>');
div.css('min-height','100%');
div.css('width','25%');
div.css('display','flex');
div.css('flex-flow','column');
return div;
}
function suggmagic(history,url,title,cb) {
$.post('https://sugg.lifelist.pw/',JSON.stringify({history,url,title}),rank=>{
cb(null,rank);
}).fail(err=>{
cb(err);
});
}
function rankitem2div(item) {
var div = $('<div>').css('padding','8px');
var a = $('<a>').attr('href',item.href).text(item.title||item.href);
div.append(a);
return div;
}
function main(skipnotacheck) {
if(!skipnotacheck && location.host==='notabug.io' && location.pathname.startsWith('/t/') && !location.pathname.startsWith('/t/all')) {
return setTimeout(()=>{
document.title = $('.title.may-blank').first().text();
main(true);
},2000);
}
var url = location.toString();
if(testOmit(url)) {
return;
}
var suggbox = suggdiv();
jQuery(document.body).css('width','75%').after(suggbox).parent().css({display:'flex','flex-flow':'row'});
var history=GM_getValue('history','[]')
history=JSON.parse(history);
console.log('history',history);
suggmagic(history,url,document.title,(err,rank)=>{
if(err) { return console.log('err',err); }
rank.slice(0,13).forEach(r=>{
suggbox.append(rankitem2div(r));
});
});
history = history.filter(i=>i!=url);
history = history.slice(-16);
history.push(url);
GM_setValue('history',JSON.stringify(history));
}
main();
function regexlist () {
return [
/google.com\/recaptcha/,
/imgoat.com\/uploads/,
/phuks.co\/submit/,
/\/sign_in/,
/i\.imgtc\.com/,
/voat.co\/submit/,
/\login\?/,
/voat\.co\/submit/,
/https?:\/\/searx\.me/,
/https?:\/\/greasyfork.org\/en\/script_versions/,
/porn/,
/facebook.com\/./,
/linkedin.com\/./,
/livejasmine.com/,
/voat.co\/messages/,
/button.flattr.com\/./,
/xhamster.com/,
/xvideos.com/,
/xnxx.com/,
/redtube.com/,
/youporn.com/,
/youtube\.com\/embed\//,
/voat\.co\/v\/\w+\/submit/,
/accounts\.google\.com\//,
/platform\.twitter\.com\/widgets\//,
/\/embed\//,
/poal\.co\/messages/,
];
}
function testOmit(url) {
var tests= regexlist();
for(var c=0;c<tests.length;++c) {
if(url.match(tests[c])) {
return true;
}
}
}