多功能的RSS工具RSS Funnel

在这里插入图片描述

什么是 RSS Funnel ?

RSS Funnel 是一个模块化的 RSS 处理管道系统。它可以以多种方式操作 RSS/Atom 源。

例如:

  • 提取完整内容
  • HTML 页面生成 RSS 订阅
  • 删除不需要的元素和文本
  • 使用正则表达式进行文字编辑或替换
  • 保留或删除与关键词或模式匹配的文章
  • 突出显示关键词
  • 将单个 RSS 文章拆分为多个文章
  • 将多个订阅合并为单个订阅
  • 运行 JavaScript 代码来转换订阅或文章
  • 在不同的订阅格式之间进行转换
  • 又有更多用法:https://github.com/shouya/rss-funnel/wiki/Filter-config

准备

RSS Funnel 是通过一个名为 funnel.yaml 的配置文件,来定义源和服务器设置的,原本老苏博客上的 RSS 源只提供了摘要而不是全文

在这里插入图片描述

下面是老苏准备的一个示例文件,可以提取到全文

endpoints:- path: /laosu-blog.xmlnote: 老苏的博客source: https://laosu.tech/atom.xmlfilters:- full_text: {}- simplify_html: {}
  • path:是访问地址,例如上面的写法,可以通过 http://群晖IP:端口/laosu-blog.xml 访问;
  • note:是简介,因为是中文,所以 funnel.yaml 保存时编码使用 UTF-8
  • source:是源地址;
  • filters:过滤器;
    • full_text:此过滤器从文章中获取文章的完整 HTMLlink并将其填充到content文章的字段中;
    • simplify_html:此过滤器利用readability 库简化了 HTML

更多filters 参数设置请参考官方文档:https://github.com/shouya/rss-funnel/wiki/Filter-config

安装

ghcr.io 镜像下载

官方的镜像没有发布在 docker hub,而是在 ghcr.io,所以直接用命令行来安装。

在这里插入图片描述

SSH 客户端中依次执行下面的命令

# 下载镜像
docker pull ghcr.io/shouya/rss-funnel:latest

如果没有科学上网,很可能会拉不动,可以试试 docker 代理网站:https://dockerproxy.com/,但是会多几个步骤

# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/shouya/rss-funnel:latest# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/shouya/rss-funnel:latest ghcr.io/shouya/rss-funnel:latest# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/shouya/rss-funnel:latest

当然代理网站也不是什么时候都好使,有时候也会报错,例如下面👇这样的

Error response from daemon: received unexpected HTTP status: 500 Internal Server Error

所以有一个稳定的科学上网环境还是很重要的

docker cli 安装

现在可以开始运行了

# 新建文件夹 rss-funnel 和 子目录
mkdir -p /volume1/docker/rss-funnel# 进入 rss-funnel 目录
cd /volume1/docker/rss-funnel# 将 funnel.yaml 放入当前目录# 运行容器
docker run -d \--restart unless-stopped \--name rss-funn \-p 4090:4090 \-v $(pwd)//funnel.yaml:/funnel.yaml \-e RSS_FUNNEL_CONFIG=/funnel.yaml \-e RSS_FUNNEL_BIND=0.0.0.0:4090 \-e RSS_FUNNEL_WATCH=true \ghcr.io/shouya/rss-funnel:latest

目前项目支持的环境变量如下:

可变默认值描述
RSS_FUNNEL_BIND127.0.0.1:4080服务器绑定地址
RSS_FUNNEL_INSPECTOR_UItrue是否提供检查器 UI
RSS_FUNNEL_WATCHfalse是否监视配置文件更改并自动重新加载
RSS_FUNNEL_CONFIG未指定配置文件的位置。

docker compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'services:rss-funne:image: ghcr.io/shouya/rss-funnel:latestcontainer_name: rss-funnerestart: unless-stoppedports:- 4090:4090volumes:- ./funnel.yaml:/funnel.yamlenvironment:- RSS_FUNNEL_CONFIG=/funnel.yaml- RSS_FUNNEL_BIND=0.0.0.0:4090- RSS_FUNNEL_WATCH=true

