• Stars
    star
    133
  • Rank 272,600 (Top 6 %)
  • Language
    Go
  • License
    BSD 3-Clause "New...
  • Created about 2 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Twitter friend monitoring tool

twiyou

Twitter friend monitoring tool


twiyou(推油)是一款推特好友/推特数据监测工具。

Screenshot 2022-10-07 145315 Screenshot 2022-10-07 145528

搭建自己的部署

运行起来需要部署3个组件:数据库,数据抓取工具,监控面板,目前这3个组件都有免费的白嫖资源,此外需要有推特开发者账号。

  • 数据库我用的是TiDB Cloud DevTier (https://tidbcloud.com/ )的免费资源,理论上兼容MySQL协议的应该都行,不过我没试。
  • 数据抓取工具可以从 Release 下载,找台机器配置好环境变量定时运行程序就行(推荐5分钟运行一次)。也可以白嫖 GitHub Actions。
  • 监控面板用的是Grafana,Grafana Cloud (https://grafana.com/ )也是可以创建免费的账号,添加数据库数据源之后,把监控模板导入就行。

搭建自己的部署(详细攻略)

1. 注册 twitter 开发者账号

注册地址:https://developer.twitter.com/en

申请成功后创建一个项目,然后把如图所示的Bearer Token记录下来备用。

Screenshot 2022-10-07 152412

2. 注册 TiDB Cloud DevTier

注册地址:https://tidbcloud.com/

完成后创建一个免费的DevTier集群,然后在集群页面可以看到连接参数。

Screenshot 2022-10-07 152706

3. 运行数据抓取工具

方法1:使用 binary 部署

下载地址:https://github.com/disksing/twiyou/releases

然后配置好crontab和环境变量每5分钟运行一次就行,抓下来的数据都会写到数据库里面,本地不存数据。

环境变量设置如下图。

Screenshot 2022-10-07 153706

注意DB_NAME需要提前自己连接数据库后创建,懒得手动创建的话直接填test数据库也行。

TWITTER_USER_NAME填自己的twitter id,当然你如果想监控别人的好友,填别人的id也可以。

方法2:使用 Github Actions

如果自己没有服务器的话,可以使用免费的 GitHub Action 来跑:

  1. fork 这个项目

  2. 在 Repo Settings - Secrets 里配置好环境变量

  3. https://github.com/settings/tokens 里生成一个新的 Personal access token

  4. 配置一个触发器定时发送类似下面的 HTTP 请求来触发 Github Action:

    curl \
    -X POST \
    -H "Accept: application/vnd.github+json" \
    -H "Authorization: Bearer <YOUR-GITHUB-TOKEN>" \
    https://api.github.com/repos/<OWNER>/twiyou/actions/workflows/scrape.yml/dispatches \
    -d '{"ref": "master"}'

这类第三方服务比较多,比如 Cloudflare worker,https://cron-job.org 都行。以 cron-job.org 为例:

image image

方法3:使用 Docker / Kubernetes 部署

详细说明参考 xiaowenz/twiyou

4. 配置 Grafana

注册地址:https://grafana.com

完成后在自己的Grafana实例添加MySQL数据源,参考截图:

image

这里Timezone不要填,开启 With CA Cert,然后将这个根证书 pem 粘贴到 TLS/SSL Root Certificate 中。

然后导入预定义模板,选择之前创建的数据源。在第一轮数据抓完之前,可能不会立即看到数据。

一些问题和后续计划(请求出谋划策)

  1. twitter开发者账号申请比较麻烦,而且API的rate limit等限制颇多,可以考虑换成绕过开发者API的方案。例如twint,不过我还没仔细研究。不好搞的话,或许可以考虑配置多个API key,轮换着用。

  2. 想把自己的历史推文抓下来分析下,比如统计历史推文的传播表现,或者把发推历史跟follower数量变化做点关联分析之类,但是目前twitter API限制只能抓近一周的历史推文,所以这个功能可能依赖于上一个问题的解决。

排障 FAQ

  1. 2022/10/13 07:37:39 Error 1130: Host '4.246.175.211' is blocked by traffic filter. See https://docs.pingcap.com/tidbcloud/connect-to-tidb-cluster#connect-via-standard-connection

原因是 TiDB Cloud 中 Cluster 未配置允许外部 IP 访问集群,需要 Create traffic filter,在其中增加 twiyou 二进制访问的出口 IP,如果没有固定 IP 可以允许任意 IP:0.0.0.0/0,只需要在 TiCloud 网页 Console 的集群下 Edit 就好了。

  1. client has multi-statement capability disabled. Run SET GLOBAL tidb_multi_statement_mode='ON' after you understand the security risk

这个报错是自解释的,不更改 twiyou/client 上的 multi-statement 模式的情况下,可以在 TiDB Cloud WebShell 里执行 SET GLOBAL tidb_multi_statement_mode='ON',只需要在 TiCloud 网页 Console 的集群下点击 Connect 然后点击 WebShell,在 Shell 里输入密码登陆之后执行就好了。