project for rate the music overall is a web application developed on the Flask web framework, which was used to create the server part in Python. the code is built using OOP, or more precisely, using methods that make it easy to scale and support the application. the frontend is implemented using HTML and CSS. a combination of SQLAlchemy and PostgreSQL is used to manage data: the first provides ORM for working with the database, and the second acts as the database itself. to check the validity of the data, C# code is used, using libraries for working with PostgreSQL. all this is implemented through the subprocess module in Python.
Ниже приведён полный текст инструкции в формате README:
Инструкция по развертыванию проекта с GitHub на локальном устройстве.
- Git – для клонирования репозитория с GitHub.
- Python 3.7+ (рекомендуется 3.9 или новее) – основной язык для запуска серверной части (Flask).
- pip или pipenv/poetry – для управления Python-зависимостями.
- PostgreSQL (вместе с pgAdmin или любым другим инструментом) – для создания базы данных.
- .NET SDK (или хотя бы .NET Runtime) – для выполнения кода на C# (validators.cs).
Если у вас уже установлен Visual Studio или Rider с поддержкой C#, то необходимая среда, скорее всего, уже есть. - Любая IDE/редактор (например, PyCharm, VSCode, Visual Studio) – для удобного редактирования кода и запуска.
Откройте терминал (или командную строку) в желаемой папке и выполните команду:
git clone https://github.com/svgbogdnn/MusicRater.git
После этого в вашей локальной папке появится директория MusicRater
со всеми исходными файлами проекта.
Перейдите в склонированную директорию:
cd MusicRater
Затем создайте виртуальное окружение (пример для Windows):
python -m venv venv
Активируйте его:
venv\Scripts\activate
Примечание: Для macOS/Linux команда активации будет:
source venv/bin/activate
В проекте может быть файл requirements.txt
(либо вы можете установить необходимые библиотеки вручную).
Если есть requirements.txt
, то в активированном окружении выполните:
pip install -r requirements.txt
Если requirements.txt
отсутствует, то, как минимум, нужно установить Flask и SQLAlchemy:
pip install flask sqlalchemy psycopg2
Примечание: Для psycopg2 на Windows может потребоваться дополнительная установка:
pip install psycopg2-binaryлибо использование библиотеки
psycopg2
через wheel.
-
Запустите сервер PostgreSQL и войдите в pgAdmin (или используйте любую другую консольную/графическую утилиту).
-
Создайте базу данных (название по умолчанию в коде – musicspoti, судя по фрагменту из
app.py
):CREATE DATABASE musicspoti;
-
Убедитесь, что в
app.py
(или другом файле конфигурации) строка подключения к базе данных (SQLALCHEMY_DATABASE_URI
) совпадает с вашими учетными данными. Пример:app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:1234@localhost/musicspoti'
- postgres – имя пользователя;
- 1234 – пароль пользователя PostgreSQL;
- localhost – хост, где запущена БД;
- musicspoti – название базы данных.
При необходимости измените эти значения, чтобы соответствовали вашим настройкам PostgreSQL.
Проект содержит файл validators.cs
(или что-то похожее), который запускается через Python с помощью модуля subprocess
.
-
Для успешного запуска кода на C# убедитесь, что у вас установлена .NET SDK или .NET Runtime.
-
Проверить можно командой:
dotnet --version
Если команда не распознаётся, установите .NET SDK.
Важно:
В самом Python-коде, скорее всего, есть что-то вродеsubprocess.run(...)
илиsubprocess.Popen(...)
, где вызывается компилятор C# или командаdotnet run
. Убедитесь, что пути указаны корректно, либо в коде не зашит полный путь кcsc.exe
.
Если в проекте используетсяNpgsql
, то в файле.csproj
(или в самойvalidators.cs
) уже должно быть прописаноusing Npgsql;
. При запуске черезdotnet run
зависимости подтянутся автоматически, если они прописаны в проекте (либо их нужно добавить вручную).
Если в проекте предусмотрена автоматическая генерация таблиц через SQLAlchemy, то в коде app.py
(или в отдельном скрипте) может быть вызов db.create_all()
. Обычно это делается так:
from your_app_folder import db
db.create_all()
Убедитесь, что этот вызов есть либо выполните его вручную (например, в интерактивном режиме Python), чтобы в созданной базе появились необходимые таблицы. Если в коде это уже учтено при первом запуске – тогда данный шаг может не потребоваться.
Находясь в папке проекта, выполните:
python app.py
После этого в консоли появится сообщение о том, что приложение запущено по адресу, например:
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Перейдите в браузере по указанному адресу (по умолчанию http://127.0.0.1:5000/).
Если в проекте есть файл app.py
с корректной точкой входа (и в системе или в виртуальном окружении установлен Flask), можно выполнить:
flask run
По умолчанию Flask также стартует на порту 5000, и вы сможете открыть приложение в браузере по адресу http://127.0.0.1:5000/.
При запуске Flask-приложения (через app.py
) может автоматически вызываться скрипт на C# через subprocess
. Убедитесь, что:
- В коде Python корректно прописано имя/путь к файлу
validators.cs
или к скомпилированному.exe
. - У вас нет ошибок при компиляции кода на C#.
- Подключена библиотека
Npgsql
(как указано в тексте проекта). Если это не прописано – нужно установить пакет через NuGet (если вы запускаете черезdotnet
или Visual Studio).
Пример установки:
dotnet add package Npgsql
Либо в файле .csproj
укажите:
<PackageReference Include="Npgsql" Version="X.Y.Z" />
- Если Python не находит C#-компилятор, проверьте, что переменная окружения
PATH
содержит путь кdotnet
илиcsc.exe
.
-
Браузер:
- Откройте страницу http://127.0.0.1:5000/ (или адрес, который укажет Flask) и проверьте, что главная страница (
index.html
) доступна. - Перейдите на другие маршруты (
/songs
,/artists
,/albums
и т. д.), чтобы убедиться, что всё работает.
- Откройте страницу http://127.0.0.1:5000/ (или адрес, который укажет Flask) и проверьте, что главная страница (
-
База данных:
- Убедитесь, что при добавлении/редактировании записей данные корректно попадают в PostgreSQL.
-
Валидаторы на C#:
- Проверьте, что при добавлении некорректных данных валидатор выдаёт ошибки или предупреждения (как описано в коде).
-
Изменение порта: Если хотите запустить Flask на другом порту (например, 8080), можно указать:
flask run --port=8080
-
Изменение окружения: Для режима отладки (Debug Mode) задайте переменную среды
FLASK_ENV=development
или в кодеapp.debug = True
. -
Развёртывание на реальном сервере: Для продакшена Flask часто используют gunicorn + nginx или подобные решения. Но в рамках локального запуска это не требуется.