Code Monkey home page Code Monkey logo

feeds's Introduction

Feeds

REDAXO Feed Aggregator

Screenshot

Features

  • Abruf von YouTube-, Vimeo- und RSS-Streams.
  • Dauerhaftes Speichern der Beiträge und des Hauptmediums in einer Datenbank-Tabelle
  • 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

Installation

  1. Im REDAXO-Backend unter Installer abrufen und
  2. anschließend unter Hauptmenü > AddOns 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.

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 
$stream_id = 1;
// Mediamanager Typ mit feeds als erster Effekt
$media_manager_type = 'feeds_thumb';
$stream = rex_feeds_stream::get($stream_id);
$items = $stream->getPreloadedItems(); // Standard gibt 5 Einträge zurück, sonst gewünschte Anzahl übergeben
    foreach($items as $item) {
        // Titel ermitteln und alles verlinken
        print '<a href="'. $item->getUrl() .'" title="'. rex_escape($stream->getTitle()) .'">';
        // Bild ausgeben
        print '<img src="'.rex_media_manager::getUrl($media_manager_type,$item->getId() .'.feeds').'"  alt="'. rex_escape($item->getTitle()) .'" title="'. rex_escape($item->getTitle()) .'">';
       print '<p>'.rex_escape($item->getContent()).'</p>';
       print '</a>';
    }
?>

Bilder ausgeben mit dem Mediamanager

Die Bilder eines Feeds werden in der Datenbank gespeichert und müssen mit dem Mediamanager-Effekt feeds ausgelesen werden. Der Effekt muss an den Anfang der Verarbeitung.

  • Der Dateiname ist die Datensatz-ID.
  • Damit der Effekt mitbekommt dass ein Feed-Medium verarbeitet werden soll wird dem Mediamanager die Datei-Endung .feeds übergeben.
  • Im Anschluss können diese wie gewöhnliche Medien im Mediamanager verarbeitet werden und somit auch alle anderen Effekte angewendet werden.

Beispielcode:

$bildurl = rex_media_manager::getUrl($media_manager_type,$item->getId() .'.feeds';

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 rex_sql::factory()->setQuery("DELETE FROM rex_feeds_item WHERE stream_id = 4 AND createdate < (NOW() - INTERVAL 2 MONTH)"); ?>

Eigenen Provider anmelden

Feeds kann Inhalte auch anderer Quellen als die der mitglieferten Provider annehmen.

Hierzu erstellt man eine extended Class der rex_feeds_stream_abstract im lib Ordner des eigenen AddOns oder des project-AddOns an, z.B.: rex_feeds_stream_my_class. Man kann sich dabei an die mitgelieferten Classes im Ordner /lib/streams halten. Alle möglichen Methoden findet man in der rex_feeds_stream_abstract -Class unter /lib/stream_abstract.php. Dort ruft man die Streamdaten ab und ordnet diese den Tabellenspalten zu.

Anschließend meldet man den neuen Provider wie folgt in der boot.php an:

rex_feeds_stream::addStream("rex_feeds_stream_meine_klasse");

Extension Points nutzen

Feeds kommt mit 2 Extension Points, namentlich FEEDS_STREAM_FETCHED nach Abruf eines Streams sowie FEEDS_ITEM_SAVED nach dem Speichern eines neuen Eintrags.

So lassen sich nach Abruf eines oder mehrerer Streams bestimmte Aktionen ausführen.

Weitere Infos zu Extension Points in REDAXO unter https://www.redaxo.org/doku/master/extension-points

Zum GitHub-Repository von Feeds

RSS Feed

Gebe einfach die URL zum Feed ein. ;-)

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

Vendoren, siehe Vendors-Ordner des AddOns

Autoren

feeds's People

Contributors

aeberhard avatar alikmltncl61 avatar alxndr-w avatar chrison94 avatar cukabeka avatar danspringer avatar dependabot[bot] avatar dergel avatar eherwig avatar gegerino avatar gharlan avatar imgbot[bot] avatar interweave-media avatar ixtension avatar nandes2062 avatar schuer avatar skerbis avatar staabm avatar tbaddade avatar tobiaskrais avatar tyrant88 avatar viewsion avatar ynamite avatar ytraduko-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

