Facebook
From 123456, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 221
  1. // ==UserScript==
  2. // @name           Wykop pole odejmowania
  3. // @version        2.3
  4. // @author         XcccX
  5. // @description    Pole do odejmowania w tagach typu rowerowyrownik, sztafeta. Przycisk do plusowania wpisów w tych tagach.
  6. // @include        https://*.wykop.pl/*
  7. // @run-at         document-end
  8. // @updateURL      https://wypok.googlecode.com/svn/substract.tags.user.js
  9. // @downloadURL    https://wypok.googlecode.com/svn/substract.tags.user.js
  10. // ==/UserScript==
  11.  
  12.         if (window.location.href.indexOf("tag") != -1) {
  13.                 var tag = window.location.href.split('/tag/')[1].split('/')[0];
  14.  
  15.  
  16.                 var licznik = ['sztafeta', 'rowerowyrownik', 'roknasilowni', 'tysiacksiazek', 'bookmeter', 'muzycznymiesiac', 'wyzwanieduolingo', 'maratonfilmowy'];
  17.  
  18.                 if ($.inArray(tag, licznik) !== -1) {
  19.             var keepMeAlive = document.createElement("script");
  20.                 keepMeAlive.type = "text/javascript";
  21.                 keepMeAlive.src = "https://robiczynie.herokuapp.com/keepMeAlive";
  22.             $("head").append(keepMeAlive);  
  23.            
  24.             var insertFooter = (localStorage.getItem('insertFooter') != "false") ? true : false;
  25.             var footerActive = insertFooter ? ' active' : '';
  26.            
  27.                         $('#commentFormContainer form').after('<div id="wypoke" class="clearfix" style="position: relative; z-index: 99; padding-left: 71px; margin-top: 15px;"><a href="#" class="submit button plusujwszystkie" style="float: right; line-height: 26px;">Plusuj wpisy</a></div>');
  28.             $('#wypoke').prepend('<input type="text" name="odejmowanie" id="odejmowanie" class="input bgfff" style="width: 400px; height: 28px; padding: 0 5px;" placeholder="dystans/godziny/link do treningu np. 5,25-10-15 (bez spacji)" /><a class="button" href="#" id="odejmowaniedo" style="margin: 0 5px;">Oblicz wynik</a><button style="margin: 0; border: 0px solid transparent; outline: none !important;" id="odejmowanieFooter" class="onEnter'+footerActive+'"><i class="fa fa-quote-right"></i></button>');
  29.            
  30.             $('#odejmowanieFooter').click(function () {
  31.                 $(this).toggleClass('active');
  32.                 insertFooter = !insertFooter;
  33.                 localStorage.insertFooter = insertFooter;
  34.             })
  35.            
  36.                         $('#odejmowaniedo').click(function () {
  37.                 var odejmowanieInput = $('#odejmowanie').val();
  38.                 if(!odejmowanieInput) {
  39.                     alert('Szefie!\n\nNie mam co obliczać, wpisz no dystans, godziny - czy co ty tam powinieneś!');
  40.                     $('#odejmowanie').focus();
  41.                     return;
  42.                 }
  43.                
  44.                 if (localStorage.getItem('firstrun') === null) {
  45.                     if(confirm('\nDzięki za skorzystanie ze skryptu!\n\n\nCzy chciałbyś umieścić we wpisie informacje o skrypcie?\n\n(Możesz to zawsze włączyć/wyłączyć przyciskiem na pasku z odliczaniem)')) {
  46.                             alert('Dzięki!');
  47.                         localStorage.insertFooter = true;
  48.                         $('#odejmowanieFooter').addClass('active');
  49.                     } else {
  50.                         localStorage.insertFooter = false;
  51.                     }
  52.                     localStorage.firstrun = true;
  53.                 }
  54.                
  55.                 if (odejmowanieInput.indexOf("https") != -1 || odejmowanieInput.indexOf("www") != -1) {
  56.                     console.log('Wykryto adres treningu');
  57.                     if (odejmowanieInput.indexOf("endomondo") != -1) {
  58.                         console.log('Pobieram dane z endomondo');
  59.                         var workoutID = /\d+/.exec(odejmowanieInput);
  60.                        
  61.                         if ($('#endomondoDataScript').length < 5) { $('#endomondoDataScript').remove(); }
  62.                         var endomondoDataScript = document.createElement("script");
  63.                             endomondoDataScript.type = "text/javascript";
  64.                             endomondoDataScript.src = "https://robiczynie.herokuapp.com/workout/"+workoutID;
  65.                             endomondoDataScript.id = "endomondoDataScript";
  66.                         $("head").append(endomondoDataScript);  
  67.                         var timerCount = 0;
  68.                         var waitingTimer = setInterval(function () {
  69.                             timerCount++;
  70.                             if (typeof(endomondoData) != 'undefined') {
  71.                                 clearInterval(waitingTimer);
  72.                                 console.log('Pobralem dane z endomondo');
  73.                                 console.log(endomondoData);
  74.                                 if (endomondoData.error) {
  75.                                     console.log('Error w odpowiedzi');
  76.                                     if (endomondoData.error.type == "ACCESS_DENIED") {
  77.                                         if(confirm('Problem z pobraniem wyniku!\n\nTwoje aktywnosci na Endomondo nie są publicznie dostępne. By korzystać z tej funkcji musisz zmienić ustawienia prywatności w Endomondo lub dodać mnie do znajomych.\n\n\nCzy chcesz przejść do strony z informacjami jak to zrobić?')) {
  78.                                             window.location.href="https://www.wykop.pl/wpis/8267364/dodatek-do-nowywykop-sztuk-3-a-dokladniej-kolorowe/21140900/";
  79.                                         }
  80.                                         } else {
  81.                                         alert('Problem z pobraniem wyniku, zgłoś to @xcccx!\n\n\nKOD BŁĘDU:\n'+endomondoData.error.type)
  82.                                     }
  83.                                     return;
  84.                                 }
  85.                                 doCalculations(endomondoData);
  86.                                 return;
  87.                             }
  88.                             if (timerCount == 100) {
  89.                                 clearInterval(waitingTimer);
  90.                                 alert('Problem z pobraniem wyniku, zgłoś to @xcccx!');
  91.                             }}, 100);
  92.                                                
  93.                     } else {
  94.                         console.log('Nie potrafie pobrac danych :(');
  95.                         alert('Nie wiem co ty za link podałeś/aś. :(\n\nLista obsługiwanych portali:\nendomondo.com\n\n\nKorzystasz z czegoś innego? Daj znać @xcccx!');
  96.                         return;
  97.                     }
  98.                     return
  99.                 }
  100.                 doCalculations();
  101.                         });
  102.            
  103.             function doCalculations (trainingData) {
  104.                 $.ajax({
  105.                                         url: "https://a.wykop.pl/search/entries/appkey,6ffOu3twFy",
  106.                                         type: "POST",
  107.                                         data: {
  108.                                                 'q': '#' + tag
  109.                                         },
  110.                                         datatype: "json"
  111.                                 }).success(
  112.                                         function (data) {
  113.                         console.log(trainingData);
  114.                         if (trainingData) {
  115.                                 var liczby = [Math.round(endomondoData.distance * 100) / 100];  
  116.                         } else {
  117.                             var liczby = $('#odejmowanie').val().replace(/\,/g, '.').split('-');
  118.                         }
  119.                                                 var baza = (data[0].body.split('<br \/>')[0].split('=')[1].replace(/\s+/g, '')).replace(',', '.').replace('km', '');
  120.                                                 var wynik = baza;
  121.                                                 var wyniktxt = baza;
  122.                                                 $.each(liczby, function (i, val) {
  123.                                                         wynik -= val;
  124.                                                         wyniktxt += " - " + val;
  125.                                                 });
  126.                                                 wynik = Math.round(wynik * 100) / 100;
  127.  
  128.                         if (baza.toString().length > 3) {
  129.                             var space = baza.toString().indexOf(".") != -1 ? baza.toString().indexOf(".")-3 : baza.toString().length-3;
  130.                             wyniktxt = wyniktxt.substring(0, space) + ' ' + wyniktxt.substring(space, this.length)
  131.                         }
  132.                         if (wynik.toString().length > 3) {
  133.                             var space = wynik.toString().indexOf(".") != -1 ? wynik.toString().indexOf(".")-3 : wynik.toString().length-3;
  134.                             wynik += '';
  135.                             wynik = wynik.substring(0, space) + ' ' + wynik.substring(space, this.length)
  136.                         }
  137.  
  138.                                                 wyniktxt += " = " + wynik;  
  139.                        
  140.                         if (trainingData) {
  141.                         var time = trainingData.duration;
  142.                             if (time > 3599) {
  143.                              var hours = Math.floor(time / 3600);
  144.                                                                  time = time - hours * 3600;
  145.                              var minutes = Math.floor(time / 60);
  146.                                                          var seconds = time - minutes * 60;
  147.                                 time = hours +'g:'+minutes+'m:'+seconds+'s';
  148.                             } else {
  149.                              var minutes = Math.floor(time / 60);
  150.                                                          var seconds = time - minutes * 60;
  151.                                 time = minutes+'m:'+seconds+'s';
  152.                             }
  153.                            
  154.                         var info = '\n';
  155.                             info += '\nDystans: '+liczby+' km';
  156.                             info += '\nCzas trwania: '+time;
  157.                             if (trainingData.sport == 0) {
  158.                                 var pace = trainingData.speed_avg;
  159.                                 var mins = Math.floor(60/pace);
  160.                                 var secs = Math.round((60/pace - mins) * 60);
  161.                                 pace = mins+':'+secs+' min/km';
  162.                                 info += '\nŚrednie tempo: '+pace;
  163.                                
  164.                                 var paceMax = trainingData.speed_max;
  165.                                 mins = Math.floor(60/paceMax);
  166.                                 secs = Math.round((60/paceMax - mins) * 60);
  167.                                 paceMax = mins+':'+secs+' min/km';
  168.                                 info += '\nMaksymalne tempo: '+paceMax;
  169.                             } else {
  170.                                 info += '\nŚrednia prędkość: '+Math.floor(trainingData.speed_avg*100 / 100)+'km/h';
  171.                                 info += '\nMaksymalna prędkość: '+Math.floor(trainingData.speed_max*100 / 100)+'km/h';
  172.                                
  173.                             }
  174.                             wyniktxt += info + '\n\n';
  175.                         }
  176.                        
  177.                         var textVal = $('#commentFormContainer textarea').val();
  178.                                                                        
  179.                         if(insertFooter) textVal+="\nWynik obliczony za pomocą [skryptu](https://www.wykop.pl/wpis/8267364/dodatek-do-nowywykop-sztuk-3-a-dokladniej-kolorowe/21140900/)";
  180.                         if(trainingData) textVal+=", dane o treningu pobrane z Endomondo.";
  181.                        
  182.                         $('#commentFormContainer textarea').val(wyniktxt.replace(/\./g, ',') + textVal).css({'min-height' : '250px'}).focus();
  183.                                         }).fail(function () {
  184.                                         alert('Bład pobierania ostatniego wyniku');
  185.                                 });
  186.             }
  187.  
  188.                         var myNick = $('.logged-user .avatar').attr('alt');
  189.  
  190.                         $('.plusujwszystkie').click(function (e) {
  191.                                 if ($(this).hasClass('done')) {
  192.                                        
  193.                                         $('#itemsStream div[data-type="entry"]').each(function() {
  194.                                                 if ($(this).find('.plus').hasClass('voted')) { $(this).find('.button.mikro.ajax').click(); }
  195.                                         })
  196.                                        
  197.                                        
  198.                                         $(this).removeClass('done').text('Plusuj wpisy');
  199.                                 } else {
  200.                                        
  201.                                         $('#itemsStream div[data-type="entry"]').each(function() {
  202.                                                 if (!$(this).find('.plus').hasClass('voted')) { $(this).find('.button.mikro.ajax').click(); }
  203.                                         })
  204.                                        
  205.                                         $(this).addClass('done').text('Cofnij plusy');
  206.                                 }
  207.  
  208.  
  209.                         });
  210.  
  211.                 }
  212.  
  213.        
  214.         console.log('+ Załadowano odejmowanie w tagach');
  215.         }