tg文件转存gd


前言

自己telegram的私人频道上存了一堆杂七杂八的文件,telegram的官方api下载又限速+中文搜索实在不忍直视,于是有了把telegram上的文件丢Google Drive上的想法,去Github上面搜了下还真有这类项目,初步试用了两个,暂以此文记录使用体验。

snow922841大佬的

项目地址

优缺点

优点

  1. 配置相较于另外一个更加方便,telegrambot操作相对较为直观。
  2. 带有自动调用*clone(*=r/g/f)上传的功能。
  3. 会自动重命名按时间排序文件,解决了我频道里面一堆名字相同文件的痛点。

    缺点(其实也不能算缺点,只是个人用着不爽罢了)

  4. 调用的是官方的telethon api,存在限速的情况(对于我这种媒体文件较多的人来说简直难受)。
  5. 下载文件存在莫名其妙停止的情况,下载音频文件时大概300-400个文件左右就会停止,需要手动停止再开启,有部分人提过issue但仍然没有解决。这个算是我较为在意的一点,希望作者能够在之后解决该问题(作者说了他有正式工作,这个只是业余兴趣,所以可能要挺久才能修复的了.

    教程

    其实我觉得作者的教程已经挺详细的了就直接copy过来了(只是把pip库安装位置改在了项目目录下)
    Telegram 频道/群组 文件下载脚本

脚本需要python3环境,具体安装教程自行搜索。

测试环境 Ubuntu 18.04.5 LTS & Python 3.6.9

1. 前提

  • https://my.telegram.org/apps 获取自己的Telegram API密钥。

  • 下载脚本

    git clone https://github.com/snow922841/telegram_channel_downloader.git
  • 安装fclone(可选用gclone/rclone)

    wget https://github.com/mawaya/rclone/releases/download/fclone-v0.4.1/fclone-v0.4.1-linux-amd64.zip -O fclone.zip && unzip fclone.zip && mv fclone*/fclone /usr/bin && chmod +x /usr/bin/fclone && fclone version

若需要更改为gclone/rclone,只需要把脚本内的fclone改为gclone/rclone即可

2. 使用

  • 进入脚本目录
    cd telegram_channel_downloader
  • 安装依赖(安装到项目根目录下)
pip3 install -r requirements.txt -t .
  • 修改telegram_channel_downloader.py文件内的 api_id 和 api_hash 为你自己的

  • 修改脚本内的bot_token 、 admin_id等必填配置

  • 鉴于网友需要上传GD,特添加了使用gclone自动上传到团队盘的功能,需要在配置区域设置。具体查看脚本内注释

  • 运行

    python3 tg_channel_downloader.py
  • 按照提示输入telegram绑定的手机号获取验证码并输入

  • 配置完成后需要给bot发送 /start 频道的链接 0 才会正式开始运行脚本,否则无法启动 0代表开始下载消息的ID,可以自行修改。

3. 常见问题

  • 关于获取admin_id

可以在电报中给@get_id_bot这个bot发消息获取

  • 关于上传到OneDrive

在脚本中找到一下参数:drive_id=’’,drive_name=’onedrive’, onedrive 就是你配置rclone的时候填的盘名称, 还有102行的fclone替换为rclone,rclone需要自行安装。

点击查看更新日志

2021-07-29更新

  • 添加对私有群组的支持

2020-09-15更新

  • 移除下载上传进度条显示。
  • 使用异步并发,默认10个任务同时进行。
  • 修复异常重试
  • 远程添加任务,方便下载多个频道消息。
  • 移除redis保存任务
  • 增加全部频道、群组新消息监控,请在配置区域自行修改。

2020-09-03更新

  • ref超时异常自动重试

2020-09-01更新

  • 使用bot启动,并使脚本持久化,
  • 优化代码
  • 修复一些bug

2020-08-29更新

  • 更换telegram的第三方库
  • 默认上传到GD,目前未配置不上传,所以需要安装gclone
  • 默认过滤贴纸、动态贴纸、gif格式文件
  • 优化了下载和上传进度条的显示
  • 上传失败后会把消息ID保存在脚本所在的文件夹,方便以后可以手动下载

2020-08-19更新

  • 添加自动上传到Googledrive的功能
  • 使用redis缓存已经遍历的消息ID

我自己修改的版本

我的项目修改自这个项目,修改点如下:

  • 更新Pyrogram版本以适配大文件下载
  • ytdl更新为yt-dlp
  • 修改为sqlite模式而非postgresql 本来最开始想改成本地json,但懒得改sql请求就算了
  • 修改为async异步,理论提升性能
  • Telegram下载文件名修改为时间+文件名,以解决同名文件下载的问题。
  • 更新认证方式,从urn:ietf:wg:oauth:2.0:oob更新为localhost 模式。

优点

支持大文件下载,同时相较于老项目更加轻量,使用异步,更好处理同名文件。

缺点

没有测试过yt-dlp功能(主要是依赖于其软件本身版本更新,所以不想自己去支持了),没有优化代码架构,可读性较低(自己懒)。

教程

至于搭建教程,直接去原项目看README吧。


文章作者: xieshang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 xieshang !
评论
  目录