Данный проект выполнен в рамках курса Learn Python 20 (весна 2021 г.) и представляет из себя веб-сайт для визуализации статистики активности пользователя Steam на торговой площадке сервиса. На текущий момент реализован следующий функционал:
- регистрация нового пользователя
- авторизация зарегистрированного пользователя на сайте
- страница профиля авторизованного пользователя с визуализацией подключенных аккаунтов
- страница авторизации аккаунта через сервис Steam с последующей записью ключей сессии в БД для повторной авторизации без ввода пользовательских данных
- страница подключенного аккаунта с визуализацией предметов в инвентаре
- страница отдельного предмета
- всплывающее уведомление с предложением повторной авторизации в случае истечения сессии подключенного аккаунта.
Веб-приложение построено на базе Flask, для авторизации пользователя используется Flask-Login, аватар пользователя подключен к сервису Gravatar от Wordpress и привязан к адресу электронной почты. Если пользователь не загружал свой аватар - сервис генерирует уникальное изображение.
Взаимодействие с сервисом Steam осуществляется при помощи библиотеки Steam от ValvePython. Обрабатываемая информация хранится в базе данных SQLite. Запросы в БД генерирует SQLAlchemy, для сериализации данных из БД взят Marshmallow. Интеграцию этих пакетов с Flask обеспечивают Flask-SQLAlchemy и Flask-Marshmallow. За миграции БД отвечает Flask-Migrate. Чтобы уменьшить время отклика сайта, операции записи в БД производятся асинхронно с помощью Celery tasks и Redis. Для отслеживания работы задач Celery использeтся Flower.
Выполните в консоли следующие команды:
git clone https://github.com/dimmy2000/steam-inventory-analyst.git
cd steam-inventory-analyst/
Создайте виртуальное окружение:
MacOS/Linux | Windows |
---|---|
python3 -m venv venv |
py -3 -m venv venv |
Активируйте виртуальное окружение и установите пакеты, необходимые для работы приложения:
MacOS/Linux | Windows |
---|---|
source venv/bin/activate pip install -r requirments.txt
|
venv\Scripts\activate.bat pip install -r requirments.txt
|
Также, в качестве брокера задач Celery, необходимо установить Redis
Linux | MacOS | Windows |
---|---|---|
Установите пакет redis-serverapt-get install redis-server
|
Установите redis при помощи homebrew (инструкция) | Для Windows лучше всего установить Linux-подсистему для Windows и продолжать работу в ней. Если вы не можете установить WSL, то можно воспользоваться старой сборкой Redis |
Настройки по умолчанию хранятся в файле ./webapp/config.py
. Если требуется внести изменения в секретные
ключи - создайте файл .env и добавьте туда следующие настройки:
SECRET_KEY=ваш секретный ключ для создания сессий Flask
LOG_TYPE=полный или сокращенный формат сообщений ('stream'/'watched')
LOG_LEVEL=уровень сообщений для записи в журнал
LOG_DIR=путь к папке с файлами логов
APP_LOG_NAME=имя файла 'stream'-логов
WWW_LOG_NAME=имя файла 'watched'-логов
Чтобы создать новую базу данных или применить миграции к существующей,
выполните в командной строке export FLASK_APP=webapp.factory:create_app && flask db upgrade
Чтобы запустить приложение на локальном сервере, выполните в консоли:
./runserver.sh
Теперь вы можете работать с сервисом по адресу http://localhost:5000 и отслеживать статистику выполнения задач Celery по адресу http://localhost:5555