Guest User

Untitled

a guest
Sep 7th, 2013
207
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name       Detect new comments on Hashtable's blog
  3. // @namespace  http://h16free.pltplp.net/
  4. // @version    0.2
  5. // @description Detect new comments since last visit on h16free.com blog. This version supports comments on multiple pages
  6. // @match      http://h16free.com/*
  7. // @copyright  2013, Etienne Bernard
  8. // ==/UserScript==
  9.  
  10. // a function that loads jQuery and calls a callback function when jQuery has finished loading
  11. function addJQuery(callback) {
  12.     var script = document.createElement("script");
  13.     script.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js");
  14.     script.addEventListener('load', function() {
  15.         var script = document.createElement("script");
  16.         script.textContent = "window.jQ=jQuery.noConflict(true);(" + callback.toString() + ")();";
  17.         document.body.appendChild(script);
  18.     }, false);
  19.     document.body.appendChild(script);
  20. }
  21.  
  22. // the guts of this userscript
  23. function main() {
  24.    
  25.     var cookies;
  26.     var readCookie = function(name,c,C,i){
  27.         if(cookies){ return cookies[name]; }
  28.         c = document.cookie.split('; ');
  29.         cookies = {};
  30.         for(i=c.length-1; i>=0; i--){
  31.             C = c[i].split('=');
  32.             cookies[C[0]] = C[1];
  33.         }
  34.         return cookies[name];
  35.     };
  36.    
  37.     var articleId = jQ('article.entry-plain').attr('id');
  38.     if (articleId) {
  39.         articleId = articleId.substr(5);
  40.         // Get comments' page
  41.         var hr = jQ('article.comment-block:first header a').attr('href');
  42.         var commentPage = parseInt(hr.replace(/#.*/, '').replace(/^.*comment-page-/, ''), 10);
  43.         var cookieName = 'lastVisits';
  44.         // Check if we have a cookie for this article
  45.         var cookie = readCookie('lastVisits');
  46.         var lastVisits = {};
  47.         if (cookie !== undefined) {
  48.             lastVisits = JSON.parse(cookie);
  49.         }
  50.         // Get last visit time
  51.         var key = 'p' + articleId + '-' + commentPage;
  52.         var lastViewed = lastVisits[key];
  53.         if (lastViewed !== undefined) {
  54.             // Mark as new
  55.             jQ('article.comment-block > header > a > time').each(function() {
  56.                 var t = new Date(jQ(this).attr('datetime'));
  57.                 t = t.getTime() - 7200000; // Fix timezone
  58.                 if (t > lastViewed) {
  59.                     jQ(this).parents('article').parent('li').css('outline', '2px dotted red');
  60.                 }
  61.             });
  62.         }
  63.         lastVisits[key] = new Date().getTime();
  64.         // Set cookie for next time
  65.         document.cookie = cookieName + '=' + JSON.stringify(lastVisits) + ';path=/;expires=Tue, 31 Dec 2019 23:00:00 GMT';
  66.     }
  67. }
  68.  
  69. // load jQuery and execute the main function
  70. addJQuery(main);
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×