Skip to content

Dezzpil/steam-web-parser

Repository files navigation

Steam Web Parser

Монорепозиторный проект на TypeScript для парсинга веб-сайта Steam. Приложение собирает и анализирует данные из магазина Steam, включая информацию об играх, жанрах, тегах, ценах, количестве игроков онлайн и связях между похожими продуктами.

Цель проекта

Steam Web Parser предназначен для:

  • Сбора информации об играх и программном обеспечении из магазина Steam
  • Отслеживания количества игроков онлайн с помощью Steam API
  • Мониторинга цен
  • Анализа связей между похожими продуктами ("More Like This")
  • Предоставления веб-интерфейса для просмотра и визуализации собранных данных

Архитектура и компоненты

Общая структура

  • Монорепозиторий: Проект использует подход монорепозитория с рабочими пространствами pnpm.
  • Пакет Core: Содержит основную функциональность для парсинга веб-страниц Steam.
  • База данных: PostgreSQL для хранения данных.
  • ORM: Prisma для доступа к базе данных и управления ею.

Архитектура и данные

Приложение построено на базе Puppeteer для автоматизации браузера в headless-режиме и сбора данных с веб-страниц Steam. Основная логика распределена между специализированными воркерами: TopSellerGrabber для списков лидеров продаж, AppGrabber для извлечения детальной информации о приложениях и SearchGrabber для функционала поиска. Задачи обрабатываются через асинхронную очередь с настраиваемой параллельностью.

Для хранения данных используется PostgreSQL, взаимодействие с которой реализовано через Prisma ORM. Схема базы данных включает сущности приложений (App), их URL-адресов (AppUrl) и связей между ними (AppToApp), что позволяет анализировать граф рекомендаций "More Like This".

HTTP JSON API позволяет получить краткую информацию о приложениях и рекомендациях "More Like This".

Документация API доступна через Swagger UI по адресу /api-docs после запуска API сервера. Спецификация в формате JSON доступна по адресу /swagger.json.

Начало работы

Требования

  • Node.js (v18 или новее)
  • pnpm (v8 или новее)
  • Docker и Docker Compose

Установка

corepack enable
corepack use pnpm

pnpm run build

Указать переменные окружения:

cd packages/core
cp .env.example .env

Запустить БД и создать схему:

docker-compose up -d db
pnpm run prisma:generate && pnpm run prisma:migrate

Запуск компонентов приложения

Запуск основного краулера в фоне, он будет добирать игры в глубину, которые остались после поиска через API

cd packages/core
pnpm run crawl

Или можно запустить сбор данных из каталога Top Sellers

cd packages/core
pnpm run crawl:top

Запуск API сервера

cd packages/core
pnpm run api

Запуск UI

cd packages/ui
pnpm run dev

Сбор данных о количестве игроков онлайн и ценах

cd packages/core
pnpm run online_n_price

Для сбора данных потребуется указать STEAM_API_KEY в packages/core/.env. Это ключ для Steam Web-API, который можно получить по адресу https://steamcommunity.com/dev/apikey

Стиль кода и линтинг

Проект использует ESLint и Prettier для поддержания стиля кода:

  • pnpm run lint: Запуск ESLint для проверки и исправления ошибок.
  • pnpm run format: Форматирование кода с помощью Prettier.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors