RSS-Bridge は PHP Web アプリケーションです。
Web フィードを持たない Web サイトに対して Web フィードを生成します。
公式にホストされているインスタンス: https://rss-bridge.org/bridge01/
IRC チャネル #rssbridge (https://libera.chat/)
完全なドキュメント
あるいは、別のパブリック インスタンスを見つけます。
最低 PHP 7.4 が必要です。
CssSelectorBridge
: CSS セレクターを使用してフィードをかき出すFeedMergeBridge
: 複数のフィードを 1 つに結合しますFeedReducerBridge
: ノイズの多いフィードを一定の割合で削減しますFilterBridge
: キーワードによってアイテムを除外/含めることでフィードをフィルターしますGettrBridge
: GETTR ユーザーからの最新の投稿を取得しますMastodonBridge
: マストドン (ActivityPub) インスタンスからステータスを取得しますRedditBridge
: ユーザー/サブ編集から投稿を取得します (フィルタリング オプションあり)RumbleBridge
: チャンネル/ユーザービデオを取得しますSoundcloudBridge
: ユーザー名で音楽を取得しますTelegramBridge
: パブリック チャネルから投稿を取得しますThePirateBayBridge:
検索/ユーザー/カテゴリごとに torrent を取得しますTikTokBridge
: ユーザー名で投稿を取得しますTwitchBridge
: チャンネルからビデオを取得しますVkBridge
: ユーザー/グループから投稿を取得しますXPathBridge
: XPath 式を使用してフィードをかき出すYoutubeBridge
: ユーザー名/チャンネル/プレイリスト/検索によってビデオを取得しますYouTubeCommunityTabBridge
: チャンネルのコミュニティ タブから投稿を取得しますRSS-Bridge は基本的に Web フォルダーに解凍できます。すぐに動作するはずです。
最新のzip: https://github.com/RSS-Bridge/rss-bridge/archive/refs/heads/master.zip (2MB)
これらの手順は、Digital Ocean の新しい Debian 12 VM (1vcpu-512mb-10gb、5 USD/月) でテストされています。
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
TODO。 #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 はエラーを説明する 1 つの項目を含むフィードを生成します。
こうすることで、フィードの読者がそれを拾い、あなたに通知が届きます。
この動作を望まない場合は、エラー出力を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"
エラーが報告される前にエラーが 3 回発生するように、 report_limit
変更します。
; 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
を参照してください。
これらのコマンドを使用するには、dev 依存関係を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.net のウェブマスターであり、Shaarli と ZeroBin の作者である sebsauvage によって開始されたプロジェクトを継続する開発者のグループです。
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 フィード、フィード リーダーで使用しますHtml
: 単純な HTML ページJson
: 他のアプリケーションで使用するための JSONMrss
: MRSS フィード、フィード リーダーで使用しますPlaintext
: 他のアプリケーションで使用するための生のテキストSfeed
: テキスト、TAB 区切りFile
SQLite
Memcached
Array
Null
RSS-Bridge のソース コードはパブリック ドメインです。
RSS-Bridge は、独自のライセンスを持つサードパーティ ライブラリを使用します。
Parsedown
MIT ライセンスに基づいてライセンスされていますPHP Simple HTML DOM Parser
php-urljoin
MIT ライセンスに基づいてライセンスされていますLaravel framework
いわゆる「ソーシャル」ウェブサイトの皆様。
あなたの合言葉は「共有」ですが、私たちに共有してほしくないのですね。あなたは私たちを壁に囲まれた庭園内に留めておきたいのです。だからこそ、Web ページから RSS リンクを削除したり、Web サイトの奥深くに隠したり、フィードを完全に削除して、機能不全または狂った独自の API に置き換えたりしてきたのです。クソ野郎。
フィードを削除して共有を妨げるのは社交的ではありません。顧客がエコシステム用のコンテンツを作成してくれるのは嬉しいですが、このコンテンツ、つまり自分が所有していないコンテンツを公開することは望ましくありません。 Google Takeout は単なるギミックです。データが流れること、RSS または Atom フィードが必要です。
RSS、Atom、XMPP などのオープン プロトコルを使用して友人と共有したいと考えています。なぜなら、 APIを強制的に供給してアプリケーションにサービスを提供したいと思う人はいないからです。友人は、希望するソフトウェアやサービスを自由に選択できる必要があります。
私たちはあなた方が故意に破壊した橋を再建しています。
要点をまとめてください。RSS/Atom を元に戻してください。