RSS-Bridge เป็นเว็บแอปพลิเคชัน PHP
มันสร้างฟีดเว็บสำหรับเว็บไซต์ที่ไม่มี
อินสแตนซ์ที่โฮสต์อย่างเป็นทางการ: https://rss-bridge.org/bridge01/
ช่อง IRC #rssbridge ที่ https://libera.chat/
เอกสารครบ
หรือค้นหาอินสแตนซ์สาธารณะอื่น
ต้องการ PHP ขั้นต่ำ 7.4
CssSelectorBridge
: ขูดฟีดออกโดยใช้ตัวเลือก CSSFeedMergeBridge
: รวมฟีดหลายรายการไว้ในที่เดียวFeedReducerBridge
: ลดฟีดที่มีเสียงดังลงเป็นเปอร์เซ็นต์FilterBridge
: กรองฟีดโดยการยกเว้น/รวมรายการตามคำหลักGettrBridge
: ดึงข้อมูลโพสต์ล่าสุดจากผู้ใช้ GETTRMastodonBridge
: ดึงสถานะจากอินสแตนซ์ Mastodon (ActivityPub)RedditBridge
: ดึงข้อมูลโพสต์จากผู้ใช้/ซับเร็ต (พร้อมตัวเลือกการกรอง)RumbleBridge
: ดึงข้อมูลช่อง/วิดีโอของผู้ใช้SoundcloudBridge
: ดึงเพลงตามชื่อผู้ใช้TelegramBridge
: ดึงโพสต์จากช่องสาธารณะThePirateBayBridge:
ดึงข้อมูลเพลงตามการค้นหา/ผู้ใช้/หมวดหมู่TikTokBridge
: ดึงข้อมูลโพสต์ตามชื่อผู้ใช้TwitchBridge
: ดึงวิดีโอจากช่องVkBridge
: ดึงข้อมูลโพสต์จากผู้ใช้/กลุ่มXPathBridge
: ขูดฟีดออกโดยใช้นิพจน์ XPathYoutubeBridge
: ดึงวิดีโอตามชื่อผู้ใช้/ช่อง/เพลย์ลิสต์/ค้นหาYouTubeCommunityTabBridge
: ดึงข้อมูลโพสต์จากแท็บชุมชนของช่อง โดยทั่วไปแล้ว RSS-Bridge สามารถแตกไฟล์ลงในโฟลเดอร์เว็บได้ ควรทำงานได้ทันที
zip ล่าสุด: https://github.com/RSS-Bridge/rss-bridge/archive/refs/heads/master.zip (2MB)
คำแนะนำเหล่านี้ได้รับการทดสอบบน Debian 12 VM ใหม่จาก Digital Ocean (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
สิ่งที่ต้องทำ ดู #3785
ติดตั้งโดยการดาวน์โหลดอิมเมจนักเทียบท่าจาก Docker Hub:
# 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 ด่วนไม่ทำงานในขณะนี้ อาจใช้งานได้หากคุณแยก repo นี้และแก้ไข repository
ใน scalingo.json
ดู #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 ,
];
}
}
}
เรียนรู้เพิ่มเติมใน Bridge 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
สำหรับตัวอย่าง
คำสั่งเหล่านี้กำหนดให้คุณต้องติดตั้งการพึ่งพา 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 ผู้ดูแลเว็บของ sebsauvage.net ผู้เขียน Shaarli และ ZeroBin
ดูผู้สนับสนุน.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
: JSON สำหรับใช้งานโดยแอปพลิเคชันอื่นMrss
: ฟีด MRSS สำหรับใช้ในโปรแกรมอ่านฟีดPlaintext
: ข้อความดิบ สำหรับใช้งานโดยแอปพลิเคชันอื่นSfeed
: ข้อความ, TAB แยกจากกันFile
SQLite
Memcached
Array
Null
ซอร์สโค้ดสำหรับ RSS-Bridge เป็นสาธารณสมบัติ
RSS-Bridge ใช้ไลบรารีของบุคคลที่สามพร้อมใบอนุญาตของตนเอง:
Parsedown
ได้รับใบอนุญาตภายใต้ใบอนุญาต MITPHP Simple HTML DOM Parser
ได้รับอนุญาตภายใต้ใบอนุญาต MITphp-urljoin
ได้รับใบอนุญาตภายใต้ใบอนุญาต MITLaravel framework
ได้รับอนุญาตภายใต้ใบอนุญาต MIT เรียนเว็บไซต์ที่เรียกว่า "โซเชียล"
คำขวัญของคุณคือ "แบ่งปัน" แต่คุณไม่ต้องการให้เราแบ่งปัน คุณต้องการให้พวกเราอยู่ในสวนที่มีกำแพงล้อมรอบของคุณ นั่นเป็นเหตุผลที่คุณลบลิงก์ RSS ออกจากหน้าเว็บ ซ่อนลิงก์ไว้ลึกๆ บนเว็บไซต์ของคุณ หรือลบฟีดทั้งหมด โดยแทนที่ด้วย API ที่เป็นกรรมสิทธิ์ที่พิการหรือเสื่อมถอย โคตรแย่เลย
คุณไม่ได้เข้าสังคมเมื่อคุณขัดขวางการแบ่งปันด้วยการลบฟีด คุณยินดีที่มีลูกค้าสร้างเนื้อหาสำหรับระบบนิเวศของคุณ แต่คุณไม่ต้องการให้เนื้อหานี้ถูกเผยแพร่ออกไป ซึ่งเป็นเนื้อหาที่คุณไม่ได้เป็นเจ้าของด้วยซ้ำ Google Takeout เป็นเพียงกลไกเท่านั้น เราต้องการให้ข้อมูลของเราไหลลื่น เราต้องการฟีด RSS หรือ Atom
เราต้องการแบ่งปันกับเพื่อน ๆ โดยใช้โปรโตคอลแบบเปิด: RSS, Atom, XMPP อะไรก็ได้ เพราะไม่มีใครอยากใช้บริการ ของคุณ กับแอปพลิเคชัน ของคุณ โดยใช้ API ของคุณ เพื่อบังคับให้แอปพลิเคชันเหล่านั้น เพื่อนจะต้องมีอิสระในการเลือกซอฟต์แวร์และบริการที่ต้องการ
เรากำลังสร้างสะพานขึ้นใหม่ที่คุณจงใจทำลาย
รวมเรื่องไร้สาระของคุณ: ใส่ RSS/Atom กลับเข้าไป