insshot: 自动截屏保存ins用户的最新post
jwenjian opened this issue · 0 comments
jwenjian commented
insshot
这个项目的触发点是 -> 林志玲宣布婚讯, 微博上有人贴出了林志玲ins的po文, 但是由于众所周知的原因, 没办法上ins上看看原po.
经过了大概3天的头脑风暴+coding, 才有了现在的这个项目.
What
insshot的功能:
- 从github读取label列表, 我把label当成了数据库了, 这样每次想增加一个ins用户不需要手动提交了
- 借助puppeteer, 对每个用户的ins主页进行解析, 获取到最新的post链接
- 打开最新的post页面, 选取图片和文字区域, 截图到本地
- 调用阿里云oss的api, 将截图保存到阿里云oss中, 以便之后在手机上访问
总体思路是, 借助circle-ci的运行环境(主要是网络环境), 访问instagram, 截图保存成文件, 将文件保存至本地网络可以访问的阿里云oss上, 绕了(GFW)一圈.
How
主要的几个关键点:
- 在github上创建了一个token, 用token访问github的api
- 借助puppeteer, 解析instagram的网页, 找到需要截图的区域, 截图保存至本地
- 创建阿里云oss的bucket, 调用阿里云oss的api, 将截图文件发送到oss, 供本地访问
- 创建一个快捷指令, 用于在手机上快速查看用户的最新ins的po文
实现过程中遇到的问题:
- Instagram的post详情页面, 如果用户处于未登录状态, 则右侧文本区域只显示最新的评论, 而不是po主发文时输入的文字, 解决方案是模拟页面滚动, 将po主的文本滚动到可视区域之后, 再进行截图操作
- 阿里云的oss选择香港节点, 否则circle-ci在调用时会一直超时
其他
快捷指令
获取快捷指令 -> InsShot
使用方法, 点击设置之后, 见第一条注释.
仅供学习, 参考