feeds's Issues

Export/Import-Fehler

Ich habe ein Redaxo-Projekt von Server A nach Server B umgezogen. Beim Import der Datenbank kommt es zu folgendem Fehler:

CREATE TABLE `rex_yfeed_item` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `stream_id` int(10) unsigned NOT NULL,
  `uid` varchar(255) NOT NULL,
  `title` varchar(255) NOT NULL,
  `content` text NOT NULL,
  `content_raw` text NOT NULL,
  `url` varchar(255) NOT NULL,
  `date` datetime NOT NULL,
  `author` varchar(255) NOT NULL,
  `language` varchar(255) NOT NULL,
  `media` longtext NOT NULL,
  `raw` text NOT NULL,
  `changed_by_user` tinyint(1) NOT NULL,
  `createuser` varchar(255) NOT NULL,
  `updateuser` varchar(255) NOT NULL,
  `createdate` datetime NOT NULL,
  `updatedate` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `stream_id` (`stream_id`),
  CONSTRAINT `rex_yfeed_item_ibfk_1` FOREIGN KEY (`stream_id`) REFERENCES `rex_yfeed_stream` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=150 DEFAULT CHARSET=utf8
MySQL meldet: Dokumentation

#1215 - Fremdschlüssel-Beschränkung kann nicht hinzugefügt werden

Feeds-Stream in YForm-Tabelle importieren

Ich finde die Funktion von YFeed mit dem selbständigen Aktualisieren von Datensätzen echt klasse. Was fehlt, ist in meinen Augen, eine andere Zieltabelle als die von YFeed angeben zu können und mit anderen Feldern als denen von YFeed zu arbeiten.

Ein Beispiel: Bandsintown bietet eine API, mit der man Tickets einer Band als Liste ausgeben kann. Diese will ich geocodieren. Ich könnte einen YFeed-Stream erstellen, der mir die Daten abruft, allerdings gibt es in YFeed nicht die vorgesehenen Felder für bspw. Str, PLZ, Ort und Ticket-URL und die Geocoding-Funktion steckt ja in YForm.

Wie sollte ich das aktuell lösen? Ich würde aktuell YFeed außenvor lassen und nur über einen Cronjob gehen. Hätte aber gerne YFeed um diese API erweitert.

FAQs -> Doku

@dergel auch hier würde ich gerne die Doku ausbauen, unter anderem mit einem Experten-Beispiel, wie man eigene Feeds registrieren kann.

Wie wäre es denn gewünscht, einfach wieder als MD-Datei hier reinhauen?

Invalid OAuth access token signature.

"Facebook\Exceptions\FacebookResponseException" thrown in /var/www/vhosts/domain.tld/zoff2016/redaxo/src/addons/yfeed/vendor/facebook/php-sdk-v4/src/Facebook/Exceptions/FacebookResponseException.php on line 106
Invalid OAuth access token signature.

caused by Facebook\Exceptions\FacebookAuthenticationException in /var/www/vhosts/domain.tld/zoff2016/redaxo/src/addons/yfeed/vendor/facebook/php-sdk-v4/src/Facebook/Exceptions/FacebookResponseException.php on line 106
Invalid OAuth access token signature.

Google+ einbinden

Also Jan, du hast gesagt ich solls als Issue hier reinschreiben – voilà :-)

Es wäre toll, wenn man mit dem yfeed-AddOn auch Google+ einbinden könnte.

Nach YForm-Update date-Felder neu initialisieren

Alexander Walther [9:08 AM]
@dergel beim Update auf YForm 2.0 werden auch die YFeed-Felder createdate, etc. deaktiviert. Hier müsste YFeed mit dem nächsten Update diese wieder ordnungsgemäß einrichten.
date changed_by_user createuser updateuser createdate updatedate

