jwenjian/ghiblog

insshot: 自动截屏保存ins用户的最新post

jwenjian opened this issue · 0 comments

insshot

这个项目的触发点是 -> 林志玲宣布婚讯, 微博上有人贴出了林志玲ins的po文, 但是由于众所周知的原因, 没办法上ins上看看原po.

经过了大概3天的头脑风暴+coding, 才有了现在的这个项目.

What

insshot的功能:

  1. 从github读取label列表, 我把label当成了数据库了, 这样每次想增加一个ins用户不需要手动提交了
  2. 借助puppeteer, 对每个用户的ins主页进行解析, 获取到最新的post链接
  3. 打开最新的post页面, 选取图片和文字区域, 截图到本地
  4. 调用阿里云oss的api, 将截图保存到阿里云oss中, 以便之后在手机上访问

总体思路是, 借助circle-ci的运行环境(主要是网络环境), 访问instagram, 截图保存成文件, 将文件保存至本地网络可以访问的阿里云oss上, 绕了(GFW)一圈.

How

主要的几个关键点:

  1. 在github上创建了一个token, 用token访问github的api
  2. 借助puppeteer, 解析instagram的网页, 找到需要截图的区域, 截图保存至本地
  3. 创建阿里云oss的bucket, 调用阿里云oss的api, 将截图文件发送到oss, 供本地访问
  4. 创建一个快捷指令, 用于在手机上快速查看用户的最新ins的po文

实现过程中遇到的问题:

  1. Instagram的post详情页面, 如果用户处于未登录状态, 则右侧文本区域只显示最新的评论, 而不是po主发文时输入的文字, 解决方案是模拟页面滚动, 将po主的文本滚动到可视区域之后, 再进行截图操作
  2. 阿里云的oss选择香港节点, 否则circle-ci在调用时会一直超时

其他

快捷指令

获取快捷指令 -> InsShot

使用方法, 点击设置之后, 见第一条注释.

使用截图:
image

image

供学习, 参考