因为要转存tg某些群的视频和图片(比如马里奥),但是太多了一个一个转存太麻烦了,有没有什么好的办法呢?
于是找到了这个项目:GitHub地址:telegram_channel_downloader
如果运行运行脚本时出现164行报错,那可能就是你的系统或是环境问题,这一点要注意。
一. Telegram API 申请
打开 https://my.telegram.org/apps ,登录后选择 Apps ,填写相关信息后自动生成 apiId 和 apiHash 等信息。如果之前申请过,进入 Apps 后即可看到。
二. 搭建tg机器人
下载脚本
git clone https://github.com/snow922841/telegram_channel_downloader.git
安装 rclone。如果只需要下载到本地,则无需安装这一步
Rclone安装及检查命令:
curl https://rclone.org/install.sh | sudo bash
rclone --version
* 安装完之后一定要记得配置好需要上传的网盘。
进入脚本目录
cd telegram_channel_downloader
安装依赖
pip3 install -r requirements.txt
修改 telegram_channel_downloader.py 文件内的相关信息:
api_id、api_hash:telegram api得到的信息,分别填入对应位置;
bot_token:联系@BotFather 创建一个机器人,也可以是现有的。将获得的token。填入其中;
admin_id:联系@get_id_bot 发送随意消息获取;
如果需要上传到OD:应修改脚本中以下参数:drive_id=”,drive_name=’onedrive’,onedrive 就是你配置 rclone 的时候填的网盘名称,还有第102行的“fclone”替换为“rclone”;
所有配置都有相应备注,根据需要修改。
运行脚本:可用SCREEN保持在线
python3 tg_channel_downloader.py
# 输入 telegram 所绑定的手机号,获取验证码并输入后即可
使用tg机器人自动下载并上传频道内文件到本地&网盘
screen相关命令:
创建一个screen会话:
screen -S xx #xx为创建会话的名称
隐藏并保留当前会话窗口:
按Ctrl+A,再按"D"键
恢复会话窗口:
screen -r xx #恢复名字为xx的会话
如果忘记或者没有设定会话名称:
screen -ls #列出所有会话,找到并使用恢复命令即可
关闭会话窗口
exit
- 运行:给机器人发送 /start 频道的链接 0 ,就可以正式开始运行脚本,下载文件了。
使用tg机器人自动下载并上传频道内文件到本地&网盘
频道的链接:点击你的频道名就能看到频道链接;
0:这是消息ID,可以自己定义,0代表的是最早的信息。如果要从特定某条信息往后下载,鼠标右键点击该条消息,选择复制该消息直链,就能从链接末尾看到消息ID数字。
三. 效果
使用tg机器人自动下载并上传频道内文件到本地&网盘
使用tg机器人自动下载并上传频道内文件到本地&网盘
四. 如果你的服务器没有流量
你可以用自己的电脑
你可以用google colab
打开google colab,并登录
文件-新建笔记
输入:!bash;点击左边的播放按钮
使用tg机器人自动下载并上传频道内文件到本地&网盘
这就相当于一个linux了,之后安装RCLONE,配置网盘,下载脚本文件,进入脚本文件夹内,安装依赖。
这时要修改脚本文件,但是google colab修改文件内容不是那么容易,那么可以这样做:
点击左边的播放按钮,暂停这行代码,在下面新建一行代码:
使用tg机器人自动下载并上传频道内文件到本地&网盘
在这行代码下面粘贴修改好的tg_channel_downloader.py文件。
点击左边的播放按钮。
再回到第一行代码,将!bash改成!python3 tg_channel_downloader.py,点击播放按钮运行即可,就可以输入telegram信息了。
防止Google Colab自动断开代码:
每60分钟自动运行代码刷新,解除90分钟断开限制.
使用方法:colab页面按下 F12或者 Ctrl+Shift+I (mac按 Option+Command+I) 在console(控制台) 输入以下代码并回车。
复制以下代码粘贴在浏览器console!!不要关闭浏览器以免失效。
function ConnectButton(){
console.log("Connect pushed");
document.querySelector("#connect").click()
}
setInterval(ConnectButton,60000);
评论 (0)