如何获得本地新坡的推送 #Ingress
频道道长“获得本地新坡上线通知”这个需求由来已久,折腾了好几种实现方式。虽然最后还是靠在云上跑几行代码安逸了下来,但中间有段时间是用 #NoCode 实现的,思路值得分享。特别说明我们不是要撸Intel的数据,因为会违反ToS。得益于真正神秘的工程师频道 @newportal ,咱们可以撸它,给Ta的推送信息按地名过个滤就完事了。下面就来说说我都用过哪些方式来实现这个过滤。想直接看最终方法的可以跳过方法一、二,直接看方法三。
↘方法一:用 Telegram 的频道订阅 Bot @junction_bot
@junction_bot 的核心功能是:不成为频道订阅者,却能获取频道推送。
这 bot 还支持给内容过滤,我一开始就是利用的这个功能:
因此,订阅了 @newportal 后,来一条命令即可:
/filter @newportal mustHave 日本
‼方法一的优缺点:只要 @junction_bot 给力就没问题,问题有时候 Ta 不给力。😂
↘方法二:利用 TelegramChannel 转 RSS 工具给 @newportal 生成个 RSS feed,然后再过滤。
@newportal 这个真正工程师频道也是厉害,每秒中能发布全球十几个新坡上线消息,只好动用抓取速度最快的 TelegramChannel 转 RSS 工具为其生成 RSS Feed 。这里不表“什么是 RSS ?”了,不了解的请自行放G家去搜。我已知的抓取频率最高的服务是这家 https://tg.i-c-a.su/ :
还可以选择一次抓 100 条内容,即
https://tg.i-c-a.su/rss/newportal?limit=100
然后,用了另一家专门自定义 RSS feed 内容过滤的服务来过滤上面这个 feed:https://siftrss.com/
最后,找来 Telegram 上最快的 RSS 订阅 bot : @el_monitorro_bot ,来订阅通过 siftrss 生成的 feed。这个 bot 可以每分钟查阅一次 feed 有没有新条目。
‼方法二的优缺点:还算堪用,推送挺及时的。我做了个测试发现了问题:我用这个最快的 RSS 订阅 bot ,直接订阅 https://tg.i-c-a.su/rss/newportal?limit=100 。一段时间后,@el_monitorro_bot 推送的条目数,大概是 @newportal 发布数的四分之三左右。也就是说,还是会有缺失,何况中间还要受 siftrss 的抓取频率的影响。
↘方法三:和方法二同套路,区别在于只给过滤后的结果生成 RSS feed。
@newportal 的超快更新频率是个坎儿,必须坚决绕开。所以先过个滤吧,把更新频率降下来。哪里可以过滤呢?https://t.me/s/newportal 这个频道页上的搜索框可以:
填入“朝阳区”搜索后,页面链接从 https://t.me/s/newportal 变为
https://t.me/s/newportal?q=%E6%9C%9D%E9%98%B3%E5%8C%BA
看到这个页面有独立url,不禁大喜。掏出 Everything is RSSible 的 RSSHub 就打算生成 RSS feed 了,可惜发现其只能为频道生成 RSS feed,搜索页还不支持。
难道 #NoCode 要失败了? 必须 coding 个新 RSSHub 路由了么? 并不。你还可以去给 RSSHub 提个 issue 让其它大佬去 coding (这句该有删除线,可惜Telegraph并不支持🤣)。不抱希望地拿 RSSHub 的前辈 RSS-Bridge 试了下,竟然发现是支持给搜索结果生成 RSS Feed 的!赞爆!
我是用的项目 Wiki 里的一个 Public Host:托管在隐私保护工具集成站 Snopyta 上的 https://rss-bridge.snopyta.org/。填的 Username 如下:
@newportal?q=朝阳区
然后点击 Atom 或 Mrss 都行,剩下的就是用 TG RSS bot 或其它 RSS 阅读器订阅生成的 RSS Feed 了。大功告成,完美 #NoCode 。
后续:
为什么开头还是说跑了几行代码才安逸呢?因为我贪心啊。
首先,光有新坡还不够,我还如法炮制了基于 @oprBrainstorming 的准坡推送和基于 @Premovedingress 的删坡推送。可惜的是, @oprBrainstorming 里1分送走情况普遍、多人打分会重复推送,因此被迫写了个脚本正则一下、做个筛选并实现同个申请坡仅推送一次。这是因为我的需求并不是看打分,而是想知道什么东西被其它特工申过并已在评。
其次,我想定制推送文本,去掉一些无关紧要的内容,添加一些 tag 。这就只能用 coding 来实现了。
Update(20200708): RSSHub 也已支持为 Telegram 公开频道的关键词搜索页生成 RSS Feed 。大家又多了个选择。