hwm_pz_scaner

Поик открытых тем

当前为 2021-04-12 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name hwm_pz_scaner
  3. // @namespace https://greasyfork.org/ru/users/170936
  4. // @description Поик открытых тем
  5. // @author Kleshnerukij
  6. // @version 1.0.4
  7. // @include https://www.heroeswm.ru/forum_thread.php?id=25*
  8. // @include https://www.lordswm.com/forum_thread.php?id=25*
  9. // @include http://178.248.235.15/forum_thread.php?id=25*
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. var num_page = "10";
  14. var cur_page = "0";
  15. var res = "";
  16. var url = "";
  17. var page = "";
  18. var full_res = "";
  19. var full_file = "";
  20. var start_temp = '';
  21. var end_temp = '';
  22. var xhr = new XMLHttpRequest();
  23. var search_opth = /<tr( class='second'|)><td style=\'padding-top:6px;padding-bottom:6px;\'><a href=\'forum_messages\.php\?tid=(\d+)\'>(.*?)<\/a><\/td><td>.*?<\/td><td>\d+<\/td><td><a.*?href=\'pl_info\.php\?id=(\d+)\'>(.*?)<\/a>/igm;
  24. var search_tdata = /tid=(\d+)\'>(.*?)<.*?id=(\d+)\'>(.*?)</i;
  25.  
  26. var c_head_table = document.getElementsByClassName('table3 forum c_darker td_bordered')[0];
  27. var c_head_tr = document.getElementsByClassName('table3 forum c_darker td_bordered')[0].getElementsByTagName('tr')[0];
  28. var c_head = document.getElementsByClassName('table3 forum c_darker td_bordered')[0].getElementsByTagName('th')[0];
  29.  
  30. var c_div_star = document.createElement('div');
  31. c_div_star.style.display = "none";
  32. c_div_star.id = "c_div_star";
  33. var c_span_star = document.createElement('span');
  34. c_span_star.innerHTML = " &#10031;";
  35. c_span_star.onclick = function(){c_div_star.style.display = "inline-block";c_div_star.style.display = "inline-block";c_span_star.style.display = "none";};
  36. c_span_star.style.cursor = "pointer";
  37.  
  38. var c_span_from = document.createElement('span');
  39. c_span_from.innerHTML = " с ";
  40. var c_span_before = document.createElement('span');
  41. c_span_before.innerHTML = " по ";
  42. var c_span_nbsp = document.createElement('span');
  43. c_span_nbsp.innerHTML = " ";
  44. var c_span_nbsp2 = document.createElement('span');
  45. c_span_nbsp2.innerHTML = " ";
  46.  
  47. var c_from = document.createElement('input');
  48. c_from.id = "c_from";
  49. c_from.style.width = "50px";
  50. var c_before = document.createElement('input');
  51. c_before.id = "c_before";
  52. c_before.style.width = "50px";
  53.  
  54. var c_button = document.createElement('input');
  55. c_button.type = "button";
  56. c_button.value = "Искать";
  57. c_button.onclick = start_search;
  58.  
  59. var c_status = document.createElement('span');
  60. c_status.id = "res_search";
  61. c_status.innerHTML = "";
  62.  
  63. var download_link = document.createElement("a");
  64. download_link.title = "Скачать итоговый файл (csv)";
  65. download_link.download = "thread_list.csv";
  66. download_link.appendChild(document.createTextNode('Скачать'));
  67.  
  68. var c_res_tr = document.createElement('tr');
  69. var c_res_td = document.createElement('td');
  70.  
  71. c_div_star.appendChild(c_span_from);
  72. c_div_star.appendChild(c_from);
  73. c_div_star.appendChild(c_span_before);
  74. c_div_star.appendChild(c_before);
  75. c_div_star.appendChild(c_span_nbsp);
  76. c_div_star.appendChild(c_button);
  77. c_div_star.appendChild(c_span_nbsp2);
  78. c_div_star.appendChild(c_status);
  79.  
  80. c_head.appendChild(c_span_star);
  81. c_head.appendChild(c_div_star);
  82.  
  83.  
  84. var res_search = document.getElementById('res_search');
  85.  
  86. function start_search() {
  87. start_temp = document.getElementById('c_from').value;
  88. end_temp = document.getElementById('c_before').value;
  89. getPage((start_temp-1), end_temp);
  90. }
  91.  
  92. function getPage(start_pg, end_pg) {
  93. url = "https://www.heroeswm.ru/forum_thread.php?id=25&page="+start_pg;
  94.  
  95. xhr.open('GET', url);
  96. xhr.send();
  97. xhr.onload = function() {
  98. if (xhr.status != 200) { // анализируем HTTP-статус ответа, если статус не 200, то произошла ошибка
  99.  
  100. } else {
  101. page = xhr.responseText;
  102. var page = page.match(search_opth);
  103.  
  104. if (page != undefined) {
  105. page.forEach(GetOpenTheme);
  106. }
  107. res_search.innerHTML = "Обработано: "+(start_pg+1)+"/"+end_pg+" ";
  108. start_pg++;
  109.  
  110. if (start_pg < end_pg) {
  111. getPage(start_pg, end_pg);
  112. } else {
  113.  
  114. let del_end = true;
  115. while (del_end) {
  116. if (c_head_table.getElementsByTagName("tr")[1] !== undefined) {
  117. var del_tr = c_head_table.getElementsByTagName("tr")[1];
  118. del_tr.remove();
  119. } else {
  120. del_end = false;
  121. }
  122. }
  123.  
  124. c_head_table.innerHTML += full_res;
  125. var uri = 'data:text/csv;charset=utf-8,' + full_file;
  126.  
  127. download_link.href = uri;
  128. document.getElementById("c_div_star").appendChild(download_link);
  129. }
  130. }
  131. }
  132. }
  133.  
  134. function GetOpenTheme(item, index) {
  135. var res = item.match(search_tdata);
  136. full_res += '<tr><td><a href="https://www.heroeswm.ru/forum_messages.php?tid='+res[1]+'">'+res[2]+'</a></td><td colspan="4"><a href="https://www.heroeswm.ru/pl_info.php?id='+res[3]+'">'+res[4]+'</a></td></tr>';
  137. full_file += 'https://www.heroeswm.ru/forum_messages.php?tid='+res[1]+'\n';
  138. }
  139. })();