RSS importiert nicht alle Felder

Wenn in einem RSS Feed weitere Felder wie beispielsweise

<category>
<![CDATA[ Kategorie eins ]]>
</category>
<category>
<![CDATA[ Kategorie 2 ]]>
</category>
<category>
<![CDATA[ Noch eine Kategorie ]]>
</category>

vorkommen, so werden diese Daten nicht importiert. Wäre es möglich alle Daten ins Feld "Inhalt ungefiltert" zu importieren?

Required "app_id" key

HI,
bin grad am testen... wollte gerade einen Stream einer Facebook Page abholen.
Folgender Fehler erscheint nach Klick auf "Stream abrufen":

"Facebook\Exceptions\FacebookSDKException" thrown in /htdocs/redaxo/src/addons/yfeed/vendor/facebook/php-sdk-v4/src/Facebook/Facebook.php on line 139
Required "app_id" key not supplied in config and could not find fallback environment variable "FACEBOOK_APP_ID"

Habe das auch mit einer APP-ID versucht.. gleicher Fehler...

yfeed <> socialhub

Hi,
schönes Addon. Nur schade, dass es parallel entwickelt wurde zu meinem Socialhub (https://github.com/phoebusryan/rex_socialhub) ... wobei es ja eigentlich von Sascha war und ich es grundlegend überarbeitet habe. Meins kann Instagram schon, dafür kein RSS.

Solltest du das Addon hier weiterentwickeln (und danach sieht es aus), werde ich die Weiterentwicklung des Socialhubs einstellen. Es macht ja keinen Sinn, zwei Addons mit der gleichen oder ähnlichen Funktion parallel zu entwickeln.

Vorteil bei meinem ist übrigens noch, dass man nach Hashtag suchen kann und nicht nur nach Profilen. Ich kenne die Pläne von dir nicht, aber sowas wäre ansonsten noch ein Zusatzfeature für yform.

Gib mir bescheid.

Facebook OAuth-Fehler

Hi,

ich habe die Anleitung für Facebook in den FAQs 1:1 befolgt und insg. 3 Versuche gestartet, trotzdem wirft yfeed einen Fehler:

"Facebook\Exceptions\FacebookResponseException" thrown in /kunden/322541_70190/alexplus.de/kulturkeller_rex5/redaxo/src/addons/yfeed/vendor/facebook/php-sdk-v4/src/Facebook/Exceptions/FacebookResponseException.php on line 106
Invalid OAuth access token signature.

Aber wie man sieht, sind Page-ID und API-Key korrekt eingetragen:
image

Hier ein Screenshot aus den Einstellungen im Backend:
image

Über die Graph API komme ich auch an die Posts:
image

Auch die zugehörige App-ID ist auf live geschalten:
image

Was läuft hier verkehrt?

Instagram Bilder gehen nicht mehr

... anscheinend hat Instagram den Abruf der Bilder über die "alternative API" gesperrt: Access Denied. Gibt es schon einen Workaround? Die offizielle API kann ich leider nicht verwenden, weil das da mit der Hashtag-Suche nicht funktioniert.

Instagram public_content Error

Scheint als ob Instagram den API Zugriff gewaltig eingeschränkt hat. Seit 1. Oktober gibt es wohl nur noch Apps/Tokens mit "basic" Scope. Also keine Möglichkeit mehr ausserhalb von seinem eigenen Profil was zu suchen. Schade... jemand einen Workarround? Ich bräuchte die #49 Tag-Suche...

... übrigens... vielen Dank dafür! Hatte yfeed gar nicht auf dem Schirm - ist aber genau was ich brauche :)

YouTube: Fehler beim Abruf

rex_socket_exception thrown with message "It isn't possible to parse the URL ""!"