然后执行下面的命令

# 新建文件夹 rss-funnel 和 子目录
mkdir -p /volume1/docker/rss-funnel# 进入 rss-funnel 目录
cd /volume1/docker/rss-funnel# 将 funnel.yaml 和 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:4090 就能看到主界面

在这里插入图片描述

点击链接可以看到每篇文章都是显示的全文

在这里插入图片描述

切换到 Raw 模式

在这里插入图片描述

访问 http://群晖IP:4090/laosu-blog.xml

在这里插入图片描述

虽然中文都显示为乱码

在这里插入图片描述

但不影响在 FreshRSS 中订阅

在这里插入图片描述

参考文档

shouya/rss-funnel: An RSS multi-tool
地址:https://github.com/shouya/rss-funnel

RSS Funnel Inspector
地址:https://rss-funnel-demo.fly.dev

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/772630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务篇:设计一个注册中心和配置中心需要从哪些方面入手

注册中心 设计一个注册中心时,需要关注多个关键方面,以确保其稳定性、可靠性、性能和可扩展性。以下是一些重要的考虑因素: 服务发现机制:注册中心的核心功能是允许服务相互发现。这意味着当一个服务实例启动时,它需…

2024年【熔化焊接与热切割】考试报名及熔化焊接与热切割找解析

题库来源:安全生产模拟考试一点通公众号小程序 熔化焊接与热切割考试报名考前必练!安全生产模拟考试一点通每个月更新熔化焊接与热切割找解析题目及答案!多做几遍,其实通过熔化焊接与热切割实操考试视频很简单。 1、【单选题】 下…

SE注意力模块学习笔记《Squeeze-and-Excitation Networks》

Squeeze-and-Excitation Networks 摘要引言什么是全局平均池化? 相关工作Deep architectures Squeeze-and-Excitation Blocks3.1. Squeeze: Global Information Embedding3.2. Excitation: Adaptive Recalibration3.3. Exemplars: SE-Inception and SE-ResNet 5. Im…

docker部署nacos(单机与集群)

拉去nacos镜像 [rootlocalhost keepalived]# docker search nacos NAME DESCRIPTION STARS OFFICIAL nacos/nacos-server This project contains a Docker image meant t… 464 …

2024.3.26学习笔记

今日学习韩顺平java0200_韩顺平Java_对象机制练习_哔哩哔哩_bilibili 今日学习p273-p285 包 包的本质实际上就是创建不同的文件夹/目录来保存类文件 包的三大作用 区分相同名字的类 当类很多时,可以很好的管理类 控制访问范围 包的基本语法 package com.xx…

物理研究思想(1)——朗道力学第一版序

朗道是苏联的全才式科学家,大科学家的这篇序言值得我们搞研究的人仔细研读,如果能够参透,必将受益终生! 众所周知,物理学是由实验物理和理论物理两个学科组成的.我们已知的大量物理定律可以由为数不多的最一般规律推演…

出席2024亚太内容分发大会,火山引擎边缘云“加速”游戏体验升级

3月26日,第十四届亚太内容分发大会暨CDN峰会在北京成功举办,火山引擎边缘云产品架构高级总监许思安出席并以《火山引擎边缘云游戏行业解决方案,“加速”游戏体验升级》为主题,分享了火山引擎边缘云在游戏行业的思考和实践。同时&a…

面试经典150题【91-100】

文章目录 面试经典150题【91-100】70.爬楼梯198.打家劫舍139.单词拆分322.零钱兑换300.递增最长子序列77.组合46.全排列39.组合总和(※)22.括号生成79.单词搜索 面试经典150题【91-100】 五道一维dp题五道回溯题。 70.爬楼梯 从递归到动态规划 public …

前端理论总结(js)——filter、foearch、for in 、for of 、for的区别以及返回值

