RSS-Bridge adalah aplikasi web PHP.
Ini menghasilkan umpan web untuk situs web yang tidak memilikinya.
Contoh yang dihosting secara resmi: https://rss-bridge.org/bridge01/
Saluran IRC #rssbridge di https://libera.chat/
Dokumentasi lengkap
Atau temukan contoh publik lainnya.
Membutuhkan minimal PHP 7.4.
CssSelectorBridge
: Menghapus feed menggunakan pemilih CSSFeedMergeBridge
: Menggabungkan beberapa feed menjadi satuFeedReducerBridge
: Mengurangi feed yang berisik sebanyak beberapa persentaseFilterBridge
: Memfilter feed dengan mengecualikan/menyertakan item berdasarkan kata kunciGettrBridge
: Mengambil postingan terbaru dari pengguna GETTRMastodonBridge
: Mengambil status dari instance Mastodon (ActivityPub).RedditBridge
: Mengambil postingan dari pengguna/subredit (dengan opsi pemfilteran)RumbleBridge
: Mengambil video saluran/penggunaSoundcloudBridge
: Mengambil musik berdasarkan nama penggunaTelegramBridge
: Mengambil postingan dari saluran publikThePirateBayBridge:
Mengambil torrent berdasarkan pencarian/pengguna/kategoriTikTokBridge
: Mengambil postingan berdasarkan nama penggunaTwitchBridge
: Mengambil video dari saluranVkBridge
: Mengambil postingan dari pengguna/grupXPathBridge
: Menghapus feed menggunakan ekspresi XPathYoutubeBridge
: Mengambil video berdasarkan nama pengguna/saluran/daftar putar/pencarianYouTubeCommunityTabBridge
: Mengambil postingan dari tab komunitas saluran RSS-Bridge pada dasarnya dapat di-unzip ke dalam folder web. Harus bekerja secara instan.
Zip terbaru: https://github.com/RSS-Bridge/rss-bridge/archive/refs/heads/master.zip (2MB)
Instruksi ini telah diuji pada VM Debian 12 baru dari Digital Ocean (1vcpu-512mb-10gb, 5 USD/bulan).
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
Konfigurasi 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 ;
}
}
Konfigurasi kumpulan 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
Konfigurasi PHP ini:
; /etc/php/8.2/fpm/conf.d/30-rss-bridge.ini
max_execution_time = 15
memory_limit = 64M
Mulai ulang fpm dan nginx:
# Lint and restart php-fpm
php-fpm8.2 -t && systemctl restart php8.2-fpm
# Lint and restart nginx
nginx -t && systemctl restart nginx
Instal rilis terbaru.
cd /var/www
composer create-project -v --no-dev --no-scripts rss-bridge/rss-bridge
TODO. Lihat #3785
Instal dengan mengunduh image buruh pelabuhan dari Docker Hub:
# Create container
docker create --name=rss-bridge --publish 3000:80 --volume $( pwd ) /config:/config rssbridge/rss-bridge
Anda dapat memasukkan config.ini.php
khusus dan menjembataninya ke ./config
.
Anda harus memulai ulang penampung agar perubahan khusus dapat diterapkan.
Lihat docker-entrypoint.sh
untuk detailnya.
# Start container
docker start rss-bridge
Jelajahi 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
Anda dapat memasukkan config.ini.php
khusus dan menjembataninya ke ./config
.
Anda harus memulai ulang penampung agar perubahan khusus dapat diterapkan.
Lihat docker-entrypoint.sh
untuk detailnya.
# Start container
docker start rss-bridge
Jelajahi http://localhost:3000/
Anda dapat memasukkan config.ini.php
khusus dan menjembataninya ke ./config
.
Anda harus memulai ulang penampung agar perubahan khusus dapat diterapkan.
Lihat docker-entrypoint.sh
untuk detailnya.
docker-compose up
Jelajahi http://localhost:3000/
Penerapan cepat Heroku saat ini tidak berfungsi. Ini mungkin berhasil jika Anda melakukan fork pada repo ini dan memodifikasi repository
di scalingo.json
. Lihat #2688
Pelajari lebih lanjut di Instalasi.
Outputnya dari php-fpm. Itu tidak dapat membaca index.php.
chown rss-bridge:rss-bridge /var/www/rss-bridge/index.php
Ubah config.ini.php
:
[authentication]
token = "hunter2"
Sebagai pengguna saat ini:
bin/cache-clear
Sebagai pengguna rss-bridge:
sudo -u rss-bridge bin/cache-clear
Sebagai akar:
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/
File sqlite (db, wal dan shm) tidak dapat ditulisi.
chown -v rss-bridge:rss-bridge cache/*
rm cache/*
Buat jembatan baru di misalnya 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 ,
];
}
}
}
Pelajari lebih lanjut di jembatan api.
enabled_bridges[] = *
enabled_bridges[] = TwitchBridge
enabled_bridges[] = GettrBridge
Mode debug menonaktifkan sebagian besar operasi caching.
enable_debug_mode = true
[cache]
; Cache backend: file (default), sqlite, memcached, null
type = "memcached"
type = "sqlite"
Ketika sebuah jembatan gagal, RSS-Bridge akan menghasilkan feed dengan satu item yang menjelaskan kesalahan tersebut.
Dengan cara ini, pembaca feed mengambilnya dan Anda diberi tahu.
Jika Anda tidak menginginkan perilaku ini, alihkan keluaran kesalahan ke 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"
Ubah report_limit
sehingga kesalahan harus terjadi 3 kali sebelum dilaporkan.
; Defines how often an error must occur before it is reported to the user
report_limit = 3
Jumlah laporan disetel ulang ke 0 setiap hari.
[authentication]
enable = true
username = "alice"
password = "cat"
Biasanya akan memerlukan pembaca feed untuk dikonfigurasikan dengan kredensial.
Dimungkinkan juga untuk memasukkan kredensial secara manual ke dalam URL:
https://alice:[email protected]/bridge01/?action=display&bridge=FabriceBellardBridge&format=Html
Lihat formats/PlaintextFormat.php
sebagai contoh.
Perintah ini mengharuskan Anda menginstal dependensi dev di composer.json
.
Jalankan semua tes:
./vendor/bin/phpunit
Jalankan satu kelas pengujian:
./vendor/bin/phpunit --filter UrlTest
Jalankan linter:
./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/
Kami adalah komunitas RSS-Bridge, sekelompok pengembang yang melanjutkan proyek yang diprakarsai oleh sebsauvage, webmaster sebsauvage.net, penulis Shaarli dan ZeroBin.
Lihat KONTRIBUTOR.md
RSS-Bridge menggunakan caching untuk mencegah layanan melarang server Anda memperbarui feed berulang kali. Durasi cache spesifik dapat berbeda antar jembatan. File cache akan dihapus secara otomatis setelah 24 jam.
RSS-Bridge memungkinkan Anda mengambil kendali penuh atas jembatan mana yang ditampilkan kepada pengguna. Dengan begitu Anda dapat meng-host layanan RSS-Bridge Anda sendiri dengan koleksi jembatan favorit Anda!
Pengelola saat ini (per 2024): @dvikan dan @Mynacol #2519
Ini adalah struktur item umpan yang diharapkan dihasilkan oleh jembatan.
$ 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
: Umpan atom, untuk digunakan dalam pembaca umpanHtml
: Halaman HTML sederhanaJson
: JSON, untuk dikonsumsi oleh aplikasi lainMrss
: MRSS feed, untuk digunakan pada pembaca feedPlaintext
: Teks mentah, untuk dikonsumsi oleh aplikasi lainSfeed
: Teks, TAB dipisahkanFile
SQLite
Memcached
Array
Null
Kode sumber untuk RSS-Bridge adalah Domain Publik.
RSS-Bridge menggunakan perpustakaan pihak ketiga dengan lisensinya sendiri:
Parsedown
dilisensikan di bawah Lisensi MITPHP Simple HTML DOM Parser
dilisensikan di bawah Lisensi MITphp-urljoin
dilisensikan di bawah Lisensi MITLaravel framework
dilisensikan di bawah Lisensi MIT Situs web yang disebut "sosial" yang terhormat.
Semboyan Anda adalah "berbagi", tetapi Anda tidak ingin kami berbagi. Anda ingin menjaga kami tetap berada di dalam taman bertembok Anda. Itu sebabnya Anda menghapus tautan RSS dari laman web, menyembunyikannya jauh di dalam situs web Anda, atau menghapus seluruh feed, menggantinya dengan API milik yang lumpuh atau gila. PERCAYA KAMU.
Anda tidak bersosialisasi ketika Anda menghambat berbagi dengan menghapus feed. Anda senang memiliki pelanggan yang membuat konten untuk ekosistem Anda, namun Anda tidak ingin konten ini keluar - konten yang bahkan bukan milik Anda. Google Takeout hanyalah gimmick. Kami ingin data kami mengalir, kami ingin RSS atau Atom feed.
Kami ingin berbagi dengan teman-teman, menggunakan protokol terbuka: RSS, Atom, XMPP, apa pun. Karena tidak ada seorang pun yang ingin layanan Anda dengan aplikasi Anda menggunakan API yang memberi mereka makan secara paksa. Teman-teman harus bebas memilih software dan layanan apa saja yang diinginkan.
Kami sedang membangun kembali jembatan yang sengaja Anda hancurkan.
Selesaikan semuanya: Masukkan kembali RSS/Atom.