Stacktrace:
#15 rex_socket_exception in /home/html/www/redaxo/src/core/lib/util/socket/socket.php:343
#14 rex_socket:parseUrl in /home/html/www/redaxo/src/core/lib/util/socket/socket.php:85
#13 rex_socket:factoryUrl in /home/html/www/redaxo/src/addons/yfeed/lib/helper.php:24
#12 rex_yfeed_helper:getDataUri in /home/html/www/redaxo/src/addons/yfeed/lib/item.php:107
#11 rex_yfeed_item:setMedia in /home/html/www/redaxo/src/addons/yfeed/lib/stream/youtube_playlist.php:58
#10 rex_yfeed_stream_youtube_playlist:fetch in /home/html/www/redaxo/src/addons/yfeed/pages/streams.php:30
#9 include in /home/html/www/redaxo/src/core/lib/packages/package.php:228
#8 rex_package:includeFile in /home/html/www/redaxo/src/core/lib/be/controller.php:456
#7 rex_be_controller:includePath in /home/html/www/redaxo/src/core/lib/be/controller.php:420
#6 rex_be_controller:includeCurrentPageSubPath in /home/html/www/redaxo/src/addons/yfeed/pages/index.php:15
#5 include in /home/html/www/redaxo/src/core/lib/packages/package.php:228
#4 rex_package:includeFile in /home/html/www/redaxo/src/core/lib/be/controller.php:456
#3 rex_be_controller:includePath in /home/html/www/redaxo/src/core/lib/be/controller.php:403
#2 rex_be_controller:includeCurrentPage in /home/html/www/redaxo/src/core/backend.php:139
#1 require in /home/html/www/redaxo/src/core/boot.php:125
#0 require in /home/html/www/redaxo/index.php:9

Username

Bei Posts ist es eigentlich üblich den Username anzuzeigen und nicht den vollen Namen. Daher wäre es gut wenn man zusätzlich zum author (fullName) auch den username (wo es einen gibt) abrufen würde.

Wunsch: Bestimmte Facebook-Posts nicht einlesen

Eine Filterung von Facebook-Posts wäre sehr sinnvoll.
Evtl. sollen nicht alle Einträge auch auf der Website verarbeitet werden.
Vielleicht könnte nach einer bestimmten Zeichenfolge gesucht werden (evtl. ein #Hashtag), die dafür sorgt, dass der Eintrag nicht eingelesen wird.

RSS feed plugin importiert gelinkte Mediendateien

Wenn ich das RSS feed plugin einsetze, um zB Podcast-Feeds einzulesen, habe ich das Problem, dass direkt die MP3-Dateien mit gezogen werden. Es wäre gut, wenn es einen switch o.ä. gäbe, um das zu verhindern und stattdessen die Media-URL einzusetzen.

Cronjob wird nicht ordnungsgemäß ausgeführt.

Wenn ich die Streams direkt im Addon abrufe, funktioniert alles. Beim Cronjob hingegen hagelt es Fehler.

19.01.2017 00:06:46	yFeed	2 errors (Facebook, Twitter), 2 items added, 0 items updated, 0 items not updated because changed by user

Class 'TwitterOAuth\Auth\ApplicationOnlyAuth' not found

Hallo,

ich bekomm folgenden Fehler wenn ich versuche meine Twitter Einträge zu aktualisieren:

redaxo/src/addons/yfeed/lib/stream/twitter_user_timeline.php on line 56
Class 'TwitterOAuth\Auth\ApplicationOnlyAuth' not found

Fehlt da was - oder wie? Version 1.1.0-beta1

Ooops nach Update auf 1.1.2/ Instagram User Stream

Nach Update von 1.1.0 auf 1.1.2 per Installer bekomme ich im Ooops die Instagram API Fehlermeldung "This client has not been approved to access this resource."
Userid gegen Username auszutauschen hat nix geholfen, gleiche Fehlermeldung.

Instagram Abruf dauert recht lange

Bei Instagram (ich nutze die alternative Version ohne Token) dauert der Abruf von Posts (tag) recht lange... können schon mal 20 Sekunden und mehr sein. Is natürlich blöd wenn das über einen Cronjob regelmäßig gemacht wird. Weiß jemand woran das liegt? Kann man da was machen?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.