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 放回去。