Filter: 用途:用于筛选数组中符合条件的元素,返回一个新数组。 返回值:返回一个新数组,包含经过筛选的元素。 Foreach: 用途:遍历数组中的每个元素,执行回调函数。 返回值&#x…

idea中Git项目遇到“Filename too long”错误 与 配置Git的ssh证书

一:“Filename too long”问题解决办法 错误信息: fatal: cannot create directory at xxxx: Filename too long warning: Clone succeeded, but checkout failed. You can inspect what was checked out with git status and retry with git restore …

24/03/26总结

面向对象练习题:(封装,继承,多态) 封装:对象代表什么,就得封装对应的数据,并提供数据对应的行为,(把零散的数据和行为封装成一个整体:也就是我们说的对象) 继承:当封装…

latex中的算法algorithm报错Undefined control sequence.

这里写目录标题 1. 错误原因2. 进行改正3. 爱思唯尔期刊与施普林格期刊对于算法的格式不太一样,不能直接套用总结 1. 错误原因 我在算法中使用\State 2. 进行改正 换成\STATE 3. 爱思唯尔期刊与施普林格期刊对于算法的格式不太一样,不能直接套用 总…

多线程执行一半后不往后走的坑

场景简单演示 首先演示一个简单的场景。 采用ThreadPoolExecutor提交线程的方式,直接在多线程中执行的某个地方抛出一个异常。 用submit方法提交的情况: 调用的地方: 发现一直卡在那,没有任何错误日志。 改成execute方法提交多…

优秀电源工程师需要的必备技能

随着电源市场的不断扩张,开关电源行业飞速发展,企业对电源工程师的需求日益增加,对电源工程师的技能要求也日渐提高,相信没有一位电源工程师会错过让自己变得更优秀的机会。作为一名数字电源从业者,今天就带大家细数一下优秀电源工程师具备的那些技能。 一、新手必备课程…

#GIT|Git Flow#Gitflow工作流程

Gitflow是一种使用功能分支和多个主分支的Git分支模型,它适用于有预定发布周期的项目,也适用于DevOps最佳实践中的持续交付。这个工作流程不会添加任何新的概念或命令,而是为不同的分支分配了非常具体的角色,并定义了它们应该如何…

大历史下的 pacing:why how

卸载一切到网卡,解放 cpu,兜售自己的设想:功能越来越多,吞吐越来越大的网卡。万物皆关联,吞吐越大的网卡反而更闯祸。范雅各布森的大历史视野不是每个工程师都具备的,更何况经理们。 事实是,网…

串口通信标准RS232 RS485 RS422的区别

RS-232、RS-422、RS-485是关于串口通讯的一个机械和电气接口标准(顶多是网络协议中的物理层),不是通讯协议,它们之间的几个不同点如下: 一、硬件管脚接口定义不同 二、工作方式不同 RS232: 3线全双工 RS…

vue3使用clipboard.js

一、安装 npm install --save vue-clipboard3二、引入 import useClipboard from vue-clipboard3;const { toClipboard } useClipboard();三、使用 const copy async (val) > {try {await toClipboard(val);//成功要做的事 console.log(复制成功!)} catch (e) {console.l…

干货分享之反射笔记

入门级笔记-反射 一、利用反射破泛型集合二、Student类三、获取构造器的演示和使用1.getConstructors只能获取当前运行时类的被public修饰的构造器2.getDeclaredConstructors:获取运行时类的全部修饰符的构造器3.获取指定的构造器3.1得到空构造器3.2得到两个参数的有参构造器&a…

Vue2(十一):全局事件总线、消息订阅与发布pubsub、TodoList的编辑功能、$nextTick、过渡与动画

一、全局事件总线 1、思路解析 一种组件间通信的方式,适用于任意组件间通信。通俗理解就是一个定义在所有组件之外的公共x,这个x可以有vm或vc上的同款$on、$off、$emit,也可以让所有组件都访问到。 第一个问题:那怎样添加这个x才…