Added docker support
This commit is contained in:
10
.dockerignore
Normal file
10
.dockerignore
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
.venv/
|
||||||
|
session_storage/
|
||||||
|
__pycache__/
|
||||||
|
temp/
|
||||||
|
runtime/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*.vscode
|
||||||
|
*.json
|
||||||
|
*.sqlite
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,6 +2,7 @@
|
|||||||
session_storage/
|
session_storage/
|
||||||
__pycache__/
|
__pycache__/
|
||||||
temp/
|
temp/
|
||||||
|
runtime/
|
||||||
*.swp
|
*.swp
|
||||||
*.swo
|
*.swo
|
||||||
*.vscode
|
*.vscode
|
||||||
|
|||||||
17
Dockerfile
Normal file
17
Dockerfile
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
FROM python:3.12-slim
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install --no-install-recommends -y libolm3 libolm-dev git libmagic-dev ffmpeg && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
COPY requirements.txt ./
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
RUN pip install -U "yt-dlp[default,curl-cffi]"
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
WORKDIR /runtime
|
||||||
|
RUN chown -R 1000:1000 /usr/src /runtime
|
||||||
|
|
||||||
|
USER 1000:1000
|
||||||
|
CMD [ "python", "/usr/src/app/main.py" ]
|
||||||
23
README.md
23
README.md
@@ -10,6 +10,29 @@ Matrix бот для скачивания видео/аудио с *YouTube, Pin
|
|||||||
|
|
||||||
> В системе должны быть установлены `ffmpeg`, `ffprobe` и `yt-dlp`.
|
> В системе должны быть установлены `ffmpeg`, `ffprobe` и `yt-dlp`.
|
||||||
|
|
||||||
|
## Для запуска рекомендуется `docker`
|
||||||
|
|
||||||
|
1. Соберите образ
|
||||||
|
```bash
|
||||||
|
sudo docker build -t 2026-matrix-down .
|
||||||
|
```
|
||||||
|
2. Выполните первый запуск в интерактивном режиме
|
||||||
|
```bash
|
||||||
|
sudo mkdir runtime
|
||||||
|
sudo chown 1000:1000 runtime
|
||||||
|
sudo docker run -v ./runtime:/runtime -ti 2026-matrix-down
|
||||||
|
```
|
||||||
|
3. В папке `runtime` появится файл `config.json`. Внесите туда нужные настройки
|
||||||
|
4. Запустите ещё раз в интерактивном режиме, чтобы авторизоваться
|
||||||
|
```bash
|
||||||
|
sudo docker run -v ./runtime:/runtime -ti 2026-matrix-down
|
||||||
|
```
|
||||||
|
5. Дальше можно запускать контейнер в фоне
|
||||||
|
```bash
|
||||||
|
sudo docker run-v ./runtime:/runtime --detach 2026-matrix-down
|
||||||
|
```
|
||||||
|
> Рекомендуется запускать контейнер при помощи `docker compose`.
|
||||||
|
|
||||||
## Работа с ботом
|
## Работа с ботом
|
||||||
|
|
||||||
Первый запуск сгенерирует файл `config.json` в рабочей директории. Используйте
|
Первый запуск сгенерирует файл `config.json` в рабочей директории. Используйте
|
||||||
|
|||||||
6
logic.py
6
logic.py
@@ -33,7 +33,11 @@ async def worker_download(room: MatrixRoom, text: RoomMessageText) -> None:
|
|||||||
await _bot.send_text_to_room(room.room_id, response, True)
|
await _bot.send_text_to_room(room.room_id, response, True)
|
||||||
# get formats
|
# get formats
|
||||||
d = Downloader(text.body)
|
d = Downloader(text.body)
|
||||||
result = await d.download_video("temp")
|
try:
|
||||||
|
result = await d.download_video("temp")
|
||||||
|
except:
|
||||||
|
await _bot.send_text_to_room(room.room_id, traceback.format_exc(), False)
|
||||||
|
return
|
||||||
await _bot.send_text_to_room(room.room_id, "<strong>Скачано, загрузка в Matrix...</strong>", True)
|
await _bot.send_text_to_room(room.room_id, "<strong>Скачано, загрузка в Matrix...</strong>", True)
|
||||||
# upload
|
# upload
|
||||||
try:
|
try:
|
||||||
|
|||||||
34
requirements.txt
Normal file
34
requirements.txt
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
aioconsole==0.8.2
|
||||||
|
aiofiles==25.1.0
|
||||||
|
aiohappyeyeballs==2.7.1
|
||||||
|
aiohttp==3.14.3
|
||||||
|
aiohttp_socks==0.12.0
|
||||||
|
aiosignal==1.4.0
|
||||||
|
atomicwrites==1.4.1
|
||||||
|
attrs==26.1.0
|
||||||
|
build==1.5.0
|
||||||
|
cachetools==7.1.7
|
||||||
|
frozenlist==1.8.0
|
||||||
|
h11==0.16.0
|
||||||
|
h2==4.4.1
|
||||||
|
hpack==4.2.0
|
||||||
|
hyperframe==6.1.0
|
||||||
|
idna==3.19
|
||||||
|
jsonschema==4.26.0
|
||||||
|
jsonschema-specifications==2025.9.1
|
||||||
|
mab @ git+https://git.tyukalov.su/nikita/mab@v0.2.0
|
||||||
|
matrix-nio==0.26.0
|
||||||
|
multidict==6.7.1
|
||||||
|
packaging==26.3
|
||||||
|
peewee==3.19.0
|
||||||
|
pillow==12.3.0
|
||||||
|
propcache==0.5.2
|
||||||
|
pycryptodome==3.23.0
|
||||||
|
pyproject_hooks==1.2.0
|
||||||
|
python-magic==0.4.27
|
||||||
|
python-socks==3.0.0
|
||||||
|
referencing==0.37.0
|
||||||
|
rpds-py==2026.6.3
|
||||||
|
unpaddedbase64==2.1.0
|
||||||
|
vodozemac==0.10.0
|
||||||
|
yarl==1.24.5
|
||||||
Reference in New Issue
Block a user