Greasy Fork is available in English.

HWM_TransferSearch

Поиск по протоколу передач

Устаревшая версия на 28.11.2018. Перейти к последней версии.

// ==UserScript==
// @name           HWM_TransferSearch
// @namespace      Рианти
// @version        1.40.0
// @homepage       https://greasyfork.org/en/scripts/374608-hwm-transfersearch
// @author         Alex_2oo8, Рианти, CheckT
// @description    Поиск по протоколу передач
// @include        https://www.heroeswm.ru/pl_transfers.php*
// @include        https://www.lordswm.com/pl_transfers.php*
// @include        http://178.248.235.15/pl_transfers.php*
// ==/UserScript==


(function(){

    var url = location.protocol+'//'+location.hostname+'/';
  try{
      GM_addStyle( '#HWM_transfer_search_checkbox_label {background-image:url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJIAAAAsCAYAAACOu+GLAAABrElEQVR42u3bsWrCQByA8RhdXBzEJY8gcXZz9Ek6BkIhSxBck1foG3QogpPg5uguklG6iIPU4qCT+ZcLGDiibY03ZPiGD4yaLPcTyV3O+nh/E6JnStNULPXi1X8xlunrUbX7/vrUIakDE5m+HlU7IBGQCEgEJCARkAhIBCQCEpAISAQkAhKQgAQkAhIBiYAEJAISAYmqC0kdmMr09aj6ZZD4VZGJLHZBELtIiF0kxF0bkMg8pOVyKd1uF0hAem7gfd8Xy7KABKTyA+95XoYISEAqDSkIghwRkIBUgLRarf48OQxDDVGz2QQSkPSB7/f7st1u7544Go00RI1GQxaLBZCApA98rVYTx3HkeDxqJ1wuFxmPxxoi9d0kSbj9B9JtSApJu92W/X6fvx9FUf7Ztc1mwzwSkG5DqtfrOZRer5f9zcVxrAFSzedzJiTpPqThcKiB6XQ6BUSTyYSZbfod0m63E9d1C3iuzWYzlkjof/NI5/NZWq1WAdF6vWatjR6bkDydTtkamgJk23a2psaiLZWa2T4cDjIYDGQ6nbL6TzxGQkAidpEQu0iIHuwH8Zq0OtRsnH4AAAAASUVORK5CYII%3D\');background-position:top;display:block;width:120px;height:18px;padding:2px;padding-left:24px;line-height:18px;-moz-user-select:none;cursor:default;}' +
          '#HWM_transfer_search_checkbox_label.checked {background-position:bottom;}' +
          '.HWM_transfer_search_checkbox_checkbox {display:none;}' );

      var id = getId();
      var td_arr = document.getElementsByTagName('td');
      for (var i = 0; i < td_arr.length; i++)
      {
  //		if ( /&nbsp;&nbsp;[0-9]{2}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/.test( td_arr[i].innerHTML ) )
          if ( td_arr[i].getElementsByTagName('center').length > 0 && /\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438\u0433\u0440\u043e\u043a\u0430 <a.* href="pl_info\.php\?id=[0-9]*"><b>.*<\/b><\/a>/.test( td_arr[i].getElementsByTagName('center')[0].innerHTML ) )
          {
              var elem = td_arr[i];
              break;
          }
      }
      var text = document.createElement( 'text' );
      text.innerHTML = '&nbsp;(';
      text.id = 'TSearch';
      var a = document.createElement( 'a' );
      a.href = 'javascript: void(0);';
      a.innerHTML = '\u041f\u043e\u0438\u0441\u043a \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443';
      text.appendChild( a );
      text.innerHTML += ')';
      elem.getElementsByTagName('center')[0].appendChild( text );
      elem.getElementsByTagName('center')[0].lastChild.getElementsByTagName('a')[0].addEventListener( 'click', function() { document.getElementById('transferSearchDiv').style.display = ( document.getElementById('transferSearchDiv').style.display == 'none' ? 'block' : 'none' ); }, false );
      var div = document.createElement( 'div' );
      div.id = 'transferSearchDiv';
      div.style.display = 'none';
      var tb = document.createElement( 'table' );

      var tr = document.createElement( 'tr' );
      var td = document.createElement( 'td' );
      td.innerHTML = '\u041f\u043e\u0438\u0441\u043a \u043f\u043e \u043d\u0438\u043a\u0443:';
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var inp = document.createElement( 'input' );
      inp.type = 'text';
      inp.id = 'TSearchNick';
      td.appendChild( inp );
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var inp = document.createElement( 'input' );
      inp.type = 'button';
      inp.value = '\u041f\u043e\u0438\u0441\u043a';
      inp.id = 'TSearchByNick';
      td.appendChild( inp );
      tr.appendChild( td );
      tb.appendChild( tr );

      var tr = document.createElement( 'tr' );
      var td = document.createElement( 'td' );
      td.innerHTML = '\u041f\u043e\u0438\u0441\u043a \u0448\u0442\u0440\u0430\u0444\u043e\u0432:';
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var label = document.createElement( 'div' );
      label.id = 'HWM_transfer_search_checkbox_label';
      label.innerHTML += '\u0411\u043b\u043e\u043a\u0438 / \u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438';
      td.appendChild( label );
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var inp = document.createElement( 'input' );
      inp.type = 'button';
      inp.value = '\u041f\u043e\u0438\u0441\u043a';
      inp.id = 'TSearchByFine';
      td.appendChild( inp );
      tr.appendChild( td );
      tb.appendChild( tr );

      var tr = document.createElement( 'tr' );
      var td = document.createElement( 'td' );
      td.innerHTML = '\u041f\u043e\u0438\u0441\u043a \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e:';
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var inp = document.createElement( 'input' );
      inp.type = 'text';
      inp.id = 'TSearchDesc';
      td.appendChild( inp );
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var inp = document.createElement( 'input' );
      inp.type = 'button';
      inp.value = '\u041f\u043e\u0438\u0441\u043a';
      inp.id = 'TSearchByDesc';
      td.appendChild( inp );
      tr.appendChild( td );
      tb.appendChild( tr );

      var tr = document.createElement( 'tr' );
      var td = document.createElement( 'td' );
      td.innerHTML = '\u041f\u043e\u0438\u0441\u043a \u043f\u043e \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0443:';
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var inp = document.createElement( 'input' );
      inp.type = 'text';
      inp.id = 'TSearchArt';
      td.appendChild( inp );
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var inp = document.createElement( 'input' );
      inp.type = 'button';
      inp.value = '\u041f\u043e\u0438\u0441\u043a';
      inp.id = 'TSearchByArt';
      td.appendChild( inp );
      tr.appendChild( td );
      tb.appendChild( tr );

      var tr = document.createElement( 'tr' );
      var td = document.createElement( 'td' );
      td.innerHTML = 'Общий поиск:';
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var inp = document.createElement( 'input' );
      inp.type = 'text';
      inp.id = 'TSearchAll';
      td.appendChild( inp );
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var inp = document.createElement( 'input' );
      inp.type = 'button';
      inp.value = '\u041f\u043e\u0438\u0441\u043a';
      inp.id = 'TSearchAny';
      td.appendChild( inp );
      tr.appendChild( td );
      tb.appendChild( tr );

      var tr = document.createElement( 'tr' );
      var td = document.createElement( 'td' );
      td.innerHTML = 'По рег. выражению:';
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var inp = document.createElement( 'input' );
      inp.type = 'text';
      inp.id = 'TSearch_inp_regexp';
      td.appendChild( inp );
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var inp = document.createElement( 'input' );
      inp.type = 'button';
      inp.value = '\u041f\u043e\u0438\u0441\u043a';
      inp.id = 'TSearch_but_regexp';
      td.appendChild( inp );
      tr.appendChild( td );
      tb.appendChild( tr );

      var tr = document.createElement( 'tr' );
      var td = document.createElement( 'td' );
      td.innerHTML = 'По айди:';
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var inp = document.createElement( 'input' );
      inp.type = 'text';
      inp.id = 'TSearch_inp_id';
      td.appendChild( inp );
      tr.appendChild( td );
      var td = document.createElement( 'td' );
      var inp = document.createElement( 'input' );
      inp.type = 'button';
      inp.value = '\u041f\u043e\u0438\u0441\u043a';
      inp.id = 'TSearch_but_id';
      td.appendChild( inp );
      tr.appendChild( td );
      tb.appendChild( tr );

      div.appendChild( tb );
      elem.getElementsByTagName('center')[0].appendChild( div );

      document.getElementById('HWM_transfer_search_checkbox_label').addEventListener( 'click', function() { if ( this.className.indexOf('checked') != -1 ) this.className = ''; else this.className = 'checked'; }, false );
      document.getElementById('TSearchByNick').addEventListener( 'click', function() { search( id, elem, 'Nick' ); }, false );
      document.getElementById('TSearchByFine').addEventListener( 'click', function() { search( id, elem, 'Fine' ); }, false );
      document.getElementById('TSearchByDesc').addEventListener( 'click', function() { search( id, elem, 'Desc' ); }, false );
      document.getElementById('TSearchByArt').addEventListener( 'click', function() { search( id, elem, 'Art' ); }, false );
      document.getElementById('TSearchAny').addEventListener( 'click', function() { search( id, elem, 'Any' ); }, false );
      document.getElementById('TSearch_but_regexp').addEventListener( 'click', function() { search( id, elem, 'Regexp' ); }, false );
      document.getElementById('TSearch_but_id').addEventListener( 'click', function() { search( id, elem, 'ID' ); }, false );

      var iFrame= document.createElement('iframe');
      iFrame.width=1;
      iFrame.height=1;
      iFrame.src=url+"ticker.html";
      document.body.appendChild(iFrame);
      
  } catch (e) {
      try{
        console.log(e);
      } catch (ee) {
        alert(e+"\n"+ee);
      }
  }

  function GM_addStyle(css) {
      var head, style;
      head = document.getElementsByTagName('head')[0];
      if (!head) { return; }
      style = document.createElement('style');
      style.type = 'text/css';
      style.innerHTML = css;
      head.appendChild(style);
  }

  function search( id, elem, type )
  {
      var stop = document.createElement( 'input' );
      stop.type = 'hidden';
      stop.value = '0';
      stop.id = 'stop';
      document.getElementsByTagName('body')[0].appendChild( stop );
      document.getElementById('transferSearchDiv').style.display = 'none';
      document.getElementById('TSearch').style.display = 'none';
      iFrame.onload=function(){
                var respDoc = iFrame.contentWindow.document.getElementsByTagName('body')[0];
                var td_arr = respDoc.getElementsByTagName('td');
                var element;
                for (var i = 0; i < td_arr.length; i++)
                {
  //							if ( td_arr[i].innerHTML.match(/&nbsp;&nbsp;\d{2}-\d{2}-\d{2} \d{2}:\d{2}/) )
                    //Протокол игрока 
                    if ( td_arr[i].getElementsByTagName('center').length > 0 && /\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438\u0433\u0440\u043e\u043a\u0430 <a.* href="pl_info\.php\?id=[0-9]*"><b>.*<\/b><\/a>/.test( td_arr[i].getElementsByTagName('center')[0].innerHTML ) )
                    {
                        element = td_arr[i];
                        break;
                    }
                }
                if(!element){
                  return;
                }
                if ( element.getElementsByTagName('center').length > 1 )
                {
                    var lastPg = element.getElementsByTagName('center')[1].getElementsByTagName('b')[0].getElementsByTagName('font')[0].innerHTML;
                }
                else
                {
                    var lastPg = 1;
                }
                search2( id, type, elem, lastPg );
            };
      iFrame.src=url+'pl_transfers.php?page=9999&id=' + id;
  }

  function rep( str ) {
      str = str.replace( /\\/g, '\\\\' ).replace( /\[/g, '\\[' ).replace( /\]/g, '\\]' ).replace( /\(/g, '\\(' ).replace( /\)/g, '\\)' ).replace( /\./g, '\\.' ).replace( /\+/g, '\\+' ).replace( /\*/g, '\\*' ).replace( /\?/g, '\\?' ).replace( /\$/g, '\\$' ).replace( /\|/g, '\\|' );
      return str;
  }

  function search2( id, type, elem, pgCount )
  {
      switch(type)
      {
          case 'Nick':
              var search_str = document.getElementById('TSearchNick').value;
              var reg = new RegExp( '[0-9]{2}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}: .*<b>' + rep( search_str ) + '<\/b><\/a>' );
              break;
          case 'Fine':
              var search_str = document.getElementById('HWM_transfer_search_checkbox_label').className.indexOf('checked') != -1 ? '+' : '';
              var reg = new RegExp( '[0-9]{2}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}: <b>\u0418\u0433\u0440\u043e\u043a' + ( search_str.indexOf('+') == -1 ? ' \u043e\u0448\u0442\u0440\u0430\u0444\u043e\u0432\u0430\u043d' : '' ) );
              break;
          case 'Desc':
              var search_str = document.getElementById('TSearchDesc').value;
              var reg = new RegExp( '[0-9]{2}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}: .*: .*' + rep( search_str ) );
              break;
          case 'Art':
              var search_str = document.getElementById('TSearchArt').value;
  /*!*/	    var reg = new RegExp( '[0-9]{2}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}: .* ["\'].*' + rep( search_str ) + '.*["\']' );
              break;
          case 'Any':
              var search_str = document.getElementById('TSearchAll').value;
              var reg = new RegExp( '[0-9]{2}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}: .*' + rep( search_str ) + '.*' );
              break;
          case 'Regexp':
              var search_str = document.getElementById('TSearch_inp_regexp').value;
              var reg = new RegExp( '[0-9]{2}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:' + search_str.replace(/\\/g, '\\'));
              break;
          case 'ID':
              var search_str = document.getElementById('TSearch_inp_id').value;
              var reg = new RegExp( '!--' + search_str + '-->&nbsp;&nbsp;[0-9]{2}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}: .*');
              break;
      }
      var nick = elem.getElementsByTagName('center')[0].getElementsByTagName('a')[0].innerHTML;
      while( elem.lastChild )
      {
          elem.removeChild( elem.lastChild );
      }
      elem.appendChild( document.createElement( 'br' ) );
      var center = document.createElement( 'center' );
      center.innerHTML = '\u041f\u043e\u0438\u0441\u043a \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u0447 \u0438\u0433\u0440\u043e\u043a\u0430 ';
      var a = document.createElement( 'a' );
      a.href = 'pl_info.php?id=' + id;
      a.style.textDecoration = 'none';
      a.innerHTML = nick;
      center.appendChild( a );
      elem.appendChild( center );
      elem.appendChild( document.createElement( 'br' ) );
      var center = document.createElement( 'center' );
      center.id = 'TSearch';
      center.innerHTML = '\u0418\u0434\u0435\u0442 \u043f\u043e\u0438\u0441\u043a ' + type.replace( 'Nick', '\u043f\u043e \u043d\u0438\u043a\u0443 <a href="pl_info.php?nick=' + search_str + '" style="text-decoration: none;"><b>' + search_str + '</b></a>' ).replace( 'Fine', '\u0448\u0442\u0440\u0430\u0444\u043e\u0432' + ( search_str.indexOf('+') != -1 ? ' \u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a/\u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a' : '' ) ).replace( 'Desc', '\u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e "' + search_str + '"' ).replace( 'Art', '\u043f\u043e \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0443"' + search_str + '"' ) + '... (<a href="javascript: void(0);" id="cancel" onclick="document.getElementById(\'stop\').value = \'1\';">\u0441\u0442\u043e\u043f</a>)';
      center.appendChild( document.createElement( 'br' ) );
      center.innerHTML += '\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e <text id="viewed">0</text> \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u0435\u043a \u0438\u0437 ' + pgCount + ' (<text id="percent">0</text>%)';
      center.appendChild( document.createElement( 'br' ) );
      center.innerHTML += '\u041d\u0430\u0439\u0434\u0435\u043d\u043e <text id="matches">0</text> \u0437\u0430\u043f\u0438\u0441\u0435\u0439:';
      elem.appendChild( center );
      elem.appendChild( document.createElement( 'br' ) );
      startSearch( 1, id, reg, pgCount, elem, type, search_str );
  }

  function startSearch( pg, id, reg, lastPg, elem, type, search_str )
  {

      if ( document.getElementById('stop').value != '1' && pg <= lastPg )
      {
          var pg = pg - 1;
          iFrame.onload=function(){
                      var respDoc = iFrame.contentWindow.document.getElementsByTagName('body')[0];
                      var td_arr = respDoc.getElementsByTagName('td');
                      for (var i = 0; i < td_arr.length; i++)
                      {
  //								if ( td_arr[i].innerHTML.match(/&nbsp;&nbsp;\d{2}-\d{2}-\d{2} \d{2}:\d{2}/) )
                          if ( td_arr[i].getElementsByTagName('center').length > 0 && /\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438\u0433\u0440\u043e\u043a\u0430 <a.* href="pl_info\.php\?id=[0-9]*"><b>.*<\/b><\/a>/.test( td_arr[i].getElementsByTagName('center')[0].innerHTML ) )
                          {
                              var element = td_arr[i];
                              break;
                          }
                      }
                      var text = element.innerHTML //.substring( element.innerHTML.indexOf('&nbsp;&nbsp;') );
                      var transfers = text.split('<br>');
                      for ( var i = 0; i < transfers.length; i++ )
                      {
                          if ( reg.test( transfers[i] ) )
                          {
                              parent.document.getElementById('matches').innerHTML = ( Number( document.getElementById('matches').innerHTML ) + 1 );
                              elem.innerHTML += transfers[i];
                              elem.appendChild( document.createElement('br') );
                          }
                      }
                      parent.document.getElementById('viewed').innerHTML = ( Number( document.getElementById('viewed').innerHTML ) + 1 );
                      parent.document.getElementById('percent').innerHTML = ( Math.round( document.getElementById('viewed').innerHTML * 100 / lastPg ) );
                      pg = ( Number(pg) + 2 );
                      startSearch( pg, id, reg, lastPg, elem, type, search_str );
          };
          iFrame.src=url+'pl_transfers.php?id=' + id + '&page=' + pg;
      }
      else
      {
          var matches = document.getElementById('matches').innerHTML;
          document.getElementById('TSearch').innerHTML = '\u041f\u043e\u0438\u0441\u043a ' + type.replace( 'Nick', '\u043f\u043e \u043d\u0438\u043a\u0443 <a href="pl_info.php?nick=' + search_str + '" style="text-decoration: none;"><b>' + search_str + '</b></a>' ).replace( 'Fine', '\u0448\u0442\u0440\u0430\u0444\u043e\u0432' + ( search_str.indexOf('+') != -1 ? ' \u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a/\u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a' : '' ) ).replace( 'Desc', '\u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e "' + search_str + '"' ).replace( 'Art', '\u043f\u043e \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0443"' + search_str + '"' ) + ' \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d!<br>\u041d\u0430\u0439\u0434\u0435\u043d\u043e ' + matches + ' \u0437\u0430\u043f\u0438\u0441\u0435\u0439:';
      }
  }

  function getId()
  {
      var id = location.href.match( /\?(?:.*=.*&)*id=([0-9]*)(?:&.*=.*)*/ );
      return id[1];
  }


}());