HDRezkaApi / server.js
Rooni's picture
Update server.js
6c4d40b verified
const express = require('express');
const axios = require('axios');
const cheerio = require('cheerio');
const app = express();
app.use(express.json());
const parsePage = async (url) => {
const response = await axios.get(url);
const html = response.data;
const $ = cheerio.load(html);
const parsedResults = [];
$('.b-content__inline_item').each((index, element) => {
const titleElement = $(element).find('.b-content__inline_item-link a');
const title = titleElement.text().trim();
const pageUrl = titleElement.attr('href');
const imageUrl = $(element).find('.b-content__inline_item-cover a img').attr('src');
parsedResults.push({
title: title,
imageUrl: imageUrl,
pageUrl: pageUrl,
});
});
return parsedResults;
};
app.get('/parse', async (req, res) => {
try {
const baseUrl = 'https://hdrezka180maa.org/animation';
let currentPage = 1;
let hasMorePages = true;
const allResults = [];
while (hasMorePages) {
const pageUrl = currentPage === 1 ? baseUrl : `${baseUrl}/page/${currentPage}/`;
const results = await parsePage(pageUrl);
if (results.length === 0) {
hasMorePages = false;
} else {
allResults.push(...results);
currentPage++;
}
}
res.json(allResults);
} catch (error) {
console.error(error);
res.status(500).json({ error: 'Произошла ошибка сервера при парсинге.' });
}
});
const port = 7860;
app.listen(port, () => {
console.log(`Сервер запущен на порту ${port}`);
});