引入
作为一个抗拒算法推荐的人,RSS 能很好地满足我主动挑选和获取信息的需求。去年发现这项技术之后,我就开始思考如何把我眼下的信息流全部用RSS 的方式聚合。我之前一直用 politepol 来制作RSS源, 非常的顺心:可以通过点击网页来选择自定义RSS源的信息,而且是免费的。但是昨天我在尝试用它来制作一个 bilibili 的RSS 源时,不论如何都加载不出来。不甘心之余我又尝试了 RSSHub 和你能用必应浏览器搜到的所有方法,均以失败告终。于是产生了一个念头:来手动完成吧。
这篇文章会教你怎么手工制作一个bilibili 的 RSS源。当然,前提是你得有一定的编程基础。
使用 python 爬下网页中的信息并转换成 .xml 文件
首先,在终端运行
git clone https://github.com/thedarkgoatlord/bilibili2rss.git
手动下载也行,在这。 如果你还不会用 github 但是在看这段话的时候决定趁机学一学, 可以去看 这篇文章,也可以试试让 kimi 教你,毕竟我就是用 chat gpt 学会的。如果你还不会用github 但是也不想学,那么我建议你去学一下,因为等会还会用到。
接着,如果你的电脑不是Mac + Apple silicon, 你需要去下载一个 chromedriver。把里面的 chromedriver 和几个名字里有 chromedriver 的文件换成你下载的那几个。确保你有chrome 浏览器。
接下来,打开你 IDE 的终端,输入
pip install -r requirements.txt
或者
pip install selenium
pip install bs4
pip install feedgen
pip install subprocess
如果嫌网太慢,可以换成
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install bs4 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install feedgen -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install subprocess -i https://pypi.tuna.tsinghua.edu.cn/simple
接下来,前往你想订阅的UP主的个人空间,打开“投稿”。此时,URL 应该是这个格式:
https://space.bilibili.com/(一串数字)/video
把这个URL 复制下来。打开 bilibili2rss 仓库里的 request.py,有一句代码
url = 'https://space.bilibili.com/478720594/video'
把这个URL 换成你的就行。接下来,试着跑一下 request.py,如果能输出“RSS feed 已生成“,打开feed.xml, 如果里面出现了视频标题和看上去像是链接的东西,那就是可以了。
提交 github, rss 阅读器访问 github 上的 .xml 文件
在 github上新建一个仓库,叫什么都行。在仓库页面,点击“code”,接着把链接复制下来。我自己用的是SSH,配置方法可以参考这篇文章。在项目文件夹里打开终端,运行
git remote set-url origin git@github.com:thedarkgoatlord/bilibili2rss.git
这里把 origin 后面的链接换成你的。
接着,再次运行 request.py,如果输出“RSS feed 已提交并推送到远程仓库”,那就是可以了。
接下来,前往你的github仓库,打开output文件夹,找到.xml 文件。此时,你所在的页面就是你应该喂给 RSS 阅读器的链接。以我的为例,是 bilibili2rss/output/478720594.xml at main · thedarkgoatlord/bilibili2rss · GitHub
如果你是 mac 或者 ipad 或者 iphone 用户,我想顺便推荐一个免费阅读器: RSS Mobile。众所周知,很多时候看一篇 RSS 获取的文章是需要跳转浏览器的。RSS Mobile 可以在应用内完成网页的加载,省去了浏览器的跳转,用起来比较顺心。
定时自动运行 python 程序并提交 github,以完成信息更新
这部分只对 mac 用户适用,Windows 用户可能得被迫体验一下研究的乐趣了。
打开你的 automator (中文好像叫自动化还是什么的), 来到下面这个界面。
选择这个日历图标,然后点继续。在搜索里检索“shell”, 会出来一条叫做 "run shell script",双击它。接着,把"cat" 替换成 “(你的python 解释器位置)+ (request.py 的绝对路径)”。比如说,我的是
什么,你说你不知道你的 python 解释器在哪里?如果你和我一样是 pycharm 用户,你可以打开设置-> 项目 -> python 解释器,就能看到了。界面应该是这样的:
然后Command+S,把这个东西保存下来。接着,把生成的事件在日历里设置成每天一次,大功告成。
2025,1,10 更新:实现了一次订阅多位up 主的功能,只需要把你想订阅的up主的UID写入 list_of_UIDs.txt即可。automator 的脚本也需要一些更改,需要在前面加上一句
cd (你的项目地址)
并且把后面的python 文件改为 multiple_requests.py. 以我为例,
尾声
也许有人会问,这么做的意义是什么?比起这么费心费力地实现一个微不足道的功能,为什么不直接去bilibili上看呢?是啊,大部分人都不会对“信息获取的途径”思考太多。问出这个问题的人们会去bilibili上收取更新,然后呢?在他们点进bilibili的主页之后,他们的视线会首先被首页那些有趣的视频吸引。哦,这太有趣了,他们想,这么有趣的视频,我不看简直是亏了。接着,他们点了进去——接着,还会有下一个有趣的视频。旁边还有呢:猜你喜欢的,为你推荐的,都是你感兴趣的,不是吗?看吧,看吧。看着看着,一天就过去了。看着看着,一生就过去了。
我不想这样。
对有些人来说,对信息获取保持主动是非常重要的。
希望这篇文章能帮到你。