无需nginx和域名直接安装Google Drive百宝箱TG机器人

写在最前

现在Google Drive已经处于半死不活的状态,再也不可能每天转载几百T的时光是一去不复返了,据说是某大佬的几百T被传播的太快导致的,同时访问需要翻墙,这就导致了很多小伙伴觉得用的很鸡肋,其实对于我这个小博客来说,基本没啥影响的,因为访问量不大,住够用用了。只要你的链接没有被大神发到群里面基本上可以满足博客用户使用的。

目前做了限制就是:

不允许创建副本的方式进行转存

单个帐号750G的上传量,上传的目的地文件夹也有流量限制,好像也是2T把,这就导致了你换SA也是没有用的。

同一个文件帐号分享的文件每天2T的下载量,这个直接绝杀了很多大佬,除非你搞个十几个帐号,分开下载,个人有个小想法,利用CFworker做负载均衡不知道行不行。

话虽如此,个人还是比较喜欢用GD的,毕竟几百T的东西需要换砖。曾经楼主使用了某个大神的Google Drive百宝箱,用起来感觉非常方便,具体搭建可以看这里:传送门,因为博主,前段时间非常忙,所以导致了VPS到期忘记续费了(好吧,我承认没钱)。只有把机器人搬到我的另外一个VPS上了。由于我这个VPS环境是异常的浮渣,所以一键脚本是不能用了,同时需要配置nginx,并且我没安装宝塔,我直接放弃了,这个时候我发现了这款,无需nginx和域名配置、也不需要SSL的申请和配置,适合我这样的小白。由于那个上面好久没更新了,同时写的说明也有点错误,所以我写了个简单教程,希望能够帮助小白。

《无需nginx和域名直接安装Google Drive百宝箱TG机器人》

项目地址

1、原版地址(搭建复杂,但是文档写的很全):https://github.com/iwestlin/gd-utils

2、简化版(此版本无需域名和web服务即可使用tg机器人,大大简化了配置过程):https://github.com/dissipator/gd-utils

3、一键安装板(适合新VPS,nginx配置目前会有问题,环境复杂者甚用):https://github.com/vitaminx/gd-utils

4、colab脚本:https://colab.research.google.com/drive/1i1W9nAzgiDtfA_rmTBcpMpwxVUhwgLsq

打开上面链接后,保存到自己的云端硬盘(请一定要保存,因为上面的共享链接操作记录所有人可见)

colab使用录屏:https://drive.google.com/drive/folders/19T37ARH7M1h67JGYanKp9LvORjJLEp_x

这里还有另一位网友@iErics制作的colab脚本,界面更加规整,功能也更完整些(比如可以选择是否继续任务等),使用方法大同小异: https://colab.research.google.com/github/iErics/gd-utils/blob/master/Colab_gd_utils.ipynb

这个是纯白嫖的,但是用起来比较麻烦。

5、Docker 版(适合喜欢Docker的小伙伴):https://github.com/gdtool/gd-utils-docker
PS:目前可以白嫖的Docker空间有很多,本站就有,小伙伴们可以是搜索一下。

准备工作

我这里是centos7.7的系统,大家参考一下

升级一下

yum -y update

安装netstat

yum -y install net-tools

开放端口

firewall-cmd --zone=public --add-port=23333/tcp --permanent
firewall-cmd --reload

安装rclone记录参数

有配置好的,直接可以跳过这一步

curl https://rclone.org/install.sh | sudo bash

记录好一下几个参数将来要用,强烈推荐使用自己的client_id、client_secret否则会后患无穷,甚至可能安装失败。

"client_id": "202264815644.apps.googleusercontent.com",//我这里用的就是rclone默认的app,官方建议自己申请,最好自己申请
"client_secret": "X4Z3ca8xfWDb1Voo-F9a7ZxJ",//我这里用的就是rclone默认的app
"refresh_token": "1//06-4TkIqhx5kZCgYIARAAGAYSNwF-L9IrNGcjWRWA8JYWW33jCqb0L7sbxcVrR-8rh0Nl7Q_jVk0xzzxWcr0kzhYVcddPL8", // 授权 token

获取TG机器人授权和个人ID

获取TG机器人:获取方法参见 https://core.telegram.org/bots#6-botfather

获取TG用户ID:@userinfobot

以上几个参数均需要在config.js文件内配置,所以这都是准备工作,缺一个都不行。

// 单次请求多少毫秒未响应以后超时(基准值,若连续超时则下次调整为上次的2倍)
const TIMEOUT_BASE = 7000
// 最大超时设置,比如某次请求,第一次7s超时,第二次14s,第三次28s,第四次56s,第五次不是112s而是60s,后续同理
const TIMEOUT_MAX = 60000

