RSS-Bridge 是一个 PHP Web 应用程序。
它为没有网络提要的网站生成网络提要。
官方托管实例:https://rss-bridge.org/bridge01/
IRC 频道 #rssbridge https://libera.chat/
完整文档
或者找到另一个公共实例。
最低要求 PHP 7.4。
CssSelectorBridge
:使用 CSS 选择器抓取 feedFeedMergeBridge
:将多个 feed 合并为一个FeedReducerBridge
:将嘈杂的 feed 减少一定百分比FilterBridge
:通过按关键字排除/包含项目来过滤 feedGettrBridge
:从 GETTR 用户获取最新帖子MastodonBridge
:从 Mastodon (ActivityPub) 实例获取状态RedditBridge
:从用户/子编辑中获取帖子(带有过滤选项)RumbleBridge
:获取频道/用户视频SoundcloudBridge
:通过用户名获取音乐TelegramBridge
:从公共频道获取帖子ThePirateBayBridge:
通过搜索/用户/类别获取种子TikTokBridge
:通过用户名获取帖子TwitchBridge
:从频道获取视频VkBridge
:从用户/组获取帖子XPathBridge
:使用 XPath 表达式抓取提要YoutubeBridge
:按用户名/频道/播放列表/搜索获取视频YouTubeCommunityTabBridge
:从频道的社区选项卡中获取帖子RSS-Bridge 基本上可以解压缩到 Web 文件夹中。应该可以立即工作。
最新压缩包:https://github.com/RSS-Bridge/rss-bridge/archive/refs/heads/master.zip (2MB)
这些说明已在 Digital Ocean 的全新 Debian 12 VM(1vcpu-512mb-10gb,5 美元/月)上进行了测试。
timedatectl set-timezone Europe/Oslo
apt install git nginx php8.2-fpm php-mbstring php-simplexml php-curl php-intl
# Create a user account
useradd --shell /bin/bash --create-home rss-bridge
cd /var/www
# Create folder and change ownership
mkdir rss-bridge && chown rss-bridge:rss-bridge rss-bridge/
# Become user
su rss-bridge
# Fetch latest master
git clone https://github.com/RSS-Bridge/rss-bridge.git rss-bridge/
cd rss-bridge
# Copy over the default config
cp -v config.default.ini.php config.ini.php
# Give full permissions only to owner (rss-bridge)
chmod 700 -R ./
# Give read and execute to others (nginx and php-fpm)
chmod o+rx ./ ./static
# Give read to others (nginx)
chmod o+r -R ./static
Nginx 配置:
# /etc/nginx/sites-enabled/rss-bridge.conf
server {
listen 80 ;
# TODO: change to your own server name
server_name example.com;
access_log /var/log/nginx/rss-bridge.access.log;
error_log /var/log/nginx/rss-bridge.error.log;
log_not_found off ;
# Intentionally not setting a root folder here
# autoindex is off by default but feels good to explicitly turn off
autoindex off ;
# Static content only served here
location /static/ {
alias /var/www/rss-bridge/static/;
}
# Pass off to php-fpm when location is exactly /
location = / {
root /var/www/rss-bridge/;
include snippets/fastcgi-php.conf;
fastcgi_read_timeout 45s ;
fastcgi_pass unix:/run/php/rss-bridge.sock;
}
# Reduce spam
location = /favicon.ico {
access_log off ;
}
# Reduce spam
location = /robots.txt {
access_log off ;
}
}
PHP FPM 池配置:
; /etc/php/8.2/fpm/pool.d/rss-bridge.conf
[rss-bridge]
user = rss-bridge
group = rss-bridge
listen = /run/php/rss-bridge.sock
listen.owner = www-data
listen.group = www-data
# Create 10 workers standing by to serve requests
pm = static
pm.max_children = 10
# Respawn worker after 500 requests (workaround for memory leaks etc.)
pm.max_requests = 500
PHP ini 配置:
; /etc/php/8.2/fpm/conf.d/30-rss-bridge.ini
max_execution_time = 15
memory_limit = 64M
重新启动 fpm 和 nginx:
# Lint and restart php-fpm
php-fpm8.2 -t && systemctl restart php8.2-fpm
# Lint and restart nginx
nginx -t && systemctl restart nginx
安装最新版本。
cd /var/www
composer create-project -v --no-dev --no-scripts rss-bridge/rss-bridge
待办事项。参见#3785
通过从 Docker Hub 下载 docker 镜像进行安装:
# Create container
docker create --name=rss-bridge --publish 3000:80 --volume $( pwd ) /config:/config rssbridge/rss-bridge
您可以将自定义config.ini.php
和桥放入./config
。
您必须重新启动容器才能使自定义更改生效。
有关详细信息,请参阅docker-entrypoint.sh
。
# Start container
docker start rss-bridge
浏览http://localhost:3000/
# Build image from Dockerfile
docker build -t rss-bridge .
# Create container
docker create --name rss-bridge --publish 3000:80 --volume $( pwd ) /config:/config rss-bridge
您可以将自定义config.ini.php
和桥放入./config
。
您必须重新启动容器才能使自定义更改生效。
有关详细信息,请参阅docker-entrypoint.sh
。
# Start container
docker start rss-bridge
浏览http://localhost:3000/
您可以将自定义config.ini.php
和桥放入./config
。
您必须重新启动容器才能使自定义更改生效。
有关详细信息,请参阅docker-entrypoint.sh
。
docker-compose up
浏览http://localhost:3000/
Heroku 快速部署目前不起作用。如果您分叉此存储库并修改scalingo.json
中的repository
,它可能会起作用。参见#2688
在安装中了解更多信息。
输出来自 php-fpm。它无法读取index.php。
chown rss-bridge:rss-bridge /var/www/rss-bridge/index.php
修改config.ini.php
:
[authentication]
token = "hunter2"
作为当前用户:
bin/cache-clear
作为用户 rss-bridge:
sudo -u rss-bridge bin/cache-clear
作为根用户:
sudo bin/cache-clear
bin/cache-prune
# Give rss-bridge ownership
chown rss-bridge:rss-bridge -R /var/www/rss-bridge/cache
# Or, give www-data ownership
chown www-data:www-data -R /var/www/rss-bridge/cache
# Or, give everyone write permission
chmod 777 -R /var/www/rss-bridge/cache
# Or last ditch effort (CAREFUL)
rm -rf /var/www/rss-bridge/cache/ && mkdir /var/www/rss-bridge/cache/
sqlite 文件(db、wal 和 shm)不可写。
chown -v rss-bridge:rss-bridge cache/*
rm cache/*
在例如bridges/BearBlogBridge.php
中创建新桥:
<?php
class BearBlogBridge extends BridgeAbstract
{
const NAME = ' BearBlog (bearblog.dev) ' ;
public function collectData ()
{
$ dom = getSimpleHTMLDOM ( ' https://herman.bearblog.dev/blog/ ' );
foreach ( $ dom -> find ( ' .blog-posts li ' ) as $ li ) {
$ a = $ li -> find ( ' a ' , 0 );
$ this -> items [] = [
' title ' => $ a -> plaintext ,
' uri ' => ' https://herman.bearblog.dev ' . $ a -> href ,
];
}
}
}
在桥接 API 中了解更多信息。
enabled_bridges[] = *
enabled_bridges[] = TwitchBridge
enabled_bridges[] = GettrBridge
调试模式禁用大多数缓存操作。
enable_debug_mode = true
[cache]
; Cache backend: file (default), sqlite, memcached, null
type = "memcached"
type = "sqlite"
当桥发生故障时,RSS-Bridge 将生成一个提要,其中包含描述错误的单个项目。
这样,提要读者就会收到它并通知您。
如果您不希望出现此行为,请将错误输出切换为http
:
[error]
; Defines how error messages are returned by RSS-Bridge
;
; "feed" = As part of the feed (default)
; "http" = As HTTP error message
; "none" = No errors are reported
output = "http"
修改report_limit
,使得错误必须出现3次才报告。
; Defines how often an error must occur before it is reported to the user
report_limit = 3
每天报告计数重置为 0。
[authentication]
enable = true
username = "alice"
password = "cat"
通常需要使用凭据配置提要阅读器。
也可以手动将凭据包含在 URL 中:
https://alice:[email protected]/bridge01/?action=display&bridge=FabriceBellardBridge&format=Html
有关示例,请参阅formats/PlaintextFormat.php
。
这些命令要求您已在composer.json
中安装了开发依赖项。
运行所有测试:
./vendor/bin/phpunit
运行单个测试类:
./vendor/bin/phpunit --filter UrlTest
运行短绒检查:
./vendor/bin/phpcs --standard=phpcs.xml --warning-severity=0 --extensions=php -p ./
https://github.com/squizlabs/PHP_CodeSniffer/wiki
php -S 127.0.0.1:9001
http://127.0.0.1:9001/
我们是 RSS-Bridge 社区,一群开发人员继续由 sebsauvage 发起的项目,sebsauvage.net 的网站管理员、Shaarli 和 ZeroBin 的作者。
请参阅 CONTRIBUTORS.md
RSS-Bridge 使用缓存来防止服务禁止您的服务器重复更新源。桥之间的具体缓存持续时间可能不同。缓存的文件将在 24 小时后自动删除。
RSS-Bridge 允许您完全控制向用户显示哪些桥。这样您就可以使用您最喜欢的桥集来托管您自己的 RSS-Bridge 服务!
当前维护者(截至 2024 年):@dvikan 和 @Mynacol #2519
这是桥梁预计会产生的饲料项目结构。
$ item = [
' uri ' => ' https://example.com/blog/hello ' ,
' title ' => ' Hello world ' ,
// Publication date in unix timestamp
' timestamp ' => 1668706254 ,
' author ' => ' Alice ' ,
' content ' => ' Here be item content ' ,
' enclosures ' => [
' https://example.com/foo.png ' ,
' https://example.com/bar.png '
],
' categories ' => [
' news ' ,
' tech ' ,
],
// Globally unique id
' uid ' => ' e7147580c8747aad ' ,
]
Atom
:Atom feed,用于 feed 阅读器Html
:简单的 HTML 页面Json
:JSON,供其他应用程序使用Mrss
:MRSS feed,用于 feed 阅读器Plaintext
:原始文本,供其他应用程序使用Sfeed
: 文本,TAB 分隔File
SQLite
Memcached
Array
Null
RSS-Bridge 的源代码是公共领域的。
RSS-Bridge 使用具有自己许可证的第三方库:
Parsedown
根据 MIT 许可证获得许可PHP Simple HTML DOM Parser
根据 MIT 许可证获得许可php-urljoin
根据 MIT 许可证获得许可Laravel framework
已获得 MIT 许可亲爱的所谓“社交”网站。
你的口号是“分享”,但你不希望我们分享。你想把我们留在你的围墙花园里。这就是为什么您一直从网页中删除 RSS 链接,将它们隐藏在您的网站深处,或者完全删除提要,用残缺或疯狂的专有 API 取而代之。去你的。
当您通过删除提要来妨碍共享时,您就没有社交能力。您很高兴让客户为您的生态系统创建内容,但您不希望这些内容消失 - 您甚至不拥有这些内容。谷歌外卖只是一个噱头。我们希望数据能够流动,我们需要 RSS 或 Atom 提要。
我们希望使用开放协议与朋友分享:RSS、Atom、XMPP 等等。因为没有人希望让您的服务与您的应用程序一起使用您的API 强制提供它们。朋友必须可以自由选择他们想要的任何软件和服务。
我们正在重建你们故意毁坏的桥梁。
整理好你的东西:把 RSS/Atom 放回去。