Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Notatkowator 2000
- // @namespace http://www.wykop.pl/ludzie/piokom123/
- // @description Szybki podgląd notek
- // @author piokom123
- // @version 1.2
- // @grant none
- // @include http://www.wykop.pl/*
- // @run-at document-end
- // ==/UserScript==
- // Ukłony dla @parasolki za nadanie dodatkowi tej boskiej nazwy ;)
- function main() {
- var loggedInNick = $('.logged-user .ellipsis span b').html();
- var cacheCookieName = 'userNotesCache';
- var cacheCookieExpirationName = 'userNotesCacheExpiration';
- var cacheCookieMinutes = 15;
- var notes = {};
- /**
- * Loads notes from cache or fetches them from website if cache doesn't exist or is invalid
- */
- function loadNotes() {
- var cachedNotes = getData(cacheCookieName);
- if (typeof cachedNotes === 'undefined') {
- fetchNotes();
- } else {
- notes = JSON.parse(cachedNotes);
- showNotes(notes);
- }
- }
- /**
- * Asynchronously fetches notes from website, saves it and shows
- */
- function fetchNotes() {
- setTimeout(function() {
- $.ajax('http://www.wykop.pl/moj/notatki-o-uzytkownikach/')
- .done(function(data) {
- parseNotes(data);
- saveNotes();
- showNotes();
- });
- }, 100);
- }
- /**
- * Parses user notes list HTML and returns as object
- */
- function parseNotes(data) {
- notes = {};
- $('#notesList li p', data).each(function(index, item) {
- notes[$('a b', item).html()] = parseNote(item.innerHTML);
- });
- }
- /**
- * Parses HTML of one note
- */
- function parseNote(content) {
- var parsedNote = '';
- var match = content.split('</b></a>');
- match = match[1].trim();
- if (match.indexOf('|') === -1) {
- parsedNote = match;
- } else {
- match = match.split('|');
- parsedNote = match[0];
- }
- parsedNote = activateLinks(parsedNote);
- return parsedNote;
- }
- function activateLinks(content) {
- if (content.indexOf('http://') !== -1 || content.indexOf('https://') !== -1) {
- content = content.replace(/(https?:\/\/([^\s]+))/g, '<a href="$1" target="_blank">$1</a>');
- }
- return content;
- }
- function saveNotes() {
- notesString = JSON.stringify(notes);
- saveData(cacheCookieName, notesString);
- }
- /**
- * Shows notes on website
- */
- function showNotes() {
- $('.author .showProfileSummary b').each(function(index, item) {
- var nick = item.innerHTML.trim();
- if (typeof notes[nick] !== 'undefined') {
- $(item.parentNode.parentNode).append('<span class="note2000 notesFor' + nick + '" style="padding-right: 55px; white-space: normal !important;">| ' + notes[nick] + '</span>');
- }
- });
- }
- /**
- * Gets data from local storage. Can return 'undefined' if data doesn't exist or is invalid.
- */
- function getData(name) {
- if (typeof localStorage !== 'undefined') {
- var expirationCookie = getCookie(cacheCookieExpirationName);
- if (typeof expirationCookie === 'undefined') {
- return;
- }
- var data = localStorage.getItem(name);
- if (typeof data !== 'undefined' && data !== null && data !== '') {
- return data;
- }
- }
- }
- /**
- * Saves data to local storage and sets expiration cookie
- */
- function saveData(name, value) {
- if (typeof localStorage !== 'undefined') {
- saveCookie(cacheCookieExpirationName, 'valid', cacheCookieMinutes);
- var data = localStorage.setItem(name, value);
- }
- }
- function getCookie(name) {
- var i, x, y, ARRcookies = document.cookie.split(";");
- for (i = 0; i < ARRcookies.length; i++) {
- x = ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
- y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
- x = x.replace(/^\s+|\s+$/g, "");
- if (x === name) {
- return unescape(y);
- }
- }
- }
- function saveCookie(name, value, minutes) {
- var exdate = new Date();
- exdate.setMinutes(exdate.getMinutes() + minutes);
- value = escape(value) + "; domain=.wykop.pl; path=/" + ((minutes===null) ? "" : "; expires=" + exdate.toUTCString());
- document.cookie = name + "=" + value;
- }
- function addBlackListsStats() {
- jQuery(jQuery('.blackListForm')[0]).before(
- '<div style="width: 100%; padding: 25px; text-align: center">'
- + 'Osoby na #czarnolisto: <b>' + jQuery('div[data-type="users"] .usercard').length + '</b>'
- + ', w tym: <span class="color-2">bordo (<b>' + jQuery('div[data-type="users"] .color-2').length + '</b>)</span>'
- + ', <span class="color-1">pomarańczki (<b>' + jQuery('div[data-type="users"] .color-1').length + '</b>)</span>'
- + ', <span class="color-0">zielonki (<b>' + jQuery('div[data-type="users"] .color-0').length + '</b>)</span>'
- + ', <span class="color-1001">zbanowani (<b>' + jQuery('div[data-type="users"] .color-1001').length + '</b>)</span>'
- + ', <span class="color-1002">ragequity (<b>' + jQuery('div[data-type="users"] .color-1002').length + '</b>)</span>'
- + '<br />'
- + 'Tagi na #czarnolisto: <b>' + jQuery('div[data-type="hashtags"] .tagcard').length + '</b>'
- + '<br />'
- + 'Domeny na #czarnolisto: <b>' + jQuery('div[data-type="domains"] .tag').length + '</b>'
- + '</div>');
- }
- function addNotesStats() {
- jQuery('#notesList').before(
- '<div style="width: 100%; padding: 25px; text-align: center">'
- + 'Wszystkie notatki: <b>' + jQuery('#notesList li').length + '</b>'
- + ', w tym o: <span class="color-2">bordo (<b>' + jQuery('#notesList .color-2').length + '</b>)</span>'
- + ', <span class="color-1">pomarańczkach (<b>' + jQuery('#notesList .color-1').length + '</b>)</span>'
- + ', <span class="color-0">zielonkach (<b>' + jQuery('#notesList .color-0').length + '</b>)</span>'
- + ', <span class="color-1001">zbanowanych (<b>' + jQuery('#notesList .color-1001').length + '</b>)</span>'
- + ', <span class="color-1002">ragequitach (<b>' + jQuery('#notesList .color-1002').length + '</b>)</span>'
- + '</div>');
- }
- $(document).ready(function() {
- if (typeof loggedInNick === 'undefined') {
- return;
- }
- loadNotes();
- $(document).on('DOMNodeInserted', function(e) {
- if ($('.author .showProfileSummary b', $(e.target)).length > 0) {
- var nodes = $('.author .showProfileSummary b', $(e.target));
- for (var i = 0; i < nodes.length; i++) {
- node = $(nodes[i]);
- var nick = node.html().trim();
- if (typeof notes[nick] !== 'undefined') {
- if ($('.note2000', node.parent().parent()).length != 0) {
- continue;
- }
- $(node.parent().parent()).append('<span class="note2000 notesFor' + nick + '" style="padding-right: 55px; white-space: normal !important;">| ' + notes[nick] + '</span>');
- }
- }
- }
- });
- if (document.location.href.indexOf('ustawienia/czarne-listy') !== -1) {
- addBlackListsStats();
- }
- if (document.location.href.indexOf('moj/notatki-o-uzytkownikach') !== -1) {
- addNotesStats();
- }
- });
- }
- if (typeof $ == 'undefined') {
- if (typeof unsafeWindow !== 'undefined' && unsafeWindow.jQuery) {
- // Firefox
- var $ = unsafeWindow.jQuery;
- main();
- } else {
- // Chrome
- addJQuery(main);
- }
- } else {
- // Opera >.>
- main();
- }
- function addJQuery(callback) {
- var script = document.createElement("script");
- script.textContent = "(" + callback.toString() + ")();";
- document.body.appendChild(script);
- }
Add Comment
Please, Sign In to add comment