- // ==UserScript==
- // @name Mirrorek+
- // @namespace http://www.wykop.pl/
- // @version 1.0.0
- // @description Narzędzie do mirrorowania wpisów i znalezisk.
- // @author http://www.wykop.pl/ludzie/rok2015/
- // @match http://*.wykop.pl/wpis/*
- // @match http://*.wykop.pl/moj/*
- // @match http://*.wykop.pl/link/*
- // @require https://gf.qytechs.cn/scripts/7223-moment-js/code/Momentjs.js?version=29866
- // @require https://gf.qytechs.cn/scripts/7243-spin-js/code/Spinjs.js?version=29979
- // @grant none
- // ==/UserScript==
-
-
- (function() {
-
- //////
-
- // Jeżeli nie chcesz dodawać automatycznie mirrora w powiązane znaleziska zmień poniżej true na false i zapisz.
-
- var automatyczne_Powiazane = true;
-
- /////
-
-
-
- //settings
- moment.locale("pl");
- var entryNumber = parseInt(localStorage.getItem('mirrorek.Number')) || 0; //liczba wpisów
- var entryCounter = parseInt(localStorage.getItem('mirrorek.Counter')) || 0; //licznik localstorage
- var thisLink = $('#itemsStream > li > div.wblock.lcontrast.dC > div > div.author.ellipsis > a:last-of-type').attr('href'); //link wpisu
-
-
- // dane o wpisie ładowane do tablicy
- function entryData() {
- var arrayLocaldata = new Array();
- arrayLocaldata[0] = $('.showProfileSummary:first > b').text(); //nick
- arrayLocaldata[1] = $('.showProfileSummary:first > b').css('color'); //kolor nicka
- arrayLocaldata[2] = $('#itemsStream > li > div.wblock.lcontrast.dC > a.profile > img').attr('data-original'); //avatar
- arrayLocaldata[3] = $('#itemsStream > li > div.wblock.lcontrast.dC > div > div.author.ellipsis > a:last-of-type > small > time').attr('title'); //data dodania wpisu
- arrayLocaldata[4] = $('#itemsStream > li > div.wblock.lcontrast.dC > div > div.author.ellipsis > a:last-of-type').attr('href'); //link do wpisu
- arrayLocaldata[5] = $('#itemsStream > li > div.wblock.lcontrast.dC').data("id"); //id wpisu
- arrayLocaldata[6] = $('#itemsStream > li:nth-child(1) > div > div > div.text > p').html(); //treść wpisu
- arrayLocaldata[7] = $('a.profile > img').attr('class'); // kolor paska
- arrayLocaldata[8] = $('#itemsStream > li > div.wblock.lcontrast.dC > div > div.text > div.media-content > a').attr('href') || 0; //link do zdjęcia/video/gifa
-
- arrayLocaldataJSON = JSON.stringify(arrayLocaldata); // tablica do JSON
- };
-
-
-
-
- //sprawdzenie dostępności mirrora na web.history
- function title() {
- var requestLink = encodeURI("http://archive.org/wayback/available?url="+thisLink+"&callback=?");
- $.getJSON(requestLink, function(result) {
- $("li.mirror > a").prop('title','Brak mirrora');
- $("li.mirror > a> i").css("color","#F62817");
- available = result.archived_snapshots.closest.available;
- timestamp = result.archived_snapshots.closest.timestamp;
- ago = moment(timestamp + 0000, "YYYYMMDDhhmmss Z").fromNow();
- if (available == true) {
- $("li.mirror > a").prop('title','ostatni mirror: '+ago);
- $("li.mirror > a> i").css("color","#85BB65");
- };
-
- });
- };
-
-
- //zapisywanie Wpisu
- function saveMirror() {
- Dim();
- entryData();
- var saveLink = "http://web.archive.org/save/" + thisLink;
- console.log('data '+arrayLocaldataJSON);
- $.ajax({
- url: saveLink,
- type: "GET",
- crossDomain: true,
- beforeSend: function(xhr){xhr.setRequestHeader('Access-Control-Allow-Origin', '*');},
- success: console.log('sukces'),
- complete: function(data) {
- entryCounter++;
- localStorage.setItem('mirrorek.link'+entryCounter+'n', arrayLocaldataJSON );
- localStorage.setItem('mirrorek.Counter', entryCounter);
- entryNumber++;
- localStorage.setItem('mirrorek.Number', entryNumber);
- unDim();
- alert("Mirror wykonany");
- }
- });
-
- };
-
-
-
-
-
- if (document.location.pathname.match('/wpis/')) {
-
- //tworzymy ikonkę mirrora we wpisie
- $('#itemsStream > li > div.wblock.lcontrast.dC > div > div.row.elements.actions > ul').append('<li class="mirror"><a href class="affect hide ajax"><i class="fa fa-flag-o"></i> mirror</a></li>');
- title();
-
- //wywołanie zapisywania
- $("li.mirror > a").click(function() {
- saveMirror();
- });
-
- };
-
-
-
-
-
-
- // dim background & spinner
- var opts = {lines: 13, length: 13, width: 6, radius: 19, corners: 1, rotate: 0, direction: 1, color: '#000', speed: 1, trail: 64, shadow: true, hwaccel: false, className: 'spinner', zIndex: 2e9, top: '50%', left: '50%'};
- var spinner;
-
- function Dim() {
- $('body').append('<div id="spinOverlay" class="overlay" style="display: block;"></div><div id="spinnerek" class="lightbox" style="display: block; top: 300px; left: 0px;"></div>');
- var target = document.getElementById('spinnerek');
- spinner = new Spinner(opts).spin(target);
- };
-
- function unDim() {
- spinner.stop();
- $('#spinOverlay').remove();
- $('spinnerek').remove();
- };
-
-
-
-
-
-
-
- // tworzenie menu "mirrorek"
- if (document.location.pathname.match('/moj/')) {
- $('#site > div > div.grid.m-reset-float > div > div.nav.bspace.rbl-block > ul:nth-child(3) > li:nth-child(3)').after('<li id=mir><a href="http://www.wykop.pl/moj/mirrorek"><span>mirrory <b>('+entryNumber+')</b></span></a></li>');
- };
-
-
-
-
-
-
-
-
- //zakładka mirrorek - lista wpisów
- if (document.location.pathname.match('/mirrorek/')) {
- //menu
- $('ul:nth-child(3) > li.active').removeClass('active');
- $('#mir').addClass('active');
- $('.entry.iC ').remove();
- $('.link.iC ').remove();
- $('div.wblock ').remove();
-
- $('#site > div > div.grid.m-reset-float > div > div.nav.bspace.rbl-block > ul:nth-child(2) > li:nth-child(1)').removeClass('active').html('<a href="#" id="zapisz" class="ajax">zapisz</a>'); //zakładka zapisz
- $('#site > div > div.grid.m-reset-float > div > div.nav.bspace.rbl-block > ul:nth-child(2) > li:nth-child(2)').removeClass('active').html('<a href="#" id="import" class="ajax">importuj</a>'); //zakładka importuj
-
- //wypisuje listę mirrów
- x = 1
- while (x <= entryCounter) {
- var getArray = JSON.parse(localStorage.getItem('mirrorek.link'+x+'n')) || 0;
- console.log(x);
- if (getArray == 0) {
- x++;
- } else {
- var author = getArray[0]; //autor
- var color = getArray[1]; //kolor nicka
- var avatar = getArray[2]; //avatar
- var addDate = getArray[3]; //data wpisu
- var link = getArray[4]; //link do wpisu
- var idWpis = getArray[5]; //id wpisu
- var paragraf = getArray[6]; //treść wpisu
- var avatarClass = getArray[7]; //kolor paska
- var mediaWpis = getArray[8]; //załącznik wpisu
- var linkToMirror = "http://web.archive.org/web/"+link; //link do mirrora
- var linkToAll = "http://web.archive.org/web/*/"+link; //link do wszystkich
- var timeMoment = moment(addDate, "YYYY-MM-DD HH:mm:ss").fromNow();
-
- // dodawanie załącznika do wpisu
- var divMedia;
- if (mediaWpis === undefined) {
- divMedia = "";
- }
- else if (mediaWpis !== 0 ) {
- divMedia = '<div class="media-content hide-image" data-type="entry"><a href="'+mediaWpis+'" data-open="1" class="ajax" data-ajaxurl="http://www.wykop.pl/ajax2/embed/html/type/entry/id/'+idWpis+'/">[zobacz media]</a></div>'
- }
- else {
- divMedia = "";
- }
-
-
- //ładowanie wpisu
- $('#site > div > div.grid.m-reset-float > div > div.nav.bspace.rbl-block').after('<ul id="itemsStream" class="comments-stream"><li class="entry iC"><div class="wblock lcontrast dC " data-id="'+idWpis+'" data-type="entry"><a name="" style="position: relative; top: -120px"> </a><a class="profile" href="http://www.wykop.pl/ludzie/'+author+'/" title=""><img class="'+avatarClass+'" alt="" src="'+avatar+'"></a><div><div class="author ellipsis "><a class="showProfileSummary" href="http://www.wykop.pl/ludzie/'+author+'/" title=""><b style="color:'+color+'">'+author+' </b></a><a href="'+link+'"><small class="affect"><time title="'+addDate+'" pubdate="">'+timeMoment+'</time></small></a><small class="affect"></small></div><div class="text"><p>'+paragraf+'</br>'+divMedia+'</p></div><div class="row elements actions"><a href="'+linkToMirror+'" class="affect hide"><i class="fa fa-chain"></i> Ostatni</a><a href="'+linkToAll+'" class="affect hide"><i class="fa fa-chain"></i> Wszystkie</a><a href="'+link+'" class="affect hide"><i class="fa fa-chain"></i> Wykop</a><a href=" " class="affect hide ajax" id="mirrorek.link'+x+'n"><i class="fa fa-trash-o"></i> Usuń</a></div></div></div></div></li></ul>');
- x++;
- };
- };
-
-
-
- // usuwanie wpisu z localstorage, zmiana liczby mirrorów
- $('a.affect.hide.ajax').click(function() {
- localStorage.removeItem($(this).attr('id'));
- $(this).closest('.comments-stream').hide();
- entryNumber--;
- localStorage.setItem('mirrorek.Number', entryNumber);
- });
-
-
-
- // naprawianie spoilerów w /mirrorek/
- $('.showSpoiler').click(function() {
- $(this).css('display','none');
- $(this).next().addClass('spoilerBody').css('display','inline');
- });
-
-
-
-
- //zapisz mirrory do pliku
- $('#zapisz').click(function() {
- text = [];
- var x = 1;
- while (x <= entryCounter) {
- var linkNumber = 'mirrorek.link'+x+'n';
- var storageItem = JSON.parse(localStorage.getItem('mirrorek.link'+x+'n')) || 0;
- if (entryCounter == 0) {
- alert("brak wpisów");
- return false;
- } else if (storageItem == 0) {
- x++;
- }
- else {
- text[x] = [linkNumber, storageItem];
- console.log(text[x]);
- console.log("długość tablicy "+text.length);
- x++;
- }
- };
- textJSON = JSON.stringify(text);
- this.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(textJSON));
- this.setAttribute('download', "mirrorek-save.json");
- $(this).removeClass('ajax');
- });
-
-
-
- // importowanie wpisów z pliku, nie do końca wiem co tu sie dzieje
- $('#import').click(function() {
- $('body').prepend('<div id="violationContainer"><div class="overlay" style="display: block;"></div><div id="zgloszenie" class="normal m-set-fullwidth m-reset-top m-reset-margin m-reset-left" style="height: 300px; width: 400px"><div style="position: absolute; top: 4%; left: 96%;"><a href="#" title="zamknij" class="fright close"><span class="icon inlblk mini closepreview"><i class="fa fa-times"></i></span></a></div><input type="file" id="input" style="position: absolute; left: 35%; top: 50%;"/></div></div>');
- function readSingleFile(e) {
- var file = e.target.files[0];
- if (!file) {
- return;
- }
- var reader = new FileReader();
- reader.onload = function(e) {
- var contents = e.target.result;
- displayContents(contents);
- };
- reader.readAsText(file);
- };
-
- function displayContents(contents) {
- var entryNumber = 0;
- localStorage.setItem('mirrorek.Number', entryNumber);
-
- listaJSON = JSON.parse(contents);
-
- var x = 1;
- while (x <= listaJSON.length-1) {
- if (listaJSON[x] == null) {
- x++;
- }
- else {
- var klucz = listaJSON[x][0];
- console.log("klucz "+klucz);
- var wartosc = JSON.stringify(listaJSON[x][1]);
- localStorage.setItem(klucz, wartosc);
- console.log("liczkik = "+x);
- entryNumber++;
- localStorage.setItem('mirrorek.Number',entryNumber);
- x++;
- }
- localStorage.setItem('mirrorek.Counter', x);
- };
- if (x = listaJSON.length-1) {
- $('#violationContainer').remove();
- location.reload();
- }
-
- };
-
- document.getElementById('input')
- .addEventListener('change', readSingleFile, false);
- });
- };
-
-
-
- // mirrorowanie znalezisk
- if (document.location.pathname.match('/link/')) {
-
- //tworzymy przycisk
- $('#site > div > div.grid.m-reset-float > div > div:nth-child(1) > div.bspace > div > div.lcontrast.m-reset-float.m-reset-margin > div.row.elements.actions > ul').append('<li><a href="#" class="affect" id="mirror"><i class="fa fa-flag-o"></i> mirror</a></li>');
-
- var linkZnaleziskoSave = "http://web.archive.org/save/" + $('div.fix-tagline > span:nth-child(2) > a').attr('href');
- var linkZnalezisko = "http://web.archive.org/web/" + $('div.fix-tagline > span:nth-child(2) > a').attr('href');
-
- $('#mirror').click(function() {
- Dim();
- $.ajax({
- url: linkZnaleziskoSave,
- type: "GET",
- crossDomain: true,
- beforeSend: function(xhr){xhr.setRequestHeader('Access-Control-Allow-Origin', '*');},
- success: console.log('link zapisany na web.history.org'),
- complete: function(data) {
- console.log("sukces"+data);
-
- if (automatyczne_Powiazane == true) {
-
- (function sendPowiazane() {
-
- var request;
- var params;
-
- request = new XMLHttpRequest();
-
- var token = $('#__token').val();
- var title = "Mirror (web.archive.org) by #mirrorek"
- var url = linkZnalezisko;
- var link_id = $('input[name="trackback[link_id]"').val();
- var action = $('#addRelatedForm > form').attr('action');
-
- params = "&__token=" + token+ "&trackback[title]=" + title + "&trackback[url]=" + url + "&trackback[link_id]=" + link_id;
- console.log(params);
-
- request.open("POST", action, true);
-
- request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
-
- request.send(params);
- request.responseType = "document";
-
- request.onreadystatechange = function() {
- console.log(request.status);
- console.log(request.readyState);
- if(request.readyState == 4 && request.status == 200) {
- console.log(request.responseXML);
- (function() {
- if ($(request.responseXML).find('#site > div > div.grid.m-reset-float > div > div > div > div > div.row.buttons.text-right > div > a').attr('href') == "http://www.wykop.pl/") {
- unDim();
- alert('Przekroczony limit dodawania powiązanych, error');
- }
- else if ($(request.responseXML).find('#realted-add-form > fieldset:nth-child(1) > div').hasClass('error') == true) {
- unDim();
- alert('Link o tym adresie już istnieje, ale mirror został zaktualizowany');
- }
- else {
- unDim();
- alert('Mirror zapisany');
- location.reload();
- }
- })();
- }
- };
-
- })();
- };
-
- }
- });
-
- });
- }
-
- })();