From f4fb7c297e76c20c67631c5b4ecddd64bb897230 Mon Sep 17 00:00:00 2001 From: aNNiMON Date: Mon, 22 May 2023 22:26:22 +0300 Subject: [PATCH] Fix python dependencies in Dockerfile, use ENV --- Dockerfile | 8 +++++--- README.md | 35 ++++++++++++++++++++++++++--------- ffmpegbot-docker.yaml | 11 +++++++++++ pytgfile.py | 4 ++++ 4 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 ffmpegbot-docker.yaml diff --git a/Dockerfile b/Dockerfile index 17ea788..4a84c82 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,10 +14,12 @@ RUN GRADLE_OPTS="-Xmx256m" gradle shadowJar --build-cache --stacktrace --no-daem FROM eclipse-temurin:17-jre-alpine RUN apk add --no-cache python3 py3-pip ffmpeg \ && python3 -m pip install --upgrade wheel \ - && python3 -m pip install --upgrade yt-dlp + && python3 -m pip install --upgrade yt-dlp \ + && python3 -m pip install --upgrade pyrogram \ + && python3 -m pip install --upgrade TgCrypto WORKDIR /app COPY --from=builder /usr/src/java-code/build/libs/ffmpegbot-1.0-SNAPSHOT-all.jar . RUN mkdir input && mkdir output COPY pytgfile.py . -COPY ffmpegbot.yaml . -ENTRYPOINT ["java", "-jar", "/app/ffmpegbot-1.0-SNAPSHOT-all.jar"] +COPY ffmpegbot-docker.yaml . +ENTRYPOINT ["java", "-jar", "/app/ffmpegbot-1.0-SNAPSHOT-all.jar", "docker"] diff --git a/README.md b/README.md index c39d704..14207a6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ffmpegbot +_# ffmpegbot Telegram Bot for re-encoding media @@ -20,14 +20,6 @@ Telegram Bot for re-encoding media ## Installation -### Using Docker - -```bash -cp ffmpegbot.yaml.template ffmpegbot.yaml -vim ffmpegbot.yaml -docker build --tag 'ffmpegbot' . -``` - ### Manual ```bash @@ -40,3 +32,28 @@ mkdir {input,output} # Run java -jar ./build/libs/ffmpegbot-1.0-SNAPSHOT-all.jar ``` + + +### Using Docker + +Note: FFmpeg binary might be installed with limited number of filters and codecs. Some bot features might not work (Audio pitch, robot effect, etc). + +```bash +# Edit user ids in `superUsers` and `allowedUsers` fields +vim ffmpegbot-docker.yaml +docker build --tag 'ffmpegbot' . +docker run -d -t -i \ + -e BOT_TOKEN='...' \ + -e BOT_USERNAME='...' \ + -e APP_ID='...' \ + -e APP_HASH='...'\ + --name ffmpegbot ffmpegbot:latest +``` + +#### Environment variables + + - `BOT_TOKEN` — Telegram bot token + - `BOT_USERNAME` — Telegram bot username + - `APP_ID` — Telegram API app_id (see https://core.telegram.org/api/obtaining_api_id) + - `APP_HASH` — Telegram API app_hash + diff --git a/ffmpegbot-docker.yaml b/ffmpegbot-docker.yaml new file mode 100644 index 0000000..25e72f8 --- /dev/null +++ b/ffmpegbot-docker.yaml @@ -0,0 +1,11 @@ +botToken: env(BOT_TOKEN) +botUsername: env(BOT_USERNAME) +# Telegram API app_id / app_hash +appId: env(APP_ID) +appHash: env(APP_HASH) +# Path to Telegram API file downloader script +downloaderScript: pytgfile.py +# Superusers can execute /run command +superUsers: [12345] +# Allowed user ids +allowedUsers: [12346, 12347] diff --git a/pytgfile.py b/pytgfile.py index be307e8..9b32b4a 100644 --- a/pytgfile.py +++ b/pytgfile.py @@ -1,5 +1,7 @@ import argparse import asyncio +import traceback +import logging import pathlib import pyrogram import pyrogram.file_id @@ -58,6 +60,8 @@ if __name__ == '__main__': try: asyncio.run(args.func(args)) + except Exception as e: + logging.error(traceback.format_exc()) except: exit(1)