Shell定时脚本转发RSS

DuckXu 日志

最近换上了Follow,但是Xing同学的博客不能通过境外IP访问,导致Follow订阅不了。综上所述,我选择做一个转发。


实际上非常简单。

  1. 写脚本

得益于GPT4.0的帮助和一点点点点Linux基础,我们可以得到以下代码。我将其存放在目录下的update_rss.sh文件里。经测试,可以抓取rss.xml和/feed。
记得替换文件目录成你自己的!

#!/bin/bash

# RSS源
RSS_URL="目标RSS地址"
# 本地文件路径
LOCAL_PATH="/文件目录/rss.xml"

# 替换文件目录成你自己的!
# 使用curl下载文件,添加重试和错误输出日志
curl -L --retry 3 -o "$LOCAL_PATH" "$RSS_URL" 2>> /文件目录/rss_update.log

# 检查下载是否成功
if [ $? -eq 0 ]; then
    echo "$(date): RSS feed updated successfully." >> /文件目录/rss_update.log
else
    echo "$(date): Failed to update RSS feed." >> /文件目录/rss_update.log
fi

每当这个脚本被执行,服务器就会向RSS源Curl得到RSS数据,并写入到本地目录的rss.xml里,只需要请求服务器转发后的rss.xml即可。每次请求RSS数据的大小,时间,是否成功等信息都会被存到log文件里。
Log

  1. 定时脚本

在目标目录下执行这个:

crontab -e

可能会让你选择目标编辑器,这里我输入1并Enter,选择了Nano。

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]: 

接下来填入以下内容:(下面的是实例)

0 0,1,11,12,18 * * * /文件目录/update_rss.sh
第一个 0 表示每个小时的第0分钟。
0,1,11,12,18 表示在每天的 0点、1点、11点、12点和18点运行。可以自己更改。
3个“*”号分别表示每一天、每个月、每周的任意天。
  1. 其他事项

记得让目标RSS源放行你的服务器IP,以及,最好申请授权并征得博主同意。

现在在Follow里可以搜到“往日信笺”了,转发出去的订阅地址在https://media.duckxu.com/xingmail_cn.xml

已有 6 条评论

  1. Chlorine
    Chlorine macOS

    "Any problem in computer science can be solved by another layer of indirection."

    回复
    1. DuckXu
      DuckXu Win 10/11 Author

      小氯每次的回复都很富有哲学和文采;总是想不到这么好的句子。

      回复
      1. Chlorine
        Chlorine macOS

        不敢不敢,这句话应该是来自 David Wheeler,我只是引用了一下。

        回复
  2. Xing
    Xing Win 10/11

    其实我用 RSS 订阅都是自己手动刷新的,一般都是我写完日记看看有没有博友更新了。因为大部分博友更新没有这么频繁,所以我也一直没上自动订阅。
    (也是没有时间吧,空的时间都拿去睡觉了,我本来想弄 moonlight 串流的,但是到现在都没有开始弄。Windows 的远程桌面在移动端又不是不能用,虽然说搭配键盘的体验不怎么样吧,但是至少能用。)

    回复
    1. DuckXu
      DuckXu Win 10/11 Author

      我会看的博客还蛮多的,再加上Follow确实好用,才上的这个,实在是不太方便一个一个去查看。

      回复
      1. 喵二
        喵二 Win 10/11

        这个方法很妙,也算是曲线救国了 ∠( ᐛ 」∠)_

        回复

添加新评论