блять, все равно добавлять span class type к комменту: "Звонят среди ночи , робот Мошенники" а надо "Звонят среди ночи , робот"

const express = require("express");
const ejs = require("ejs");
const mongoose = require("mongoose");
const request = require("request");
const cheerio = require("cheerio");
const fs = require("fs");

const app = express();

// Установка EJS в качестве шаблонизатора
app.set('view engine', 'ejs');

// Подключение к MongoDB
mongoose.connect('mongodb://127.0.0.1/phoneNumbers', { useNewUrlParser: true, useUnifiedTopology: true });

// Определение схемы и модели для хранения номеров телефонов
const PhoneNumberSchema = new mongoose.Schema({
  number: { type: String, index: true },
  url: String,
  comments: [String],
  callType: String
});

const PhoneNumber = mongoose.model('PhoneNumber', PhoneNumberSchema, 'phoneNumbers');

// Функция для получения HTML-кода страницы
function getHtml(url) {
  return new Promise((resolve, reject) => {
    request(url, (error, response, html) => {
      if (error) {
        reject(error);
      } else {
        resolve(html);
      }
    });
  });
}

// Функция для получения номеров телефонов и сохранения только новых номеров в базе данных
async function getNewPhoneNumbers() {
  console.log("Запущен процесс поиска новых номеров...");

  const phoneNumbers = await PhoneNumber.find().sort({ _id: -1 }).limit(1);
  const lastPageUrl = phoneNumbers.length > 0 ? phoneNumbers[0].url : null;
  const newPhoneNumbers = [];

  // Получить HTML-код первой страницы с номерами телефонов
  const firstPageUrl = "https://zvonili.com/";
  const firstPageHtml = await getHtml(firstPageUrl);

  // Использовать Cheerio для парсинга HTML-кода и извлечения информации о номере телефона
  const $firstPage = cheerio.load(firstPageHtml);
  const phoneElements = $firstPage(".card-header");

  for (let index = 0; index < phoneElements.length; index++) {
    const element = phoneElements[index];
    const phoneNumber = $firstPage(element).find(".nomerlnk").text().trim();
    const url = $firstPage(element).find(".nomerlnk").attr("href");
    const comments = $firstPage(element).next().find("blockquote").text().trim();
    const callTypeElements = $firstPage(element).next().find("span.type");
    const callType = callTypeElements.length > 0 ? callTypeElements.map((index, element) => $firstPage(element).text().trim()).get().join(", ") : "";

    // Добавить новый номер телефона в массив, если его еще нет в базе данных
    const existingPhoneNumber = await PhoneNumber.findOne({ number: phoneNumber });
    if (!existingPhoneNumber) {
      newPhoneNumbers.push({ number: phoneNumber, url: url, comments: comments.split('\n'), callType: callType });
    } else if (!existingPhoneNumber.comments.includes(comments)) {
      existingPhoneNumber.comments.push(comments);
      existingPhoneNumber.save();
    }

    // Если обработаны все номера телефонов, сохраняем новые номера в базу данных и выводим отладочную информацию
    if (index === phoneElements.length - 1) {
      console.log(`Найдено ${newPhoneNumbers.length} новых номеров телефонов.`);
      if (newPhoneNumbers.length > 0) {
        try {
          await PhoneNumber.create(newPhoneNumbers);
          console.log(`Добавлено ${newPhoneNumbers.length} новых номеров телефонов в базу данных.`);
        } catch (error) {
          console.error(`Ошибка при добавлении новых номеров телефонов: ${error.message}`);
        }
      }
    }
  }
}

// Создать маршрут для страницы с информацией о номере телефона
app.get('/phone/:number', async (req, res) => {
  const phoneNumber = req.params.number;
  const matchedPhoneNumbers = await PhoneNumber.find({ number: phoneNumber });

  res.render('phone', { phoneNumbers: matchedPhoneNumbers });
});

// Маршрут для главной страницы
app.get("/", async (req,res) => {
  const phoneNumbers = await PhoneNumber.find().sort({ _id: -1 }).limit(20);

  const data = {
    phoneNumbers: phoneNumbers,
    lastPageUrl: phoneNumbers.length > 0 ? phoneNumbers[0].url : null,
  };

  res.render('index', data);
});

// Запустить процесс поиска новых номеров телефонов каждые 10 минут
setInterval(getNewPhoneNumbers, 1 * 60 * 1000);

// Запустить сервер
const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`Сервер запущен на порту ${port}.`);
  // Начать поиск новых номеров телефонов при запуске сервера
  getNewPhoneNumbers();
});