const LOG_DELAY = 5000 // 日志输出时间间隔,单位毫秒
const PAGE_SIZE = 1000 // 每次网络请求读取目录下的文件数,数值越大,越有可能超时,不得超过1000

const RETRY_LIMIT = 5 // 如果某次请求失败,允许其重试的最大次数
const PARALLEL_LIMIT = 10 // 网络请求的并行数量,可根据网络环境调整

const DEFAULT_TARGET = 'DEFAULT_TARGET' // 必填,拷贝默认目的地ID,如果不指定target,则会复制到此处,建议填写团队盘ID

const AUTH = { // 如果您拥有service account的json授权文件,可将其拷贝至 sa 目录中以代替 client_id/secret/refrest_token
  client_id: 'your_client_id',
  client_secret: 'your_client_secret',
  refresh_token: 'your_refrest_token',
  expires: 0, // 可以留空
  access_token: '', // 可以留空
  tg_token: 'bot_token', // 你的 telegram robot 的 token,获取方法参见 https://core.telegram.org/bots#6-botfather
  tg_whitelist: ['tg_whitelist'], // 你的tg username(t.me/username),bot只会执行这个列表里的用户所发送的指令
  adminUsers:[your_tg_userid] //admin users' telegram id, should be numbers
  }

  module.exports = { AUTH, PARALLEL_LIMIT, RETRY_LIMIT, TIMEOUT_BASE, TIMEOUT_MAX, LOG_DELAY, PAGE_SIZE, DEFAULT_TARGET};

开始安装

拉取源码

git clone https://github.com/dissipator/gd-utils && cd gd-utils

编译环境

npm install --unsafe-perm=true --allow-root

Service Account 配置

这个可选,因为现在SA用处不大了。https://github.com/xyou365/AutoRclone

选择好准备好的SA文件传到以下目录:/root/gd-utils/sa

选择一个你的sa拥有阅读权限的目录ID,执行 ./validate-sa.js 你的目录ID

这个会自动删除你无权限的帐号,减少BUG

“有不少网友遇到这些问题,但是作者一直无法复现,直到有tg网友发了张运行日志截图: 《无需nginx和域名直接安装Google Drive百宝箱TG机器人》 报错日志的意思是找不到对应的目录ID,这种情况会发生在SA没有对应目录的阅读权限的时候。 当进行server side copy时,需要向Google的服务器提交要复制的文件ID,和复制的位置,也就是新创建的目录ID,由于在请求时是随机选取的SA,所以当选中没有权限的SA时,这次拷贝请求没有对应目录的权限,就会发生图中的错误。”

安装PM2

#用于进程守护
npm i pm2 -g

编辑配置文件

不要忘记了你的谷歌网盘目录ID,建议选择团队盘

#文件路径/root/gd-utils/config.js
// 单次请求多少毫秒未响应以后超时(基准值,若连续超时则下次调整为上次的2倍)
const TIMEOUT_BASE = 7000
// 最大超时设置,比如某次请求,第一次7s超时,第二次14s,第三次28s,第四次56s,第五次不是112s而是60s,后续同理
const TIMEOUT_MAX = 60000

const LOG_DELAY = 5000 // 日志输出时间间隔,单位毫秒
const PAGE_SIZE = 1000 // 每次网络请求读取目录下的文件数,数值越大,越有可能超时,不得超过1000

const RETRY_LIMIT = 5 // 如果某次请求失败,允许其重试的最大次数
const PARALLEL_LIMIT = 10 // 网络请求的并行数量,可根据网络环境调整

const DEFAULT_TARGET = 'DEFAULT_TARGET' // 必填,拷贝默认目的地ID,如果不指定target,则会复制到此处,建议填写团队盘ID

const AUTH = { 
  client_id: 'your_client_id',//前面配置好的
  client_secret: 'your_client_secret',
  refresh_token: 'your_refrest_token',
  expires: 0, // 可以留空
  access_token: '', // 可以留空
  tg_token: 'bot_token', // 你的 telegram robot 的 token,获取方法参见 https://core.telegram.org/bots#6-botfather
  tg_whitelist: ['tg_whitelist'], // 你的tg username(t.me/username),bot只会执行这个列表里的用户所发送的指令
  adminUsers:[your_tg_userid] //admin users' telegram id, should be numbers
  }

测试程序

#可以正常返回目录即代表无问题。
node check.js

运行程序

运行程序

#记得在机器人目录内进行
pm2 start index.js

这个时候机器人提醒上线,输入/help测试表面已经成功

《无需nginx和域名直接安装Google Drive百宝箱TG机器人》

程序使用

可以参考官方文档,还有各种非常不错的功能,以后再介绍了

https://github.com/iwestlin/gd-utils

发表回复