此项目致敬🫡 https://github.com/alfem/telegram-download-daemon
在前辈的基础上:
1. 增加了代理的配置。
2. 优化了一些细节。
3. 增加了一个简单的页面用于查看下载记录,在7373端口。
4. 增加了下载文件按规则归类到不同路径。
具体的归类规则如下:
IGNORE: part, desktop
Music: mp3, aac, flac, ogg, wma, m4a, aiff, wav, amr
Videos: flv, ogv, avi, mp4, mpg, mpeg, 3gp, mkv, ts, webm, vob, wmv, srt
Pictures: png, jpeg, gif, jpg, bmp, svg, webp, psd, tiff
Archives: rar, zip, 7z, gz, bz2, tar, tgz, xz, iso, cpio
Documents: txt, pdf, doc, docx, odf, xls, xlsv, xlsx, ppt, pptx, ppsx, odp, odt, ods, md, json, csv
Books: mobi, epub, chm
DEBPackages: deb
Programs: exe, msi
RPMPackages: rpm
Mac: dmg, pkg
Linux: sh, rpm, deb
Android: apk
一个用于自动化文件下载的 Telegram 守护进程(不是机器人),[适用于您拥有管理员权限的频道]。
如果您有一台联网的电脑或 NAS,并且想要自动化从 Telegram 频道下载文件,这个守护进程非常适合您。
允许下载的最大大小受 Telegram API 限制为 2GB。
您需要 Python3(3.6+)。
通过运行以下命令安装依赖:
pip install -r requirements.txt
(如果您不想安装 cryptg 及其依赖,您只需要安装 telethon)
警告:如果您收到 "File size too large message" 错误,请检查您使用的 Telethon 库版本。旧版本有 1.5GB 的文件大小限制。
获取您自己的 api id:https://core.telegram.org/api/obtaining_api_id
您需要配置以下值:
| 环境变量 | 命令行参数 | 描述 | 默认值 |
|---|---|---|---|
TELEGRAM_DAEMON_API_ID |
--api-id |
从 https://core.telegram.org/api/obtaining_api_id 获取的 api_id | |
TELEGRAM_DAEMON_API_HASH |
--api-hash |
从 https://core.telegram.org/api/obtaining_api_id 获取的 api_hash | |
TELEGRAM_DAEMON_DEST |
--dest |
下载文件的目标路径 | /telegram-downloads |
TELEGRAM_DAEMON_TEMP |
--temp |
临时文件(下载中)的目标路径 | 使用 --dest 的值 |
TELEGRAM_DAEMON_CHANNEL |
--channel |
要从中下载的频道 ID | |
TELEGRAM_DAEMON_DUPLICATES |
--duplicates |
如何处理重复文件:忽略、覆盖或重命名 | rename |
TELEGRAM_DAEMON_WORKERS |
--workers |
同时下载的数量 | 等于处理器核心数 |
TELEGRAM_DAEMON_PROXY_HOST |
--proxy-host |
代理服务器主机地址 | |
TELEGRAM_DAEMON_PROXY_PORT |
--proxy-port |
代理服务器端口 | |
TELEGRAM_DAEMON_PROXY_TYPE |
--proxy-type |
代理类型(socks5, http, mtproxy) | socks5 |
TELEGRAM_DAEMON_PROXY_USERNAME |
--proxy-username |
代理服务器用户名(如果需要认证) | |
TELEGRAM_DAEMON_PROXY_PASSWORD |
--proxy-password |
代理服务器密码(如果需要认证) |
您可以将它们定义为环境变量,或者作为命令行参数,例如:
python telegram-download-daemon.py --api-id <your-id> --api-hash <your-hash> --channel <channel-number>
使用代理的示例:
python telegram-download-daemon.py --api-id <your-id> --api-hash <your-hash> --channel <channel-number> --proxy-host <proxy-host> --proxy-port <proxy-port> --proxy-type socks5 --proxy-username <username> --proxy-password <password>
最后,将任何文件链接重新发送到频道即可开始下载。这个守护进程可以同时管理多个下载。
您还可以使用 Telegram 客户端与这个守护进程 "对话":
- 发送 "list" 获取目标路径中可用文件的列表。
- 发送 "status" 检查当前状态。
- 发送 "clean" 从临时目录中删除过期的 (*.tdd) 文件。
- 发送 "queue" 列出等待开始的待处理文件。
推荐自行编译镜像,而不是使用预编译的镜像。
只需要注释掉 docker-compose.yml 中的 image 语句,放开 build 的注释,并执行 docker-compose build --no-cache。
docker pull wujiezero/telegram-dd
当我们使用 TelegramClient 方法时,它要求我们与 Console 交互,提供电话号码并使用安全码确认。
要做到这一点,在使用 Docker 时,您需要交互式运行容器第一次。
当您使用 docker-compose 时,存储登录信息的 .session 文件保存在容器外部的 Volume 中。因此,在使用 docker-compose 时,您需要:
$ docker-compose run --rm telegram-dd
# 与控制台交互进行身份验证。
# 看到消息 "Signed in successfully as {your name}"
# 关闭容器
$ docker-compose up -d查看 docker-compose.yml 文件中的 sessions 卷配置。