使用tg机器人自动下载并上传频道内文件到本地&网盘

使用tg机器人自动下载并上传频道内文件到本地&网盘

V+变量
2024-12-21 / 0 评论 / 4 阅读 / 正在检测是否收录...

因为要转存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

  1. 运行:给机器人发送 /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

评论 (0)

取消