Chrome扩展程序: Gloria 可编程的网站通知聚合器

Gloria是我开发的又一个Chrome扩展程序, 扩展的名字取自我黑魂3一级通关的人物ID, 整体的技术难度虽然不比之前的Correction Fluid, 开发过程却让我身心俱疲.

随着互联网的发展, 每个人在生活中会用到的网站也随之增多, 我个人在LastPass里记录的站点数量就超过100个, 当你同时使用很多网站提供的服务时, 如何高效率的获取来自站点的提醒/通知便成为了一个问题.

一些网站提供移动设备APP, 让用户可以通过移动设备接收到推送而来的通知, 这种由内容提供者自己决定推送内容的行为, 其通知内容未必能够符合用户需求, 会让用户陷入被动. 另外, 国内的网络环境差, Android无法使用GCM这种官方推送服务, 导致市场上的推送服务凌乱繁杂, 各种应用共用一套服务互相唤醒, 令人望而生畏, iOS则常常有通知延迟的问题, 使用起来也会感到不安. 我认为基于APP的通知信噪比低, 且可靠性差, 实在是难以托付, 更不要说很多网站并没有提供APP了.

Windows 10的UWP应用也可以提供通知的推送功能, 但真正有用的UWP应用数量直到今天也是少的可怜. 而且在经历过Windows 10 Insider版本的洗礼后, 我已经严重怀疑微软底层员工的开发能力和微软对于Windows 10的态度, 相关的事我会另开一篇文章细说.

综上所述, 我们需要一款能够高效率主动获取网站信息, 并且能够自由的决定通知内容的程序——这便是我开发Gloria的初衷, 在Gloria之前, 并没有这样的程序, 值得庆幸的是, 现在有了.

Gloria是一款能够让用户自己编写脚本, 按一定时间间隔主动获取网站更新, 并以Chrome的Notification的形式将新内容通知给用户的扩展程序, 我称之为——可编程的网站通知聚合器.

对于有编程经验的用户, 他们可以像这样自行编写脚本:

fetch('http://api.bilibili.com/x/feed/pull?ps=10&type=0&pn=1')  
.then(res => res.json())
.then(json => {
  let notifications = json.data.feeds.map(feed => {
    return {
      title: feed.addition.title
    , message: feed.addition.description
    , iconUrl: feed.source.avatar
    , imageUrl: feed.addition.pic
    , url: feed.addition.link
    }
  })
  commit(notifications)
})

这是一段可以给Gloria作为Task执行的脚本代码, 其作用是将您在BiliBili关注的UP主上传的新视频通知给用户, 在通知方面的效果和哔哩哔哩助手是一样的. 脚本推送什么信息, 最终由commit函数决定, 这个函数会将脚本收集到的notifications提交到后台进行去重, 并弹出新信息的通知. 细心的朋友可能发现了, 这段脚本连Cookie都没有, 却能获取到登录用户的信息, 这是因为Gloria的脚本的fetch函数会自动从Chrome读取相关的Cookie一并发送, 给Gloria编写脚本的人只需要关注于该如何获取结构化的信息这一点即可, 有关Gloria脚本编写的相关文档将会在近日放出.

对于普通用户而言, 稍后我会上线一个网站, 供其他用户提交自己的脚本, 普通用户不需要自己编码, 只要点击安装按钮, 就可以将他人的脚本安装到自己机器的Gloria里. 其实吧, 直接复制粘贴脚本就已经足够方便了, 更需要担心的是使用他人脚本的安全问题, 我计划在1.0.0之后加上一些安全方面的限制, 比如让脚本声明自己要访问的网站, 避免让Gloria成为Self-XSS的温床.

安装

前往本扩展的Chrome Web Store页面直接安装.

相关站点

官方网站: https://gloria.pub

使用指南: http://docs.gloria.pub

Github: https://github.com/BlackGlory/Gloria