Last active
November 17, 2017 18:07
-
-
Save extensionsapp/946a14d5c820d57ac7c4 to your computer and use it in GitHub Desktop.
Объединение постов Хабрахабр + Geektimes, в одну ленту на Habrahabr.ru
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ==UserScript== | |
| // @name habrahabr-userscript | |
| // @description Объединение постов Хабрахабр + Geektimes, в одну ленту на Habrahabr.ru | |
| // @author ExtensionsApp | |
| // @license MIT | |
| // @version 2.0.18 | |
| // @include https://habrahabr.ru/feed/all/* | |
| // @include https://habrahabr.ru/feed/interesting/* | |
| // @include https://habrahabr.ru/all/* | |
| // @grant GM_setValue | |
| // @grant GM_getValue | |
| // @grant GM.xmlHttpRequest | |
| // ==/UserScript== | |
| var habr = { | |
| init: function() { | |
| var styleEl = document.createElement("style"); | |
| styleEl.type = "text/css"; | |
| styleEl.media = "screen"; | |
| styleEl.innerHTML = '.fonts-loaded .post__flow, .fonts-loaded .post__title, .fonts-loaded .post__title_link { font-family: Arial, \'Helvetica Neue\' ,Helvetica, sans-serif !important; } .post__flow, .post__title, .post__title_link {font-size: 20px !important; font-family: Arial, \'Helvetica Neue\' ,Helvetica, sans-serif !important; }'; | |
| document.getElementsByTagName('head')[0].appendChild(styleEl); | |
| var last = document.createElement('li'), | |
| article = document.createElement('article'), | |
| header = document.createElement('header'), | |
| time = document.createElement('span'); | |
| last.setAttribute('id', 'last_id'); | |
| last.setAttribute('class', 'content-list__item content-list__item_post'); | |
| last.setAttribute('style', 'display:none;'); | |
| article.setAttribute('class', 'post post_preview'); | |
| header.setAttribute('class', 'post post__meta'); | |
| time.setAttribute('class', 'post__time'); | |
| time.innerHTML = '20 января 2015 в 00:01'; | |
| header.appendChild(time); | |
| article.appendChild(header); | |
| last.appendChild(article); | |
| document.getElementsByClassName('content-list_posts')[0].appendChild(last); | |
| habr.feed('geektimes.ru'); | |
| }, | |
| feed: function(host) { | |
| var href = location.href; | |
| href = href.replace('habrahabr.ru',host); | |
| GM.xmlHttpRequest({ | |
| method: "GET", | |
| url: href, | |
| onload: function(response) { | |
| if (response.readyState == 4) { | |
| var html = document.createElement('div'); | |
| var https = (response.responseText).replace(/http:\/\//g, 'https://'); | |
| html.innerHTML = https; | |
| var posts = html.getElementsByClassName('content-list__item_post'); | |
| for (var i = 0; i < posts.length; i++) { | |
| var post = document.createElement('li'); | |
| post.setAttribute('id', posts[i].id); | |
| post.setAttribute('class', 'content-list__item content-list__item_post'); | |
| post.innerHTML = posts[i].innerHTML; | |
| var date; | |
| if (post.getElementsByClassName('published').length > 0) { | |
| date = post.getElementsByClassName('published')[0].innerHTML; | |
| } | |
| else if (post.getElementsByClassName('post__time_published').length > 0) { | |
| date = post.getElementsByClassName('post__time_published')[0].innerHTML; | |
| } | |
| else if (post.getElementsByClassName('post__time').length > 0) { | |
| date = post.getElementsByClassName('post__time')[0].innerHTML; | |
| } | |
| else if (post.getElementsByClassName('megapost-head__meta').length > 0) { | |
| var meta = document.createElement('div'); | |
| meta.innerHTML = post.getElementsByClassName('megapost-head__meta')[0].innerHTML; | |
| date = meta.getElementsByClassName('list__item')[0].innerHTML; | |
| } | |
| else { | |
| continue; | |
| } | |
| var postDate = habr.getDate(date); | |
| if ((post.getElementsByClassName('title').length > 0)) { | |
| post.getElementsByClassName('title')[0].setAttribute('style','padding-right:71px;'); | |
| } | |
| if ((post.getElementsByClassName('post__title').length > 0)) { | |
| post.getElementsByClassName('post__title')[0].setAttribute('style','padding-right:71px;'); | |
| } | |
| if ((post.getElementsByClassName('favorite').length > 0)) { | |
| post.getElementsByClassName('favorite')[0].parentNode.removeChild(post.getElementsByClassName('favorite')[0]); | |
| } | |
| if ((post.getElementsByClassName('js-plus').length > 0)) { | |
| post.getElementsByClassName('js-plus')[0].parentNode.removeChild(post.getElementsByClassName('js-plus')[0]); | |
| } | |
| if ((post.getElementsByClassName('js-minus').length > 0)) { | |
| post.getElementsByClassName('js-minus')[0].parentNode.removeChild(post.getElementsByClassName('js-minus')[0]); | |
| } | |
| if ((post.getElementsByClassName('plus').length > 0)) { | |
| post.getElementsByClassName('plus')[0].parentNode.removeChild(post.getElementsByClassName('plus')[0]); | |
| } | |
| if ((post.getElementsByClassName('minus').length > 0)) { | |
| post.getElementsByClassName('minus')[0].parentNode.removeChild(post.getElementsByClassName('minus')[0]); | |
| } | |
| if ((post.getElementsByClassName('post-stats__item_voting-wjt').length > 0)) { | |
| post.getElementsByClassName('post-stats__item_voting-wjt')[0].parentNode.removeChild(post.getElementsByClassName('post-stats__item_voting-wjt')[0]); | |
| } | |
| if ((post.getElementsByClassName('bookmark-btn_post').length > 0)) { | |
| post.getElementsByClassName('bookmark-btn_post')[0].parentNode.removeChild(post.getElementsByClassName('bookmark-btn_post')[0]); | |
| } | |
| habr.addChild(post.innerHTML, postDate, host, post.id); | |
| } | |
| } | |
| } | |
| }); | |
| }, | |
| addChild: function(data, time, host, id) { | |
| var posts = document.getElementsByClassName('content-list__item_post'); | |
| for (var i = 0; i < posts.length; i++) { | |
| var date; | |
| if (posts[i].getElementsByClassName('published').length > 0) { | |
| date = posts[i].getElementsByClassName('published')[0].innerHTML; | |
| } | |
| else if (posts[i].getElementsByClassName('post__time_published').length > 0) { | |
| date = posts[i].getElementsByClassName('post__time_published')[0].innerHTML; | |
| } | |
| else if (posts[i].getElementsByClassName('post__time').length > 0) { | |
| date = posts[i].getElementsByClassName('post__time')[0].innerHTML; | |
| } | |
| else if (posts[i].getElementsByClassName('megapost-head__meta').length > 0) { | |
| var meta = document.createElement('div'); | |
| meta.innerHTML = posts[i].getElementsByClassName('megapost-head__meta')[0].innerHTML; | |
| date = meta.getElementsByClassName('list__item')[0].innerHTML; | |
| } | |
| else { | |
| continue; | |
| } | |
| var postDate = habr.getDate(date); | |
| var postAdd = document.createElement('li'); | |
| postAdd.setAttribute('class', 'content-list__item content-list__item_post'); | |
| postAdd.setAttribute('id', id); | |
| postAdd.setAttribute('style', 'background:url("https://' + host + '/images/logo.svg") right top no-repeat; background-size: 71px;'); | |
| postAdd.innerHTML = data; | |
| if (time >= postDate) { | |
| document.getElementsByClassName('content-list_posts')[0].insertBefore(postAdd, document.getElementById(posts[i].id)); | |
| break; | |
| } | |
| } | |
| }, | |
| getDate: function(date) { | |
| var d = new Date(), | |
| dateYear, | |
| dateMonth, | |
| dateDay, | |
| dateHour, | |
| dateMin, | |
| dateMinSec, | |
| parseDate; | |
| if (date.indexOf('сегодня') + 1) { | |
| date = date.replace('сегодня в ', ''); | |
| dateMinSec = date.split(':'); | |
| dateYear = d.getFullYear(); | |
| dateMonth = d.getMonth(); | |
| dateDay = d.getDate(); | |
| dateHour = dateMinSec[0]; | |
| dateMin = dateMinSec[1]; | |
| } | |
| else if (date.indexOf('вчера') + 1) { | |
| date = date.replace('вчера в ', ''); | |
| dateMinSec = date.split(':'); | |
| dateYear = d.getFullYear(); | |
| dateMonth = d.getMonth(); | |
| dateDay = d.getDate()-1; | |
| dateHour = dateMinSec[0]; | |
| dateMin = dateMinSec[1]; | |
| } | |
| else { | |
| parseDate = /([0-9]{1,2})\s(января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря)\s([0-9]{4})\sв\s([0-9]{2}):([0-9]{2})/gi.exec(date); | |
| if (!parseDate) { | |
| parseDate = /([0-9]{1,2})\s(января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря)\sв\s([0-9]{2}):([0-9]{2})/gi.exec(date); | |
| dateYear = d.getFullYear(); | |
| dateDay = parseDate[1]; | |
| dateHour = parseDate[3]; | |
| dateMin = parseDate[4]; | |
| } | |
| else { | |
| dateYear = parseDate[3]; | |
| dateDay = parseDate[1]; | |
| dateHour = parseDate[4]; | |
| dateMin = parseDate[5]; | |
| } | |
| switch (parseDate[2]) { | |
| case 'января': | |
| dateMonth = 0; | |
| break; | |
| case 'февраля': | |
| dateMonth = 1; | |
| break; | |
| case 'марта': | |
| dateMonth = 2; | |
| break; | |
| case 'апреля': | |
| dateMonth = 3; | |
| break; | |
| case 'мая': | |
| dateMonth = 4; | |
| break; | |
| case 'июня': | |
| dateMonth = 5; | |
| break; | |
| case 'июля': | |
| dateMonth = 6; | |
| break; | |
| case 'августа': | |
| dateMonth = 7; | |
| break; | |
| case 'сентября': | |
| dateMonth = 8; | |
| break; | |
| case 'октября': | |
| dateMonth = 9; | |
| break; | |
| case 'ноября': | |
| dateMonth = 10; | |
| break; | |
| case 'декабря': | |
| dateMonth = 11; | |
| break; | |
| default : | |
| dateMonth = 0; | |
| } | |
| } | |
| return new Date(dateYear, dateMonth, dateDay, dateHour, dateMin); | |
| } | |
| }; | |
| habr.init(); |
Author
В Google Chrome последний как ставить? Он по умолчанию не разрешает ставить расширения не из магазина.
Author
Устанавливаем это расширение (обезьянка):
Opera - https://addons.opera.com/ru/extensions/details/violent-monkey/
Mozilla - https://addons.mozilla.org/ru/firefox/addon/greasemonkey/
Chrome - https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo
Safari - http://8-p.info/greasekit/
Затем нажать Raw на этой странице вверху или установить через openuserjs - https://openuserjs.org/scripts/extensionsapp/habrahabr-userscript
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Заменял 2 строчки
на одну
Не хочет работать.