VKirill

Эталонный скрипт

Sep 14th, 2024
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.28 KB | None | 0 0
  1. // Объявляем глобальную переменную для хранения сгенерированных номеров
  2. let allPhoneNumbers = [];
  3.  
  4. // Функция для генерации последовательных номеров
  5. function generatePhoneNumbers(start, end) {
  6. let startNumber = parseInt(start, 10); // Преобразуем начальный номер в число
  7. let endNumber = parseInt(end, 10); // Преобразуем конечный номер в число
  8. let phoneNumbers = []; // Массив для хранения номеров
  9.  
  10. while (startNumber <= endNumber) {
  11. phoneNumbers.push("7" + startNumber.toString()); // Добавляем номер в массив с кодом "7" в начале
  12. startNumber++;
  13. }
  14.  
  15. return phoneNumbers;
  16. }
  17.  
  18. // Обработчик кнопки "Сгенерировать"
  19. document.getElementById('generate').addEventListener('click', function() {
  20. let textareaContent = document.querySelector('.input').value; // Получаем содержимое textarea
  21.  
  22. console.log("Содержимое input:", textareaContent); // Логируем содержимое textarea
  23.  
  24. // Извлечение всех диапазонов номеров телефона
  25. let ranges = textareaContent.match(/<td class="nmtb__range\s*">([\s\S]*?)<\/td>/g);
  26. console.log("Найденные диапазоны:", ranges); // Логируем найденные диапазоны
  27.  
  28. if (ranges) {
  29. allPhoneNumbers = []; // Очищаем массив перед генерацией
  30.  
  31. // Проходим по каждому диапазону
  32. ranges.forEach(function(range) {
  33. console.log("Обрабатываем диапазон:", range); // Логируем текущий диапазон
  34.  
  35. // Извлечение начального номера телефона
  36. let startPhoneMatch = range.match(/<span class="nmtb__range_pref">\+7<\/span>\s*\((\d{3})\)\s*(\d{3})-(\d{2})-(\d{2})/);
  37. console.log("Начальный номер:", startPhoneMatch); // Логируем найденный начальный номер
  38.  
  39. if (!startPhoneMatch) {
  40. alert("Не удалось извлечь начальный номер телефона");
  41. return;
  42. }
  43. var startPhone = startPhoneMatch[1] + startPhoneMatch[2] + startPhoneMatch[3] + startPhoneMatch[4];
  44.  
  45. // Извлечение конечного номера телефона
  46. let endPhoneMatch = range.match(/<span class="unc__note">\s*\+7\s*\((\d{3})\)\s*(\d{3})-(\d{2})-(\d{2})/);
  47. console.log("Конечный номер:", endPhoneMatch); // Логируем найденный конечный номер
  48.  
  49. if (!endPhoneMatch) {
  50. alert("Не удалось извлечь конечный номер телефона");
  51. return;
  52. }
  53. var endPhone = endPhoneMatch[1] + endPhoneMatch[2] + endPhoneMatch[3] + endPhoneMatch[4];
  54.  
  55. // Генерация номеров для этого диапазона
  56. let phoneNumbers = generatePhoneNumbers(startPhone, endPhone);
  57. console.log("Сгенерированные номера:", phoneNumbers); // Логируем сгенерированные номера
  58. allPhoneNumbers = allPhoneNumbers.concat(phoneNumbers); // Добавляем номера в общий массив
  59. });
  60.  
  61. // Очищаем поле для результатов перед вставкой новых данных
  62. document.querySelector('.result').value = '';
  63.  
  64. // Выводим первые 1000 номеров в поле "result"
  65. document.querySelector('.result').value = allPhoneNumbers.slice(0, 1000).join("\n");
  66. console.log("Номера для вывода в textarea:", allPhoneNumbers.slice(0, 1000)); // Логируем номера, которые будут выведены
  67. } else {
  68. alert("Не удалось найти диапазоны номеров");
  69. }
  70. });
  71.  
  72. // Функция для генерации случайного имени файла
  73. function generateRandomFilename() {
  74. let chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  75. let result = '';
  76. for (let i = 0; i < 10; i++) {
  77. result += chars.charAt(Math.floor(Math.random() * chars.length));
  78. }
  79. return result;
  80. }
  81.  
  82. // Функция для отправки CSV файла на сервер
  83. function uploadFileToServer() {
  84. if (allPhoneNumbers.length === 0) {
  85. alert("Номера не сгенерированы");
  86. return;
  87. }
  88.  
  89. // Генерация CSV-контента
  90. let csvContent = "phone\n" + allPhoneNumbers.join("\n");
  91.  
  92. // Превращаем его в Blob-объект для отправки на сервер
  93. let blob = new Blob([csvContent], { type: "text/csv" });
  94.  
  95. // Создаем форму для отправки данных на сервер
  96. let formData = new FormData();
  97. formData.append("file", blob, generateRandomFilename() + ".csv");
  98.  
  99. // Отправляем AJAX-запрос для загрузки файла на сервер
  100. let xhr = new XMLHttpRequest();
  101. xhr.open("POST", "https://revival74.ru/phone/upload.php", true);
  102.  
  103. // Добавляем индикатор загрузки
  104. document.querySelector('.icon').innerHTML = 'Загрузка...';
  105.  
  106. xhr.onload = function() {
  107. console.log("Статус ответа:", xhr.status);
  108. console.log("Ответ сервера:", xhr.responseText);
  109.  
  110. if (xhr.status === 200) {
  111. let response;
  112. try {
  113. response = JSON.parse(xhr.responseText); // Пробуем разобрать JSON-ответ
  114. console.log("Ответ сервера успешно разобран:", response);
  115. } catch (e) {
  116. console.error("Ошибка парсинга JSON:", e);
  117. document.querySelector('.icon').innerHTML = 'Ошибка при обработке ответа сервера';
  118. return;
  119. }
  120.  
  121. if (response.status === "success") {
  122. // Выдаем ссылку на скачивание
  123. document.querySelector('.icon').innerHTML = `<a href="${response.file_url}">Скачать файл</a>`;
  124. } else {
  125. document.querySelector('.icon').innerHTML = `Ошибка: ${response.message}`;
  126. }
  127. } else {
  128. document.querySelector('.icon').innerHTML = 'Ошибка сети';
  129. }
  130. };
  131.  
  132. xhr.onerror = function() {
  133. console.error("Ошибка при отправке запроса.");
  134. document.querySelector('.icon').innerHTML = 'Ошибка при загрузке файла';
  135. };
  136.  
  137. xhr.send(formData);
  138. }
  139.  
  140. // Обработчик кнопки "Скачать CSV"
  141. document.getElementById('upload').addEventListener('click', function() {
  142. uploadFileToServer(); // Отправляем запрос на сервер
  143. });
  144.  
Advertisement
Add Comment
Please, Sign In to add comment