Skip to content

Instantly share code, notes, and snippets.

@newtover
Last active July 26, 2021 18:12
Show Gist options
  • Save newtover/c7c06301bc0807e60840665f7de01479 to your computer and use it in GitHub Desktop.
Save newtover/c7c06301bc0807e60840665f7de01479 to your computer and use it in GitHub Desktop.
unreadAfterForLepra.js
void function(){
var toImg = function(e1){
var img = document.createElement('img');
img.setAttribute('src', e1.dataset.orig);
e1.parentNode.replaceChild(img, e1);
};
var videos = document.querySelectorAll('video[data-orig]');
for (var i = videos.length - 1; i >= 0; i--){
// if @data-orig ends with .gif
if (/[.]gif$/i.exec(videos[i].dataset.orig)){
toImg(videos[i]);
};
};
}();
// compact with http://javascript-minifier.com/
// javascript:void function(){for(var e=function(e){var t=document.createElement("img");t.setAttribute("src",e.dataset.orig),e.parentNode.replaceChild(t,e)},t=document.querySelectorAll("video[data-orig]"),r=t.length-1;r>=0;r--)/[.]gif$/i.exec(t[r].dataset.orig)&&e(t[r])}();
// еще один скрипт, из которого можно сделать букмарклет. Скрипт вставляет в начало страницы
// табличку с кратким содержанием: посты, их время, автор, рейтинг, количество комментариев и начало текста поста.
// Должно работать на главной, на подлепрах, в моих вещах и в инбоксах.
// Текст ссылки для букмарклета ниже, а куда его вставлять, написано в конце файла unreadAfterForLepra.js
void (function(){
if(!document.getElementById('js-posts_holder')){return;}
var addCss = function(r1){var s1 = document.styleSheets[0]; s1.insertRule(r1, s1.cssRules.length);};
var toc_cont = function(){
var toc = document.getElementById('aux-toc');
if (!toc){
toc = new Element('table', {id: 'aux-toc'}).inject('js-posts_holder', 'top');
addCss('#aux-toc {margin: 0 0 2em 0;}');
addCss('#aux-toc td {padding: 0.1em 0.5em;white-space:nowrap;overflow:hidden;}');
addCss('#aux-toc .num {text-align:right;}');
addCss('#aux-toc .c {text-align:center;}');
}
return toc;
}
var gen_toc = function(){
var toc = toc_cont();
$(toc).empty();
var posts = document.querySelectorAll('.post:not([class~="hidden"])');
posts = Array.prototype.slice.call(posts);
posts.forEach(function(post, idx){
var _text = function(sel){var e1=post.querySelector(sel);return e1?e1.textContent:'';};
var login = _text('.c_user');
var ts = _text('.js-date');
var votes = _text('.vote_result') || '0';
var comments_all = post.querySelector('.b-post_comments_links a');
var url = comments_all.getAttribute('href');
var domain;
if (/^[/]my[/]inbox/.exec(url)){
domain = 'inbox';
} else {
domain = url.split('/')[2].replace(/[.]?leprosorium.ru/, '') || 'БЛ';
}
var summary = _text('.p_body').replace(/^\s+|\s+$/g, '').replace(/\s+/g, ' ').substr(0, 70);
var c_all = comments_all.textContent;
c_all = c_all.replace(/[^\d]+/, '') || '0';
var c_unread = post.querySelector('.b-post_comments_links a:nth-of-type(2)');
if (c_unread){
c_unread = c_unread.textContent.replace(/[^\d]+/, '');
} else if (comments_all.querySelector('strong')) {
c_unread = c_all;
} else {
c_unread = '0';
};
var tr = new Element('tr').inject(toc);
tr.adopt(
new Element('td', {class: 'num'}).adopt(new Element('a', {href:'#' + post.id, text: idx+1})),
new Element('td', {text: login + '@' + domain}),
new Element('td', {text: ts}),
new Element('td', {text: votes, class: 'num'}),
new Element('td', {class: 'c', text: c_all + ' / '}).adopt(new Element('a', {text: c_unread, 'href': url + '?unread=on'})),
new Element('td', {text: summary || ''})
);
});
}
gen_toc();
})();
// сожмем при помощи http://javascript-minifier.com/ до букмарклета
// javascript:void function(){if(document.getElementById("js-posts_holder")){var e=function(e){var t=document.styleSheets[0];t.insertRule(e,t.cssRules.length)},t=function(){var t=document.getElementById("aux-toc");return t||(t=new Element("table",{id:"aux-toc"}).inject("js-posts_holder","top"),e("#aux-toc {margin: 0 0 2em 0;}"),e("#aux-toc td {padding: 0.1em 0.5em;white-space:nowrap;overflow:hidden;}"),e("#aux-toc .num {text-align:right;}"),e("#aux-toc .c {text-align:center;}")),t},n=function(){var e=t();$(e).empty();var n=document.querySelectorAll('.post:not([class~="hidden"])');n=Array.prototype.slice.call(n),n.forEach(function(t,n){var o,r=function(e){var n=t.querySelector(e);return n?n.textContent:""},l=r(".c_user"),a=r(".js-date"),c=r(".vote_result")||"0",s=t.querySelector(".b-post_comments_links a"),u=s.getAttribute("href");o=/^[\/]my[\/]inbox/.exec(u)?"inbox":u.split("/")[2].replace(/[.]?leprosorium.ru/,"")||"БЛ";var d=r(".p_body").replace(/^\s+|\s+$/g,"").replace(/\s+/g," ").substr(0,70),m=s.textContent;m=m.replace(/[^\d]+/,"")||"0";var i=t.querySelector(".b-post_comments_links a:nth-of-type(2)");i=i?i.textContent.replace(/[^\d]+/,""):s.querySelector("strong")?m:"0";var p=new Element("tr").inject(e);p.adopt(new Element("td",{"class":"num"}).adopt(new Element("a",{href:"#"+t.id,text:n+1})),new Element("td",{text:l+"@"+o}),new Element("td",{text:a}),new Element("td",{text:c,"class":"num"}),new Element("td",{"class":"c",text:m+" / "}).adopt(new Element("a",{text:i,href:u+"?unread=on"})),new Element("td",{text:d||""}))})};n()}}();
// очередной букмарклет. Теперь, чтобы скрывать по кнопке посты до какой-то даты. Заходим куда-то, где есть список
// постов (главная, подлепра, мои вещи, инбоксы), тыкаем букмарклет, выбираем дату, наслаждаемся.
// Сам букмарклет
// javascript:void!function(){var e=prompt("Скроем посты до какой-то даты.\n\nВведите дату и время в формате 2016-12-28 15:55:00\n ");if(e){e=new Date(e).valueOf()/1e3;var t,a,n=document.querySelectorAll(".post");for(t=0;t<n.length;t++)a=n[t].querySelector(".js-date").dataset.epoch_date,parseInt(a)<e&&n[t].classList.add("hidden")}}();
// получен путем минификации на http://javascript-minifier.com следующего фрагмента кода:
(function(){
var d = prompt('Скроем посты до какой-то даты.\n\nВведите дату и время в формате 2016-12-28 15:55:00\n ');
if (d){
d = new Date(d).valueOf()/1000;
var i, ts, posts = document.querySelectorAll('.post');
for (i=0; i < posts.length; i++){
ts = posts[i].querySelector('.js-date').dataset.epoch_date;
if (parseInt(ts) < d){
posts[i].classList.add('hidden');
}
}
}
})();
// это можно скопировать и вставить в консоль JS, а еще можно создать букмарклет и нажимать просто кнопку в браузере. Букмерклет ниже.
(function(){
var d = prompt('Пометим новыми комментарии после определенного времени.\n\nВведите дату в формате 2016-12-28 15:55:00\n ');
if (d){
d = new Date(d);
f = commentsHandler.filter;
f.epoch_of_first_unread_comment = f.current_epoch = d.valueOf()/1000;
f.reload(f.control('refresh'), true, true);
}
})();
// Букмарклет. где-то на панели закладок тыкаем правой кнопкой мыши и создаем новую закладку,
// придумываем имя закладки, а потом копируем следующую строку и вставляем вместо ссылки, начиная с javascript:
// javascript:void(function(){var f,d=prompt('Пометим новыми комментарии после определенного времени.\n\nВведите дату в формате 2016-12-28 15:55:00\n ');if(d){d=new Date(d);f=commentsHandler.filter;f.epoch_of_first_unread_comment=f.current_epoch=d.valueOf()/1000;f.reload(f.control('refresh'),true,true);}})();
// Теперь открываем какой-то пост, тыкаем в букмарклет, появляется приглашение - ввыодим время в нужном формате.
// Новыми будут помечены комментарии с определенной даты.
// Кстати, можно указать просто дату, без времени.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment