Initial commit: Supermarket scraper MVP
This commit is contained in:
56
src/scripts/scrape-magnit-products.ts
Normal file
56
src/scripts/scrape-magnit-products.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import 'dotenv/config';
|
||||
import { MagnitApiScraper } from '../scrapers/api/magnit/MagnitApiScraper.js';
|
||||
import { connectDatabase, disconnectDatabase, prisma } from '../config/database.js';
|
||||
import { Logger } from '../utils/logger.js';
|
||||
|
||||
async function main() {
|
||||
const storeCode = process.env.MAGNIT_STORE_CODE || process.argv[2];
|
||||
|
||||
if (!storeCode) {
|
||||
Logger.error('Не указан код магазина. Используйте переменную окружения MAGNIT_STORE_CODE или передайте как аргумент');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
Logger.info(`🚀 Запуск скрапинга для магазина: ${storeCode}`);
|
||||
|
||||
const scraper = new MagnitApiScraper({
|
||||
storeCode,
|
||||
storeType: process.env.MAGNIT_STORE_TYPE || '6',
|
||||
catalogType: process.env.MAGNIT_CATALOG_TYPE || '1',
|
||||
headless: true,
|
||||
});
|
||||
|
||||
try {
|
||||
// Подключение к БД
|
||||
await connectDatabase();
|
||||
|
||||
// Инициализация скрапера
|
||||
await scraper.initialize();
|
||||
|
||||
// Получение всех товаров
|
||||
const products = await scraper.scrapeAllProducts(100);
|
||||
|
||||
Logger.info(`📦 Получено товаров: ${products.length}`);
|
||||
|
||||
if (products.length > 0) {
|
||||
// Сохранение в БД
|
||||
const saved = await scraper.saveToDatabase(products, prisma);
|
||||
Logger.info(`✅ Успешно сохранено товаров: ${saved}`);
|
||||
} else {
|
||||
Logger.warn('⚠️ Товары не найдены');
|
||||
}
|
||||
|
||||
Logger.info('✅ Скрапинг завершен успешно');
|
||||
} catch (error) {
|
||||
Logger.error('❌ Ошибка при скрапинге:', error);
|
||||
process.exit(1);
|
||||
} finally {
|
||||
// Закрытие браузера
|
||||
await scraper.close();
|
||||
// Отключение от БД
|
||||
await disconnectDatabase();
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
|
||||
18
src/scripts/test-db-connection.ts
Normal file
18
src/scripts/test-db-connection.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import 'dotenv/config';
|
||||
import { connectDatabase, disconnectDatabase } from '../config/database.js';
|
||||
|
||||
async function testConnection() {
|
||||
try {
|
||||
console.log('🔌 Тестирование подключения к базе данных...');
|
||||
await connectDatabase();
|
||||
console.log('✅ Подключение успешно!');
|
||||
} catch (error) {
|
||||
console.error('❌ Ошибка подключения:', error);
|
||||
process.exit(1);
|
||||
} finally {
|
||||
await disconnectDatabase();
|
||||
}
|
||||
}
|
||||
|
||||
testConnection();
|
||||
|
||||
Reference in New Issue
Block a user