- Установка проекта с использованием
pip
и файлаrequirements.txt
- Шаг 1: Убедитесь, что установлен Python, PostgreSQL, YT-DLP
- Шаг 2: Установка PostgreSQL
- Шаг 3: Установка
pip
илиpip3
- Шаг 4: Создание виртуального окружения (опционально)
- Шаг 5: Установка зависимостей
- Шаг 6: Настройка переменных окружения и списка каналов
- Шаг 7: Запуск проекта
- Проверка работоспособности
- Запуск проекта через Docker-контейнеры
- Локальная установка через Python-окружение
- Установка с помощью скрипта
install.sh
- Руководство по настройке и запуску сервиса
youtube-monitoring.service
- Форматы URL YouTube-каналов
- Проверка работоспособности проекта
Этот способ максимально универсален и подходит как для Linux/macOS, так и для Windows.
Перед началом убедитесь, что у вас установлен Python версии 3.10 или выше. Для проверки выполните команду:
python3 --version
Установите yt-dlp:
sudo apt update
sudo apt -y install yt-dlp
-
Убедитесь, что на вашем компьютере установлен PostgreSQL. Если его нет, установите:
На Ubuntu/Debian:
sudo apt update sudo apt install postgresql postgresql-contrib sudo apt install postgresql-client
На Windows: Скачайте и установите PostgreSQL с официального сайта: https://www.postgresql.org/download/.
-
Создайте базу данных и пользователя для проекта:
Войдите в консоль PostgreSQL:
sudo -u postgres psql
Выполните команды:
CREATE DATABASE peer_tube_db; CREATE USER postgres WITH PASSWORD 'postgres'; GRANT ALL PRIVILEGES ON DATABASE peer_tube_db TO postgres;
Если Python не установлен, загрузите и установите его.
Если pip
или pip3
еще не установлен, выполните следующие команды для их установки.
Проверка наличия pip
или pip3
:
pip --version || pip3 --version
Если ни pip
, ни pip3
не установлены, выполните:
sudo apt update && sudo apt install -y python3-pip
Примечание для Windows:
На Windows используйте get-pip.py для установки pip
:
curl -O https://bootstrap.pypa.io/get-pip.py
python get-pip.py
Рекомендуется изолировать зависимости проекта в виртуальном окружении. Для этого выполните:
python3 -m venv venv
source venv/bin/activate # Для Linux/macOS
venv\Scripts\activate # Для Windows
Теперь можно установить зависимости проекта из файла requirements.txt
:
pip install -r requirements.txt
Если у вас несколько версий Python, используйте:
pip3 install -r requirements.txt
- Создайте файл
.env
в корне проекта, используя пример.env.example
. Укажите все необходимые переменные. - Подготовьте файл
channels_list.json
с каналами для мониторинга. Убедитесь, что файл расположен в корне проекта.
Для запуска проекта выполните:
python -m app
Убедитесь, что проект работает:
- Проверяйте логи проекта для отладки.
- Если возникают ошибки, убедитесь, что все переменные и зависимости указаны корректно.
Этот способ удобен, если вы хотите изолировать окружение и минимизировать настройку зависимостей вручную.
-
Создайте файл
.env
в корне проекта, если его ещё нет. Заполните файл в соответствии с примером.env.example
, указав ваши ключи API, настройки Telegram и параметры базы данных.Пример
.env
:YOUTUBE_API_KEY="ваш_ключ_YouTube_API" YOUTUBE_SECRET_JSON="client_secret_google.json_file_name" TG_BOT_TOKEN="ваш_токен_Telegram_бота" TG_GROUP_ID="id_группы_Telegram" TG_ADMIN_ID=1234567890 DB_HOST="localhost" DB_PORT=5432 DB_NAME="peer_tube" DB_SCHEMA="youtube" DB_USERNAME="postgres" DB_PASSWORD="postgres" MONITOR_NEW=1 MONITOR_HISTORY=1 RUN_TG_BOT=1
-
Создайте файл
channels_list.json
(переименуйтеchannels_list.json.example
) в корне проекта, добавив список YouTube-каналов для мониторинга в формате JSON:{ "channels": [ "https://www.youtube.com/@lexfridman", "https://www.youtube.com/@AsmonTV", "https://www.youtube.com/@joerogan" ] }
docker run --name postgres-db \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=peer_tube \
-p 5432:5432 \
-d postgres:14
Эта команда создаёт и запускает контейнер с базой данных PostgreSQL14.
sudo docker exec -it postgres bash
psql -U postgres
CREATE DATABASE peer_tube_db;
CREATE USER peer_tube_user WITH PASSWORD 'peer_tube_password';
GRANT ALL PRIVILEGES ON DATABASE peer_tube_db TO peer_tube_user;
-
Соберите Docker-образ с проектом:
docker build -t youtube-monitoring-app .
Эта команда создаст локальный образ из Dockerfile, находящегося в проекте.
-
(Опционально) Или скачать образ с Docker Hub:
docker pull docker.io/mithmith/youtube-monitoring-app
Запустите проектный контейнер с привязкой .env
и channels_list.json
:
docker run --name youtube-monitoring \
--env-file .env \
-v $(pwd)/channels_list.json:/app/channels_list.json \
-p 9191:9191 \
youtube-monitoring-app
--env-file .env
— указывает файл с переменными окружения.-v $(pwd)/channels_list.json:/app/channels_list.json
— монтирует файл со списком каналов.-p 9191:9191
— пробрасывает порт для доступа к приложению.
-
Посмотреть логи контейнера:
docker logs youtube-monitoring
Эта команда покажет логи, чтобы проверить, всё ли корректно работает.
-
Проверить, что контейнер запущен:
docker ps
Убедитесь, что ваш контейнер
youtube-monitoring
отображается в списке работающих контейнеров. -
(Опционально) Если нужно зайти внутрь контейнера для диагностики:
docker exec -it youtube-monitoring /bin/bash
Этот способ даёт больше контроля, чем запуск через Docker, и полезен для разработки и отладки проекта.
-
Клонируйте репозиторий проекта с GitHub:
git clone https://github.com/mithmith/youtube_node_downloader.git
-
Перейдите в папку с проектом:
cd youtube_node_downloader
-
Создайте файл
.env
в папке с проектом, если его ещё нет. Заполните переменные, указанные в примере.env.example
.Пример
.env
:YOUTUBE_API_KEY="ваш_ключ_YouTube_API" YOUTUBE_SECRET_JSON="client_secret_google.json_file_name" TG_BOT_TOKEN="ваш_токен_Telegram_бота" TG_GROUP_ID="id_группы_Telegram" TG_ADMIN_ID=1234567890 DB_HOST="localhost" DB_PORT=5432 DB_NAME="peer_tube" DB_SCHEMA="youtube" DB_USERNAME="postgres" DB_PASSWORD="postgres" MONITOR_NEW = 1 MONITOR_HISTORY = 1 MONITOR_VIDEO_FORMATS = 0 RUN_TG_BOT = 1
-
Создайте файл
channels_list.json
(переименуйтеchannels_list.json.example
) в корне проекта и добавьте туда список YouTube-каналов в формате JSON:{ "channels": [ "https://www.youtube.com/@lexfridman", "https://www.youtube.com/@AsmonTV", "https://www.youtube.com/@joerogan" ] }
-
Убедитесь, что на вашем компьютере установлен PostgreSQL. Если его нет, установите:
На Ubuntu/Debian:
sudo apt update sudo apt install postgresql postgresql-contrib sudo apt install postgresql-client
На Windows: Скачайте и установите PostgreSQL с официального сайта: https://www.postgresql.org/download/.
-
Создайте базу данных и пользователя для проекта:
Войдите в консоль PostgreSQL:
sudo -u postgres psql
Выполните команды (задайте имя БД, имя пользователя и пароль, как в
.env
):CREATE DATABASE peer_tube_db; CREATE USER postgres WITH PASSWORD 'postgres'; GRANT ALL PRIVILEGES ON DATABASE peer_tube_db TO postgres;
-
Установите YT-DLP:
sudo apt update sudo apt -y install yt-dlp
Или скачайте из официального репозитория:
cd ~ wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp
-
Установите Poetry:
python3 -m pip install --disable-pip-version-check -U pip wheel poetry pip install poetry-plugin-shell
Если возникает ошибка
/usr/bin/python3: No module named pip
, это означает, чтоpip
(менеджер пакетов Python) не установлен в вашей системе. В такой ситуации нужно сначала установитьpip
, а затем продолжить установку других пакетов.1.1. Обновите менеджер пакетов и установите нужные инструменты:
sudo apt update sudo apt install -y python3 python3-distutils python3-venv
1.2. Установите
pip
: Загрузите и установитеpip
с использованиемget-pip.py
:wget https://bootstrap.pypa.io/get-pip.py sudo python3 get-pip.py --break-system-packages
1.3. Убедитесь, что
pip
установлен: Проверьте версиюpip
:python3 -m pip --version
1.4. Установите необходимые пакеты: Теперь вы можете выполнить команду для установки
poetry
:python3 -m pip install --disable-pip-version-check -U pip wheel poetry
-
Настройте Poetry, создание виртуального окружения:
poetry config virtualenvs.create true
2.1. Если возникла ошибка
-bash: poetry: command not found
:export PATH="$HOME/.local/bin:$PATH"
-
Установите Alembic для управления миграциями базы данных:
python3 -m pip install alembic
-
Выполните миграции Alembic, чтобы создать все таблицы:
alembic upgrade head
-
Активируйте окружение Poetry:
pip install poetry-plugin-shell poetry shell
-
Убедитесь, что все зависимости установлены:
poetry install
-
Запустите проект:
python -m app
-
Проверка установленных программ:
- Скрипт проверяет наличие Python3, pip и PostgreSQL. Если какой-то из них отсутствует, выводится сообщение об ошибке, и скрипт завершает работу.
-
Установка Poetry и зависимостей:
- Poetry устанавливается, обновляется до последней версии и настраивается для работы без виртуального окружения.
-
Установка Alembic:
- Alembic устанавливается через pip.
-
Миграции базы данных:
- Команда
alembic upgrade head
выполняет миграции, создавая все необходимые таблицы.
- Команда
-
Запуск проекта:
- После всех установок и миграций запускается основной модуль проекта с помощью
python -m app
.
- После всех установок и миграций запускается основной модуль проекта с помощью
- Скрипт установки находится в корневой папке проекта
install.sh
. - Сделайте его исполняемым:
chmod +x install.sh
- Запустите скрипт:
./install.sh
- Для запуска проекта после установки:
python3 -m app
- Скрипт предполагает, что переменные окружения (
.env
) и список каналов (channels_list.json
) уже созданы. - PostgreSQL должен быть установлен и настроен вручную, так как это шаг, который остаётся на усмотрение пользователя.
- Для пользователей Windows этот скрипт не будет работать напрямую. Им потребуется WSL (Windows Subsystem for Linux) или эквивалентная среда.
Следуя этим шагам, вы сможете настроить и запустить проект как системный сервис.
-
Убедитесь, что проект уже скачан:
git clone https://github.com/mithmith/youtube_node_downloader.git cd youtube_node_downloader
-
Проверьте, что в корне проекта созданы два файла:
-
.env
: Файл с переменными окружения. Если файла нет, создайте его, взяв за основу пример.env.example
:cp .env.example .env
Внесите необходимые значения для переменных в
.env
. -
channels_list.json
: Файл со списком YouTube-каналов. Если файла нет, создайте его:{ "channels": [ "https://www.youtube.com/channel_id_1", "https://www.youtube.com/channel_id_2", "https://www.youtube.com/channel_id_3" ] }
Возьмите за основу
channels_list.json.example
. Этот файл должен находиться в корне проекта.
-
-
Убедитесь, что у вас установлен Python (рекомендуется версия 3.10) и
pip
:python3 --version
-
Перейдите в папку проекта и установите Poetry и зависимости:
python3 -m pip install --disable-pip-version-check -U pip wheel poetry poetry config virtualenvs.create false poetry install --no-root --no-interaction --no-ansi
-
Установите Alembic:
python3 -m pip install alembic
- Убедитесь, что PostgreSQL запущен и работает.
- Проверьте подключение к базе данных, указав параметры из
.env
:psql -h localhost -p 5432 -U postgres -d peer_tube
- Накатите миграции (создадутся все необходимые таблицы в БД):
alembic upgrade head
Создайте файл youtube-monitoring.service
в корне проекта со следующим содержимым:
[Unit]
Description=YouTube Monitoring Service
After=network.target
[Service]
Type=simple
WorkingDirectory=/path/to/your/project
ExecStart=/usr/bin/python3 -m app
EnvironmentFile=/path/to/your/project/.env
Restart=always
RestartSec=5
User=your_user
Group=your_group
[Install]
WantedBy=multi-user.target
-
Обновите значения:
WorkingDirectory
: Укажите полный путь к папке с проектом.EnvironmentFile
: Укажите полный путь к.env
.User
иGroup
: Укажите пользователя и группу, от имени которых будет запускаться сервис.
-
Скопируйте файл сервиса в системную папку:
sudo cp youtube-monitoring.service /etc/systemd/system/
-
Проверьте созданный файл сервиса:
sudo systemctl daemon-reload
-
Включите сервис при старте системы:
sudo systemctl enable youtube-monitoring.service
-
Запустите сервис:
sudo systemctl start youtube-monitoring.service
-
Проверьте статус сервиса:
sudo systemctl status youtube-monitoring.service
Вы должны увидеть сообщение, что сервис активен (
Active: active (running)
). -
Просмотрите логи сервиса:
sudo journalctl -u youtube-monitoring.service
-
Если есть ошибки, остановите сервис для устранения:
sudo systemctl stop youtube-monitoring.service
-
Чтобы обновить проект, останавливайте сервис:
sudo systemctl stop youtube-monitoring.service
Затем выполните обновление:
git pull poetry install alembic upgrade head sudo systemctl start youtube-monitoring.service
-
Для управления логами можно указать ротацию в настройках
journalctl
или перенаправить логи в файл, обновив файл сервиса:StandardOutput=append:/var/log/youtube-monitoring.log StandardError=append:/var/log/youtube-monitoring.log
YouTube поддерживает несколько типов URL для каналов. Любой из них можно использовать для добавления канала в файл channels_list.json
.
Этот URL удобен для чтения и содержит имя пользователя:
https://www.youtube.com/c/<user_name>
Пример:
https://www.youtube.com/c/creatoracademy
Этот URL содержит уникальный идентификатор канала:
https://www.youtube.com/channel/<CHANNEL-ID>
Пример:
https://www.youtube.com/channel/UCkRfArvrzheW2E7b6SVT7vQ
YouTube предоставляет хэндлы (уникальные @handles), которые можно использовать в URL:
https://www.youtube.com/@<handle>
Пример:
https://www.youtube.com/@RedProlet
{
"channels": [
"https://www.youtube.com/channel/UCkRfArvrzheW2E7b6SVT7vQ",
"https://www.youtube.com/c/creatoracademy",
"https://www.youtube.com/@RedProlet",
]
}
MONITOR_NEW = 1
MONITOR_HISTORY = 1
MONITOR_VIDEO_FORMATS = 1
RUN_TG_BOT = 1