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 في مجلد ويب. ينبغي أن تعمل على الفور.
أحدث ملف مضغوط: https://github.com/RSS-Bridge/rss-bridge/archive/refs/heads/master.zip (2 ميجابايت)
تم اختبار هذه التعليمات على جهاز Debian 12 VM جديد من Digital Ocean (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
تكوين نجينكس:
# /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 لا يعمل حاليًا. قد ينجح الأمر إذا قمت بتقسيم هذا الريبو وتعديل 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:
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
للحصول على مثال.
تتطلب هذه الأوامر أن تقوم بتثبيت تبعيات التطوير في 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، للاستخدام في قارئات الخلاصاتHtml
: صفحة HTML بسيطةJson
: JSON، للاستهلاك بواسطة التطبيقات الأخرىMrss
: موجز MRSS، للاستخدام في قارئات الخلاصاتPlaintext
: نص خام، للاستهلاك من قبل التطبيقات الأخرىSfeed
: نص، مفصول بـ TABFile
SQLite
Memcached
Array
Null
الكود المصدري لـ RSS-Bridge هو المجال العام.
يستخدم RSS-Bridge مكتبات الطرف الثالث بترخيص خاص بها:
Parsedown
مرخص بموجب ترخيص MITPHP Simple HTML DOM Parser
مرخص بموجب ترخيص MITphp-urljoin
مرخص بموجب ترخيص MITLaravel framework
مرخص بموجب ترخيص MIT عزيزي ما يسمى بالمواقع "الاجتماعية".
شعارك هو "مشاركة"، لكنك لا تريد منا أن نشارك. تريد أن تبقينا داخل حدائقك المسورة. ولهذا السبب كنت تقوم بإزالة روابط RSS من صفحات الويب، أو إخفائها بعمق في موقع الويب الخاص بك، أو إزالة الخلاصات بالكامل، واستبدالها بواجهة برمجة التطبيقات الخاصة المعطلة أو المعتلة. اللعنة عليك.
أنت لست اجتماعيًا عندما تعرقل المشاركة عن طريق إزالة الخلاصات. أنت سعيد بوجود عملاء يقومون بإنشاء محتوى لنظامك البيئي، ولكنك لا تريد نشر هذا المحتوى - وهو محتوى لا تملكه حتى. Google Takeout هو مجرد وسيلة للتحايل. نريد أن تتدفق بياناتنا، ونريد خلاصات RSS أو Atom.
نريد المشاركة مع الأصدقاء، باستخدام البروتوكولات المفتوحة: RSS، Atom، XMPP، أيًا كان. لأنه لا أحد يرغب في الحصول على خدمتك مع تطبيقاتك باستخدام واجهة برمجة التطبيقات (API) الخاصة بك والتي تغذيها بالقوة. يجب أن يكون للأصدقاء الحرية في اختيار أي برنامج أو خدمة يريدونها.
نحن نعيد بناء الجسور التي دمرتموها عمدا.
اجمع شتاتك معًا: أعد RSS/Atom مرة أخرى.