mirko mive

stream wpisów na żywo

当前为 2015-05-17 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name mirko mive
  3. // @namespace http://www.wykop.pl/
  4. // @version 0.4.4
  5. // @description stream wpisów na żywo
  6. // @author You
  7. // @match http://www.wykop.pl/mikroblog/*
  8. // @match http://www.wykop.pl/wpis/*
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. var interwal_ms, sound_1;
  13. var audio = new Audio();
  14.  
  15. handleDefaultAjaxRefresh = function($el, data) {
  16.  
  17. if (data.html) {
  18. $el = $("#itemsStream");
  19. var list = $($(data.html).html());
  20. list.find('.dC').addClass('newComment');
  21. $d = list.prependTo($el);
  22. $e = $d.find('div.media-content > a > img');
  23.  
  24. var t = $(window).scrollTop();
  25. var h = $d.outerHeight();
  26.  
  27. if (t){
  28. $e.hide();
  29. $(window).scrollTop(t + h + 2);
  30.  
  31. $($e).one('load', function () {
  32. $e.show();
  33. var imgHeight = $(this).outerHeight();
  34. var dm = $(window).scrollTop();
  35. $(window).scrollTop(dm + $d.outerHeight() - h);
  36. });
  37. } else {
  38. $e.show();
  39. }
  40.  
  41. $el.find('.newComment').animate({
  42. "border-left-color": 'transparent'
  43. }, 2000);
  44.  
  45. if (sound_1) {
  46. audio.play();
  47. }
  48.  
  49. $("#newEntriesCounter").text("");
  50. //$("#rightFooterBoxCounter").find(".active-counter").text("");
  51. //$("#rightFooterBoxCounter").hide();
  52. console.log('nowy wpis - dodałem');
  53. wykop.bindLazy();
  54.  
  55. setTimeout(function(){
  56. wykop.checkNewEntries();
  57. }, interwal_ms);
  58.  
  59. } else {
  60. if (data.count > 0) {
  61. var lastItem = $(wykop.params.ajaxAutoRefresh.selector);
  62. var link = wykop.params.ajaxAutoRefresh.url + 'type/' + lastItem.data().type + '/id/' + lastItem.data().id + '/hash/' + wykop.params.hash + '/html/1';
  63. $("#newEntriesCounter").html("<div class=\"type-light-warning active-annotation\"><a href=\"#\" class=\"dark ajax space\" data-ajaxurl=\"" + link + "\">" + wykop.varietyFromNumber(data.count, ["Pojawił się", "Pojawiły się", "Pojawiło się"]) + " <b class=\"red\">" + data.count + " " + wykop.varietyFromNumber(data.count, ["nowy wpis", "nowe wpisy", "nowych wpisów"]) + "</b>, " + wykop.varietyFromNumber(data.count, ["pokaż go", "pokaż je", "pokaż je"]) + "</a></div>");
  64. console.log('nowe wpisy - klikam!');
  65. $('#newEntriesCounter > div > a').trigger("click");
  66. //$("#newEntriesCounter").fadeIn();
  67. //$("#rightFooterBoxCounter").show();
  68. //$("#rightFooterBoxCounter").find(".active-counter").text(data.count);
  69. } else {
  70. $("#rightFooterBoxCounter").hide();
  71. $("#newEntriesCounter").hide().text("");
  72. console.log('brak nowych wpisów!');
  73. setTimeout(function(){
  74. wykop.checkNewEntries();
  75. }, interwal_ms);
  76. }
  77. }
  78. };
  79.  
  80. $(document).ready(function(){
  81.  
  82. if (document.location.pathname.match('/mikroblog/')){
  83.  
  84. // button/link do live
  85. $('#site > div > div.grid.m-reset-float > div > div.nav.bspace.rbl-block > ul:last-child').append('<li id="live"><a href="http://www.wykop.pl/mikroblog/live/"><span style="font-weight: bold; font-size: 30px; vertical-align: middle;" id="green_icon">•</span><span> live</span></a></li>');
  86.  
  87. if (document.location.pathname.match('/live')){
  88.  
  89. //ładowanie ustawień użytkownika z localstorage
  90. if (localStorage.mirkoLiveSound !== undefined && localStorage.mirkoLiveInterval !== undefined){
  91. interwal_ms = +localStorage.mirkoLiveInterval;
  92. sound_1 = +localStorage.mirkoLiveSound;
  93.  
  94. // ładowanie panelu ustawień czita po prawej
  95. $('#site > div > div.grid-right.m-reset-float.m-reset-margin.m-reset-width.m-hide').prepend('<div class="r-block mirko-live"><h4>Mirko live ustawienia <a id="mirko-live-rozwin" href=""><i class="fa fa-chevron-down"></i></a> </h4><ul id="ukryte-ustawienia" <="" ul="" style="display: block;"><li><p>odświeżanie (ms)</p><select> <option value="50">50ms</option><option value="100">100ms</option><option value="150">150ms</option><option value="250">250ms</option><option value="350">350ms</option><option value="500">500ms</option><option value="1000">1000ms</option><option value="2000">2000ms</option><option value="5000">5000ms</option></select><p>dźwięk </p><select><option value="1">wł.</option><option value="0">wył.</option></select><br><p>zmień dźwięk (mp3, wav)</p><input type="text" name="audio_url" id="audio_url"><br><br><button class="submit " tabindex="2" id="mirko-live-save">zapisz</button></li></ul></div>');
  96. $("#ukryte-ustawienia > li > select:nth-child(2) > option[value='" + interwal_ms + "']").attr("selected","selected");
  97. $("#ukryte-ustawienia > li > select:nth-child(4) > option[value='" + sound_1 + "']").attr("selected","selected");
  98. } else {
  99. interwal_ms = 250;
  100. sound_1 = 1;
  101. localStorage.mirkoLiveInterval = 250;
  102. localStorage.mirkoLiveSound = 1;
  103. $('#site > div > div.grid-right.m-reset-float.m-reset-margin.m-reset-width.m-hide').prepend('<div class="r-block mirko-live"><h4>Mirko live ustawienia <a id="mirko-live-rozwin" href=""><i class="fa fa-chevron-down"></i></a> </h4><ul id="ukryte-ustawienia" <="" ul="" style="display: block;"><li><p>odświeżanie (ms)</p><select> <option value="50">50ms</option><option value="100">100ms</option><option value="150">150ms</option><option value="250" selected>250ms</option><option value="350">350ms</option><option value="500">500ms</option><option value="1000">1000ms</option><option value="2000">2000ms</option><option value="5000">5000ms</option></select><p>dźwięk </p><select><option value="1" selected>wł.</option><option value="0">wył.</option></select><br><br><button class="submit " tabindex="2" id="mirko-live-save">zapisz</button></li></ul></div>');
  104. }
  105.  
  106. //zwiń panel ustawień
  107. $('#ukryte-ustawienia').hide();
  108.  
  109. // ładowanie Audio
  110. if (localStorage.mirkoLiveAudio !== undefined){
  111. audio.setAttribute('src', localStorage.mirkoLiveAudio);
  112. audio.load();
  113. } else {
  114. //default audio
  115. audio.setAttribute('src', 'http://www.soundjay.com/switch/switch-7.wav');
  116. audio.load();
  117. }
  118.  
  119.  
  120. // start funkcji
  121. wykop.handleDefaultAjaxRefresh = handleDefaultAjaxRefresh;
  122. setTimeout(function(){
  123. wykop.ajaxAutoRefreshJob = function(){};
  124. },4000);
  125.  
  126. // button "live"
  127. $('#site > div > div.grid.m-reset-float > div > div.nav.bspace.rbl-block > ul:nth-child(3) > li.active').removeClass('active');
  128. $('#live').html('<li class="active"><a href="http://www.wykop.pl/mikroblog/live/"><span style="color: green; font-weight: bold; font-size: 30px; vertical-align: middle;" id="green_icon">•</span><span> live</span></a></li>');
  129.  
  130. // rozwijanie panelu ustawień
  131. $('#mirko-live-rozwin').on('click', function(e){
  132. e.preventDefault();
  133. var t = $(this);
  134. t.children(':first').toggleClass('fa-chevron-down fa-chevron-up');
  135. $('#ukryte-ustawienia').toggle();
  136. })
  137.  
  138.  
  139. // zapisywanie ustawień
  140. $('#mirko-live-save').on('click', function(e){
  141. e.preventDefault();
  142.  
  143. interwal_ms = +$('#ukryte-ustawienia > li > select:nth-child(2)').val();
  144. sound_1 = +$('#ukryte-ustawienia > li > select:nth-child(4)').val();
  145. localStorage.mirkoLiveInterval = interwal_ms;
  146. localStorage.mirkoLiveSound = sound_1;
  147.  
  148. var t = $('#audio_url').val();
  149. if (t.length > 0){
  150. audio.setAttribute('src', t);
  151. localStorage.mirkoLiveAudio = t;
  152. audio.load();
  153. }
  154.  
  155. $('#ukryte-ustawienia').slideUp('1000', function(){
  156. $('#mirko-live-rozwin > i').toggleClass('fa-chevron-down fa-chevron-up');
  157. });
  158.  
  159. })
  160.  
  161.  
  162. // animacja buttona "live"
  163. setInterval(function(){
  164. $('#green_icon').css('visibility','hidden');
  165. setTimeout(function(){
  166. $('#green_icon').css('visibility','visible');
  167. },1000)
  168. },2000);
  169.  
  170.  
  171. // czyszczenie starych wpisów
  172. setInterval(function(){
  173. $('#itemsStream > li:nth-child(n+50)').remove();
  174. console.log('usunięto stare wpisy');
  175. },30000);
  176.  
  177. }
  178. };
  179.  
  180. if (document.location.pathname.match('/wpis/')){
  181. $('#site > div > div.grid.m-reset-float > div > div.nav.bspace.rbl-block > ul:last-child').append('<li id="live"><a href="http://www.wykop.pl/mikroblog/live/"><span style="font-weight: bold; font-size: 30px; vertical-align: middle;" id="green_icon">•</span><span> live</span></a></li>');
  182. };
  183.  
  184. /*
  185. if (document.location.pathname.match('/tag/')){
  186. var location = document.location.href;
  187. $('#site > div > div.grid.m-reset-float > div > div.rbl-block.media-header > div > ul:nth-child(4) > li:last-child').append('<li id="live"><a href="' + location + '?=live/"><span style="font-weight: bold; font-size: 30px; vertical-align: middle;" id="green_icon">•</span><span> live</span></a></li>');
  188.  
  189. if (document.location.pathname.match('/?=live')){
  190.  
  191. wykop.ajaxAutoRefreshJob = function(){};
  192. wykop.handleDefaultAjaxRefresh = handleDefaultAjaxRefresh;
  193.  
  194. $('#site > div > div.grid.m-reset-float > div > div.rbl-block.media-header > div > ul:nth-child(4) > li').removeClass('active');
  195. $('#live').html('<li class="active"><a href="http://www.wykop.pl/mikroblog/live/"><span style="color: green; font-weight: bold; font-size: 30px; vertical-align: middle;" id="green_icon">•</span><span> live</span></a></li>');
  196.  
  197. setInterval(function(){
  198. $('#green_icon').css('visibility','hidden');
  199. setTimeout(function(){
  200. $('#green_icon').css('visibility','visible');
  201. },1000)
  202. },2000);
  203.  
  204. setInterval(function(){
  205. $('#itemsStream > li:nth-child(n+50)').remove();
  206. console.log('usunięto stare wpisy');
  207. },60000);
  208. }
  209. }
  210. */
  211. })