AI摘要
tgautodown 是一个基于 Telegram MTProto 的自动下载工具。它不依赖 Bot API,也不需要单独部署 bot-api-server,登录自己的 Telegram 账号后,就可以监听指定频道或群,把收到的视频、音乐、图片、文档、磁力链和笔记自动保存到本地目录。
比较适合的使用场景是:自己建一个私有频道,把需要保存的资源转发进去,然后让 tgautodown 自动下载和分类归档。
主要功能
- 支持下载视频、音乐、图片、文档。
- 支持保存文本笔记。
- 支持磁力链接下载。
- 支持获取 Telegram 文件原文件名。
- 支持 Web 页面登录 Telegram。
- 登录成功后,Web 页面展示正在下载任务的进度,不展示 AppHash、手机号等隐私信息。
- 每个下载任务会分配一个临时 UID,可在 Telegram 中暂停、继续或删除任务。
- Docker Compose 支持 ARM64 和 AMD64 架构。
频道参数怎么填
启动参数里的 -names 或 Docker 环境变量 TG_CHANNEL 用来配置监听来源。
公开频道或公开群填写用户名即可,例如:
my_public_channel私有频道或私有群填写邀请链接里的 +hash。例如邀请链接是:
https://t.me/+AjbQIYhiKlhhNzMx那么配置为:
+AjbQIYhiKlhhNzMx注意:这里不是频道 ID。当前版本不支持直接填写频道 ID。
如果账号尚未加入这个私有频道,程序会尝试通过邀请链接自动加入。更稳妥的方式是先用 Telegram 官方客户端登录同一个账号,手动加入频道或群,然后再启动程序。
Docker Compose 启动
先把项目拉到服务器上:
git clone https://github.com/Suk-ldev/tgautodown.git
cd tgautodown项目里已经提供了 docker-compose.yml,先打开它:
nano docker-compose.yml你主要需要改这几处:
environment:
TG_CHANNEL: "+AjbQIYhiKlhhNzMx"
TG_PROXY: "socks5://192.168.31.2:7891"
TG_F2A: ""
TG_RETRYCNT: "10"
ports:
- "2020:2020"
volumes:
- "/mnt/sda1/download:/app/download"
- "/mnt/sda1/data:/app/data"说明一下:
TG_CHANNEL是监听来源。公开频道填用户名,私有频道填邀请链接里的+hash。TG_PROXY是 socks5 代理。如果服务器能直接访问 Telegram,就改成""。TG_F2A是 Telegram 两步验证密码。没有开启两步验证就留空。TG_RETRYCNT是下载失败后的重试次数,一般保持10。ports左边是宿主机端口,右边是容器端口。默认访问http://服务器IP:2020。volumes左边是服务器目录,右边是容器目录。通常只改左边,例如改成自己的硬盘挂载目录。
完整示例:
services:
tgautodown:
image: tgautodown:${TARGETARCH:-arm64}
build:
context: .
dockerfile: Dockerfile
args:
TARGETOS: linux
TARGETARCH: ${TARGETARCH:-arm64}
platform: linux/${TARGETARCH:-arm64}
container_name: tgautodown
restart: unless-stopped
environment:
TG_CHANNEL: "+AjbQIYhiKlhhNzMx"
TG_PROXY: ""
TG_F2A: ""
TG_RETRYCNT: "10"
ports:
- "2020:2020"
volumes:
- "/root/download:/app/download"
- "/root/data:/app/data"保存后启动:
docker compose up -d --buildARM64 机器可以直接构建:
docker compose up -d --build如果是 AMD64:
TARGETARCH=amd64 docker compose up -d --build强制重新构建镜像:
docker compose down --rmi local
docker compose build --no-cache --pull
docker compose up -d --force-recreate首次登录
容器启动后,打开:
http://服务器IP:2020输入 Telegram API 的 App ID、App Hash 和手机号,等待验证码,然后在页面中提交验证码。登录成功后,页面会进入下载进度视图。
Telegram API ID 和 App Hash 可以在这里申请:
https://core.telegram.org/api/obtaining_api_id下载目录
资源会按类型保存:
videos 视频
music 音乐
documents 文档
photos 图片
bt 磁力链
note 文本笔记如果 Docker 中把 /app/download 映射到了宿主机目录,例如 /mnt/sda1/download,那么最终文件会出现在宿主机的对应分类目录里。
暂停、继续和删除下载
任务开始后,程序会在 Telegram 中回复类似这样的提示:
正在下载视频: example.mp4
- UID: 100
- 文件大小: 1.20GB
- 消息ID: 123
- 暂停请输入: 暂停 100
- 删除正在下载视频请输入: 删除 100
- 继续请输入: 继续 100之后可以在监听频道或群里发送:
暂停 100
继续 100
删除 100UID 是临时的,下载完成、失败或删除后会释放。
关于 FLOOD_WAIT
如果日志里出现:
FLOOD_WAIT (2452)意思是 Telegram 限制了这个账号继续请求,需要等待括号中的秒数。比如 2452 秒大约是 40 分 52 秒。
遇到这种情况不要反复重启容器,也不要频繁尝试同一个邀请链接。等限制时间过去后再启动,或者先用 Telegram 官方客户端手动加入频道,再让程序监听。
查看日志
docker compose logs -f --tail=100 tgautodown如果看到 ready,说明 Telegram 账号已经登录成功。如果看到 private channel 或 public channel,说明频道已经被识别并开始监听。
小结
tgautodown 更像一个私人 Telegram 资源归档器:把资源转发到固定频道,它负责下载、分类和保存。配合 Docker 部署到 NAS、软路由或 ARM 小主机上,基本可以做到长期后台运行。