https://github.com/friendsofredaxo/feeds
Importiert Daten aus API-Quellen wie RSS
https://github.com/friendsofredaxo/feeds
aggregator php redaxo redaxo-addon rss youtube
Last synced: 8 months ago
JSON representation
Importiert Daten aus API-Quellen wie RSS
- Host: GitHub
- URL: https://github.com/friendsofredaxo/feeds
- Owner: FriendsOfREDAXO
- License: mit
- Created: 2016-03-09T17:25:19.000Z (over 10 years ago)
- Default Branch: main
- Last Pushed: 2025-07-03T12:57:08.000Z (12 months ago)
- Last Synced: 2025-07-03T13:51:13.271Z (12 months ago)
- Topics: aggregator, php, redaxo, redaxo-addon, rss, youtube
- Language: PHP
- Homepage: https://friendsofredaxo.github.io/
- Size: 5.86 MB
- Stars: 44
- Watchers: 4
- Forks: 15
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Feeds
REDAXO Feed Aggregator

## Features
* Abruf von YouTube-, Vimeo- und RSS-Streams.
* Dauerhaftes Speichern der Beiträge
* Speicherung des Hauptmediums Im data-Ordner des AddOns
* Nachträgliche Aktualisierung der Beiträge (z.B. nach einem Update / einer Korrektur)
* Erweiterbar durch eigene Feed-Provider
* Feeds können in Watson gesucht werden `feed suchbegriff`
* Abruf aller oder einzelner Feeds per Cronjob
## Migration zu Namespaces (REDAXO 6 Vorbereitung)
Das Feeds-AddOn wurde für REDAXO 6 vorbereitet und nutzt jetzt moderne PHP-Namespaces. Die alten `rex_` Klassen sind weiterhin verfügbar, werden aber als deprecated markiert.
### Neue Namespace-Struktur
Alle Klassen wurden in den `FriendsOfRedaxo\Feeds` Namespace migriert:
| Alte Klasse | Neue Klasse |
|-------------|-------------|
| `rex_feeds_stream` | `FriendsOfRedaxo\Feeds\Stream` |
| `rex_feeds_item` | `FriendsOfRedaxo\Feeds\Item` |
| `rex_feeds_stream_abstract` | `FriendsOfRedaxo\Feeds\Stream\AbstractStream` |
| `rex_cronjob_feeds` | `FriendsOfRedaxo\Feeds\Cronjob` |
| `rex_feeds_helper` | `FriendsOfRedaxo\Feeds\Helper` |
Stream-Implementierungen befinden sich im `FriendsOfRedaxo\Feeds\Stream` Namespace:
- `rex_feeds_stream_rss` → `FriendsOfRedaxo\Feeds\Stream\Rss`
- `rex_feeds_stream_youtube_playlist` → `FriendsOfRedaxo\Feeds\Stream\YoutubePlaylist`
- `rex_feeds_stream_youtube_channel` → `FriendsOfRedaxo\Feeds\Stream\YoutubeChannel`
- `rex_feeds_stream_ics` → `FriendsOfRedaxo\Feeds\Stream\Ics`
- `rex_feeds_stream_vimeo_pro` → `FriendsOfRedaxo\Feeds\Stream\VimeoPro`
### Sanfte Migration
Die alten Klassennamen funktionieren weiterhin, sind aber als deprecated markiert:
```php
// ✅ Funktioniert weiterhin (deprecated)
$stream = rex_feeds_stream::get($stream_id);
// ✅ Moderne Schreibweise (empfohlen)
$stream = \FriendsOfRedaxo\Feeds\Stream::get($stream_id);
```
**Empfehlung:** Migrieren Sie Ihren Code schrittweise zu den neuen Namespace-Klassen. Die alten Klassen werden in zukünftigen Versionen entfernt.
## Installation
Im REDAXO-Backend unter `Installer` abrufen und installieren
## Verwendung
### Einen neuen Feed einrichten
1. Im REDAXO-Backend `AddOns` > `Feeds` aufrufen,
2. dort auf das `+`-Symbol klicken,
3. den Anweisungen der Stream-Einstellungen folgen und
4. anschließend speichern.
> **Hinweis:** Ggf. müssen zusätzlich in den Einstellungen von Feeds Zugangsdaten (bspw. API-Schlüssel) hinterlegt werden, bspw. bei Vimeo und YouTube.
### Feed aktualisieren
Die Feeds können manuell unter `AddOns` > `Feeds` abgerufen werden, oder in regelmäßigen Intervallen über einen Cronjob abgerufen werden:
1. Im REDAXO-Backend unter `AddOns` > `Cronjob` aufrufen,
2. dort auf das `+`-Symbol klicken,
3. als Umgebung z.B. `Frontend` auswählen,
4. als Typ `Feeds: Feeds abrufen` auswählen,
5. den Zeitpunkt festlegen (bspw. täglich, stündlich, ...) und
6. mit `Speichern` bestätigen.
Jetzt werden Feeds-Streams regelmäßig dann abgerufen, wenn die Website aufgerufen wird. [Weitere Infos zu REDAXO-Cronjobs](https://www.redaxo.org/doku/master/cronjobs).
### Feed ausgeben
Um ein Feed auszugeben, können die Inhalte in einem Modul oder Template per SQL oder mit nachfolgender Methode abgerufen werden, z.B.:
```php
getPreloadedItems(); // Standard gibt 5 Einträge zurück, sonst gewünschte Anzahl übergeben
foreach($items as $item) {
// Titel ermitteln und alles verlinken
print '';
// Bild ausgeben
if($item->getMediaFilename()) {
print '
';
}
print ''.rex_escape($item->getContent()).'
';
print '';
}
?>
```
## Bilder ausgeben mit dem Media Manager
Die Bilder eines Feeds werden im AddOn-Data-Ordner unter `data/addons/feeds/media` gespeichert. Für die Ausgabe der Bilder stehen zwei gleichwertige Möglichkeiten zur Verfügung.
### 1. Methode des Feed-Items
Neu seit 5.0.0
```php
// Mit Media Manager Effekt
$media_url = $item->getMediaManagerUrl('feeds_thumb');
echo '
';
```
Ermitteln der Medien-Infos:
```php
$mediaInfo = $item->getMediaInfo('mein_media_type');
if ($mediaInfo) {
echo "Breite: " . $mediaInfo['width'];
echo "Höhe: " . $mediaInfo['height'];
echo "Format: " . $mediaInfo['format'];
}
```
### 2. Direkt über den Mediamanager
Dies ist die traditionelle Methode zur Ausgabe des Mediums.
Wichtig hierbei die Endung `.feeds`.
```php
// $item ist ein rex_feeds_item Objekt
$media_url = rex_media_manager::getUrl('feeds_thumb', $item->getId() .'.feeds');
echo '
';
```
## Komplettes Beispiel
```php
getPreloadedItems(); // Standard gibt 5 Einträge zurück
foreach($items as $item) {
// Titel ermitteln und verlinken
echo '';
// Variante 1: Klassische Methode
echo '
';
// ODER Variante 2: Neue Methode
echo '
';
echo ''.rex_escape($item->getContent()).'
';
echo '';
}
?>
```
## Media Manager Effekt einrichten
1. Im REDAXO-Backend unter Media Manager einen neuen Typ anlegen
2. Als ersten Effekt "Datei: Aus Feeds einlesen" auswählen
3. Weitere gewünschte Effekte wie Resize, Crop etc. hinzufügen
> **Wichtig:** Der Feed-Effekt muss immer als erster Effekt in der Effektkette eingerichtet sein.
> **Hinweis:** Beide Methoden der Bildausgabe sind in ihrer Funktionalität identisch. Die klassische Methode wird aus Gründen der Abwärtskompatibilität weiterhin unterstützt.
## Einträge entfernen
Über das Cronjob-Addon lässt sich ein PHP-Cronjob ausführen, um nicht mehr benötigte Einträge aus der Datenbank zu entfernen. Dazu diese Codezeile ausführen und ggf. die Werte für `stream_id` und `INTERVAL` anpassen.
```php
setQuery("DELETE FROM rex_feeds_item WHERE stream_id = 4 AND createdate < (NOW() - INTERVAL 2 MONTH)"); ?>
```
Alternativ:
`setQuery("DELETE t1 FROM rex_feeds_item t1 JOIN (SELECT id FROM rex_feeds_item WHERE stream_id = 1 ORDER BY id DESC LIMIT 50,500) t2 ON t1.id = t2.id"); ?>`
Dies löscht nicht nach Datum, sondern nach Anzahl.
Vorteil: Wenn viele Posts immer geladen werden, kann sich die die DB sehr schnell aufblähen und Probleme beim Backup machen.
## Eigenen Provider anmelden
Feeds kann Inhalte auch anderer Quellen als die der mitglieferten Provider annehmen.
### Moderne Schreibweise (empfohlen)
Hierzu erstellt man eine extended Class der `FriendsOfRedaxo\Feeds\Stream\AbstractStream` im lib Ordner des eigenen AddOns oder des project-AddOns an, z.B.: `MyCustomStream`. Man kann sich dabei an die mitgelieferten Classes im Ordner `/lib/Stream` halten.
```php
Tipp: Mastodon-Feed auslesen: https://phpc.social/@REDAXO.rss
## Vimeo Pro
Zum Auslesen des Streams werden User-ID, Access Token und ein Client Secret benötigt.
Alle Infos dazu unter: https://developer.vimeo.com/api/guides/start
## Feeds und YForm
Die Stream-Tabelle lässt sich im YForm-Tablemanager importieren. Dadurch ist es möglich eine eigene Oberfläche für die Redakteure bereitzustellen.
## Lizenz
AddOn, siehe [LICENSE](https://github.com/FriendsOfREDAXO/feeds/blob/master/LICENCE.md)
Vendoren, siehe Vendors-Ordner des AddOns
## Autor
[Friends Of REDAXO](https://github.com/FriendsOfREDAXO)
## Credits
[Contributors](https://github.com/FriendsOfREDAXO/feeds/graphs/contributors)