用 Github Action 拯救 Twitter 与 Telegram 的转发
书写于 1 年前
注意: 这篇文章已经有相当一段时间没有更新了.文章中任何有时效性的信息应当在仔细审阅后再使用.
如果有任何更新建议, 请留言.
剧情前提
推特上有太多好 (毛毛)(色)(不你什么都不知道) 图/视频了, 然而每次想找点回来的时候却...翻起来好麻烦啊
然而每次保存下来好麻烦, 要是点赞了以后可以自动保存下来就好了
于是我又动起了IFTTT的念头...因为IFTTT也有推特点赞转发啊! 我之前还做过一期如何用IFTTT配合推特转发到个人频道;甚至还买了Pro
但是如果是这样的话, 文章标题怎么感觉有点不对呢...?
IFTTT的困境
IFTTT这个东西嘛, 简单点的就算了, 这回我们的需求是:
- 获取点赞的推文
- 解析其中所有的视频/图片/链接
- 转发到Telegram频道
然而呢, IFTTT
- 其中的图片/视频链接不是直链
- Webhook有频率限制
- 甚至, IFTTT似乎实现错了这个功能(后文详述)
直链这个解析实在是难以描述, 如果不通过推特官方的API: 他默认做了很多对爬虫不友好的操作
一番测试下来发现效果真的很差, 很容易错过点赞
于是...那就看看推特的API然后自己做一套吧
正文
申请API
首先, 我们需要申请一下开发者API, 申请链接
在申请的时候他会让选择你的用途并描述你要做什么, 至少200 characters
, 不是words
. 也就是说差不多2-3句话差不多了
这个做完以后就等着邮箱发信给你, 确认一下. 我刚填完就收到了邮件, 基本上体验还好
创建APP
一开始他默认会给你创建一个项目, 然后你在里面可以创建你的第一个APP. 但是注意一下, 除了API_KEY
和API_SECRET
, 他还有一个ACCESS_TOKEN
. 这个对应的是用户的数据访问, 也就是说你这个APP代表的是哪个用户做事情. 我们目前是要获取自己帐号的点赞列表, 所以直接看下面Authentication Tokens
获取自己的就好
Github Action
然后就是我们的重头戏上场: https://github.com/NeverBehave/Tweet2Telegram
默认15分钟获取一次, 目前来看效果不错
甚至说实话, 我觉得转发也可以改成这个, 不知道好到哪里去了:
- 不需要麻烦的获取链接跳转再替换
- 视频/图片原生就在Telegram, 无需Web Preiew
写完以后感受: 推特的API其实还蛮舒服的, 当然如果只是个人使用的话. 一开始被IFTTT
坑的不要不要的, 现在看来其实还好
这里, 我想提一下这个很有意思的API问题 (Aka IFTTT干的好事)
since_id
这是我也踩了一脚坑, 意识到以后重新观察了一下IFTTT
的行为, 估计是一样的
获取点赞列表的时候, 其中一个参数是叫做since_id
(官方文档), 这个东西的意思是说返回所有从这个ID
开始的所有推文. 放在这个上下文是不是很容易理解为如果你点赞了的一条推文, 我记住它, 那么下次我获取新的点赞的时候, 给这个推文的ID
, 就可以获取从这个点赞以后的推文了
不是的!!!!!! 这个的意思纯粹是说按照时间顺序, 比你给的这个ID
新的所有你喜欢的推文
所以当你点赞了一条今天发送的推文, 然后去点赞了一条昨天发送的推文, 那么你就获取不到这个新的点赞了
我发现IFTTT就有类似的行为, 他总是检测不到一些点赞, 估计他的新点赞的推文也就是靠这个ID判断的, 实际上是错的!
但是实际上API文档里面写的很清楚了是时间顺序, 所以还是自己傻逼了, 抚额
后言
大部分的参数在项目里面提供了, 我就不在这里重新描述了, 其实这就是水文
然后就是这个IFTTT的bug, 不知道去哪里报一下