监视网页变化
说到这个话题,可能第一反应就是RSS Feed。但是,我要看的网站不提供这个服务,而且,我希望的是监视特定的网页的变化,而不是整个网站的变化,而且希望在有变化时,能够“主动”地通知我,比如让扬声器发个声。
查了下,有免费的监视网站,但是,我要监视的是个论坛的网页,需要登陆。就说这些网站支持,我也不愿意把密码泄露给这些网站。
那么,自己写程序,定时刷新网页,检查网页元素来判断内容有没有改变,肯定work。但是,这个网站不允许短时间不停地刷新,因为增加服务器负担。我可不想我的账号因此被封。所以,这条路也走不通。
好在这个论坛有个功能,当有新帖或回复时,会在网页上出现一行字“有新回复的主题,点击查看”。这大概是基于Discuz建构的论坛的功能。
利用这个功能,查了下,这行字的id是forumnewshow。于是写了个油猴插件,定期检查有没有这个id的元素,有就说明有更新:
var s = document.getElementById('forumnewshow');
setInterval(() => {
if (s != null) {//has new post }
}, 60000);
接下来就是让扬声器发声以通知我,查了下,开始查到这样的代码:
var audio = new Audio('http://foo.com/bar.mp3'); audio.play();
但哪个网站有合适的音乐呢?找了一下没找到,不耐烦了。再说这个方法也不稳定。又查了下,查到这样的代码:
var context = new AudioContext(); var o = context.createOscillator(); var g = context.createGain(); o.connect(g); g.connect(context.destination); o.start(0);
试了下,可以发声。但怎么让它停下来?查了下,用这样的代码:
g.gain.exponentialRampToValueAtTime(0.00001, context.correntTime + 0.04);
但是,试了下,不work,查了下,原来是我的浏览器太旧了,另外,这个在Firefox和Safari上也有可能不work,需要在前面加上一句:
g.gain.setValueAtTime(1, context.currentTime);
调试通过。这样,当我关注的那个论坛的一个特定网页有新帖时,扬声器就会发声通知我了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律