spenibus.net
2014-05-04 17:15:20 GMT

Firefox/Greasemonkey - Twitter local time formatting - new style update.

We need to add this to affect the new profile timeline: ```` // timeline elements (new style) var elems = document.querySelectorAll('a.ProfileTweet-timestamp > span.js-short-timestamp'); elems = elems ? elems : []; for(var i=0; i<elems.length; i++) { var stamp = elems[i].getAttribute("data-time"); data[dataIndex++] = { node : elems[i], timestamp : stamp, }; } ```` Complete script: ```` var loc = document.location; /******************************************************** twitter tweets time */ if(loc.hostname.substr(-11) == 'twitter.com') { window.addEventListener('load', function(){ css("" +"small.time > a > time," +"div.tweet-details-fixer > div.client-and-actions > span.metadata > time" +"{font-weight:bold;}" ); var time = function(timestamp) { if(timestamp) { var date = new Date(timestamp*1000); return date.getFullYear()+'-'+ ('0'+(date.getMonth()+1)).slice(-2)+'-'+ ('0'+date.getDate()).slice(-2)+' '+ ('0'+date.getHours()).slice(-2)+':'+ ('0'+date.getMinutes()).slice(-2)+':'+ ('0'+date.getSeconds()).slice(-2); } return 0; } var properTime = function() { var data = {}; var dataIndex = 0; // timeline elements var elems = document.querySelectorAll('small.time > a > span[data-time]._timestamp'); elems = elems ? elems : []; for(var i=0; i<elems.length; i++) { var stamp = elems[i].getAttribute("data-time"); data[dataIndex++] = { node : elems[i], timestamp : stamp, }; } // individual tweet elements var elems = document.querySelectorAll('div.tweet-details-fixer > div.client-and-actions > span.metadata > span'); elems = elems ? elems : []; for(var i=0; i<elems.length; i++) { var stamp = new Date(elems[i].innerHTML).getTime()/1000; data[dataIndex++] = { node : elems[i], timestamp : stamp, }; } // timeline elements (new style) var elems = document.querySelectorAll('a.ProfileTweet-timestamp > span.js-short-timestamp'); elems = elems ? elems : []; for(var i=0; i<elems.length; i++) { var stamp = elems[i].getAttribute("data-time"); data[dataIndex++] = { node : elems[i], timestamp : stamp, }; } // add time string for(var i in data) { if(data[i].node.parentNode && data[i].node.parentNode.innerHTML.substr(0,1) != "#") { data[i].node.parentNode.innerHTML = "# "+data[i].node.parentNode.innerHTML +" - <time>"+time(data[i].timestamp)+"</time>"; } } } // we only fire once per second max var properTimeAllowed = true; // we exec at least once var properTimeLauncher = function() { if(properTimeAllowed) { properTimeAllowed = false; setTimeout(function(){ properTimeAllowed = true; properTime(); }, 1000); } } window.addEventListener('DOMSubtreeModified', properTimeLauncher, false); }, false); } ````