和BT一样挂机下载资源
很多时候小工具不好用,下载TG里面电影资源都是要下载半天,更多的解决办法就挂一台windows一直下载,好在最近找到了一个更好的方案,就是挂着一个TG机器人,把资源转发给机器人让其帮忙下载,而且机器人还能根据资源分类
生成电报 API 密钥
在使用 Telegram 的 API 之前,您需要获取自己的 API ID 和哈希:
- 转到 https://my.telegram.org/ 并使用您的 电话号码。
- 单击 API 开发工具下。
- 一个 创建新应用程序 窗口。 无需输入任何网址 ,只需输入前两个字段( App title 和 Short name )目前可以在以后更改。
- 点击 创建应用程序 。 请记住,您的 API 哈希是保密的 ,Telegram 不会让你撤销它。 不要在任何地方发布!
创建电报机器人
- 打开与
@BotFath
在 Telegram 中 - 使用
/newbot
命令创建一个新机器人。 BotFather 会询问您的姓名和用户名,然后为您的新机器人生成授权令牌。 - 您的机器人名称显示在联系方式和其他地方。
- 用户名是一个短名称,用于提及和 telegram.me 链接。 用户名长度为 5-32 个字符,不区分大小写,但只能包含拉丁字符、数字和下划线。 您的机器人的用户名必须以“bot”结尾,例如“tetris_bot”或“TetrisBot”。
- 令牌是类似于 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw 的字符串,是授权机器人并向机器人 API 发送请求所必需的。 确保您的令牌安全并安全存储,任何人都可以使用它来控制您的机器人。
测试你的电报机器人
先获取机器人聊天列表:
curl https://api.telegram.org/bot[机器人令牌]/getUpdates
会显示一个聊天ID和聊天对象,在把ID填入下面测试,如答复即可完成
curl -X POST "https://api.telegram.org/bot[机器人令牌]/sendMessage" -d "chat_id=[聊天室ID]&text=my sample text"
如果在聊天室机器人答复 my sample text 表示测试成功
开始部署机器人
拉取镜像:
docker pull jsavargas/telethon_downloader
部署容器:
docker run -itd --restart=always \
--privileged=true \
--name tg \
-e TG_AUTHORIZED_USER_ID=[聊天室ID] \
-e TG_API_ID=[TG API] \
-e TG_API_HASH=[哈希值] \
-e TG_BOT_TOKEN=123456;ABCDEF \
-e TG_MAX_PARALLEL=4 \
-e TG_PROGRESS_DOWNLOAD=True \
-v /TG/config:/config \
-e TZ=Asia/Shanghai \
jsavargas/telethon_downloader:latest
变量解释
TG_AUTHORIZED_USER_ID
:聊天室ID,在上面测试聊天机器人可以获得该ID
TG_API_ID
:TG API,在生成电报 API 密钥那一步可以获得这个ID
TG_API_HASH
:TG 哈希值,在生成电报 API 密钥那一步可以获得这个哈希值
TG_BOT_TOKEN
:机器人TOKEN,在创建电报机器人那一步可以获得这个TOKEN,格式类似123:ABC
TG_MAX_PARALLEL
:最大同时下载数量(默认:4)
TG_PROGRESS_DOWNLOAD
:显示下载进度信息
TG_DL_TIMEOUT
:等待下载完成的最长时间(以秒为单位)。 在此时间之后,下载被取消并触发错误(默认:3600)
设置代理
机器人最好是部署在境外主机,在国内部署是不能正常通信,这里需要设置代理,无奈镜像没有设置代理的香港变量,这里需要魔改一下配置文件
确保完成以下操作:
- 已经完成部署的容器
- 请准备好socks5地址
容器内安装 PySocks 依赖
docker exec -it tg pip install PySocks
修改 bottorrent 配置文件
进入容器内/app
目录,修改bottorrent.py
文件
docker exec -it tg /bin/sh
在 205行 左右 把 proxy=none
改成 socks5
链接地址,如:127.0.0.1:1080
# client = TelegramClient(session, api_id, api_hash, proxy =none, request_retries = 10, flood_sleep_threshold = 120)
client = TelegramClient(session, api_id, api_hash, proxy =("socks5", '127.0.0.1', 1080), request_retries = 10, flood_sleep_threshold = 120)
最后重启TG容器即可使用