nodebb-plugin-deu-announcements
v0.1.0
Published
Dokuz Eylül Üniversitesi ana ve fakülte duyurularını gösteren NodeBB widget eklentisi
Readme
nodebb-plugin-deu-announcements
Dokuz Eylül Üniversitesi ana ve fakülte duyurularını NodeBB forumunda sekmeli bir widget olarak gösterir.
Özellikler
- Ana DEÜ duyuruları + fakülte duyurularını tek yerde toplar
- RSS varsa RSS, yoksa HTML scraping (karma)
- Sunucu tarafı periyodik çekim + önbellek (kaynak izolasyonu, stale-while-error)
- Sekmeli widget: Tümü / Fakültem / Ana
- Fakülte bazlı renkli rozetler, koyu/açık mod uyumlu, responsive
Desteklenen kaynaklar
| id | Fakülte | |----|---------| | main | Ana DEÜ Duyuruları | | iibf | İktisadi ve İdari Bilimler | | hukuk | Hukuk | | tip | Tıp | | edebiyat | Edebiyat | | fen | Fen | | isletme | İşletme | | ogrenci | Öğrenci İşleri Daire Başkanlığı | | sks | Sağlık Kültür ve Spor (SKS) Daire Başkanlığı | | muhendislik | Mühendislik (varsayılan kapalı — erişim doğrulanınca açın) |
Kurulum
cd /path/to/nodebb
npm install nodebb-plugin-deu-announcements
./nodebb build
./nodebb restart- ACP → Eklentiler'den eklentiyi etkinleştirin ve yeniden başlatın.
- ACP → DEÜ Duyuruları'ndan yenileme aralığı, duyuru sayısı ve varsayılan fakülteyi ayarlayın.
- ACP → Genişletme → Widget'lar ekranından "DEÜ Duyuruları" widget'ını istediğiniz alana (kenar çubuğu vb.) sürükleyin.
Yeni kaynak ekleme
lib/sources.js içindeki diziye bir nesne ekleyin:
{ id: 'gsf', name: 'Güzel Sanatlar', faculty: 'gsf', type: 'html',
url: 'https://gsf.deu.edu.tr/duyurular/',
link: 'https://gsf.deu.edu.tr/duyurular/',
selectors: { item: 'a[href*="/duyurular/"]' },
enabled: true }Seçici ipuçları (gözlemlenen DEÜ desenleri):
- WordPress fakülteleri: duyuru listesi sayfasında
a[href*="/duyurular/"](gerekirse.col-md-8 a[href*="/duyurular/"]ile ana içeriğe kapsayın). - Özel temalı siteler (hukuk, isletme):
item: '.news', title: '.news-title', link: 'a'. - WordPress
/feed/çoğu DEÜ sitesinde kapalıdır; önce deneyip 404 alırsanız HTML'e düşün.
Rozet rengi için static/style.less içine .deu-badge-<faculty> ekleyin.
Mimari
cron → aggregator (paralel + izole) → her kaynak: fetcher → parser → normalize
→ store (stale-while-error) → widget render (SSR)lib/sources.js— kaynak registrylib/fetcher.js— timeout'lu HTTPlib/parser.js— HTML/RSS → normalizelib/aggregator.js— paralel, izole çekimlib/store.js— bellek önbellek (stale-while-error)lib/scheduler.js— periyodik çekimlibrary.js— NodeBB entegrasyonu (init, widget, ACP)
Geliştirme
npm install
npm testLisans
MIT
