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/
|
||||
__pycache__/
|
||||
temp/
|
||||
runtime/
|
||||
*.swp
|
||||
*.swo
|
||||
*.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`.
|
||||
|
||||
## Для запуска рекомендуется `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` в рабочей директории. Используйте
|
||||
|
||||
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)
|
||||
# get formats
|
||||
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)
|
||||
# upload
|
||||
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