“我查看dev.to统计数据的频率,比我在面试中愿意承认的次数还要高得多。”Maneshwar在介绍自己的小项目时,一开口就暴露了创作者共同的强迫症——总惦记着那些点赞、阅读量、评论数,看着往上蹦的数字暗爽,对着死活不动的数据干着急。

过去这套课间操式的仪式,得打开浏览器,钻进后台面板,一篇一篇地扒拉文章,活像个对着茶叶梗算命的。他想要一个更心平气和的方案:开着终端窗口,就能把点赞排名、阅读排名、评论排名一屏拉通,安安静静刷新,自己假装在干活。

打开网易新闻 查看精彩图片

于是,一个下午,他动手了。整个方案可以画成一张“管道工”示意图:远端API吐出数据,中间一个Go程序把数据切成表格行,最后交给一个现成的终端仪表盘工具画出来。三样东西,各干各的,居然就这么跑通了。

第一环是dev.to自家的接口。GET /api/articles/me,往请求头里塞一个 api-key,你发布过的所有文章就带着已经帮你算好的 positive_reactions_count、page_views_count、comments_count 打包返回。不用爬页面、不用解析HTML,钥匙就在开发者设置页面里生成。

第二环是画表格的工具。Maneshwar不想从头搭TUI,跟网格、颜色、边框、按键响应死磕。他找到了一款叫 devdash 的终端仪表盘,作者是Phantas0s,用Go写的,整个布局靠一个YAML文件驱动,行、列、尺寸、颜色全声明式搞定。问题是——这玩意儿2023年就归档了,而且压根不认识dev.to是个啥。

这里本该走正道:fork仓库,加一套Forem平台服务,接好结构体,写测试,然后给一个已经关门歇业的项目提PR。但他找到了一扇“懒人专用”的侧门,而且没上锁。

devdash里有个叫 lh.table 的小组块,能执行一条shell命令,把命令输出的每一行按空格拆成列,直接渲染成带边框的表格。因此,devdash完全不需要理解dev.to,它只需要一个能吐出表格行的命令。Maneshwar要做的,就是当那个命令。

他用Go写了个小程序,调API,把每篇文章的三个关键数值拼成一行文本,再交给 devdash 的配置文件接管。终端一打开,文章按点赞、阅读、评论自动排名,安静地铺满屏幕。两个没在计划内的bug也准时报到,一个让他重温了字符串拆分的惨痛记忆,一个让他跟终端输出缓冲斗了一下午,但最终都被驯服成了功能的一部分。

这个下午的收获,不是一个商业级仪表盘,而是一种能把强迫症转化为小型成就感的配方。Maneshwar说,如果Phantas0s能看到这一幕,“感谢你造了一个灵活到能被这样歪用的工具。”而这条歪用的管道,恰恰是开源生态里最妙的那类微型暗线——有人停下来维护,有人拐个弯接着跑。