Weblog-Inhalte auf anderen Seiten nutzen

Webloginhalte exportieren :: christian_koeppe_berlin, 22. Oktober 2003, 23:11

In dieser Story (und den anhängenden Kommentaren bzw. den Stories mit dem Thema 'Webloginhalte exportieren') soll es darum gehen, wie ich Inhalte, die über das von benutzte Antville-System erfasst wurden, auch von ausserhalb des Systems abrufen kann, also z.B. Inhalte einzelner Stories in anderen Seiten veröffentlichen kann, Linklisten mit dem letzten Änderungsdatum erstellen kann oder evtl. auch einen für unsere Zwecke angepassten RSS-Feedreader entwickeln kann (was das ist, werde ich später noch ausfürlicher erklären).

Zunächst betrachte ich dazu vorhandene Standards und die damit verbundenen Möglichkeiten (ab morgen, denn jetzt ist es schon ziemlich spät).

11 comments :: Kommentieren

Standards für die Darstellung - RSS

christian_koeppe_berlin, 23. Oktober 2003, 22:44

Es gibt eine Art Quasi-standard für die Darstellung von Inhalten aus Weblogs, nämlich RSS. Das steht für Rich Site Summary (oder auch Real Simple Syndication) und ist ein XML Format. Die entsprechende DTD dazu findet ihr weiter unten (oder auch bei dem Link).

Diese Daten werden dann in sogenannte Feeds ausgelesen und können so beliebigen anderen Webseiten verfügbar gemacht werden. Das interessante ist jetzt, wie man an diese RSS-Feeds herankommt. Im Falle von Antville gibt es da die Möglichkeit, an bestimmte URLs (z.B. die eines Blogs) noch /rss anzuhängen und so den RSS-Feed zu bekommen. Als Beispiel mal hier klicken:/blogville/rss (öffnet sich in neuem Browserfenster...)

Wenn man das gleiche mit der kompletten URL des Antville-servers macht, erhält man den RSS-Feed der Startseite. (Ihr könnt euch das alles auch anschauen, indem ihr auf den orangenen XML-button klickt, der sich irgendwo auf der Seite herumtreibt)

Im Falle des Antville-servers wird noch das etwas ältere RDF Site Summary benutzt, dass heisst, dass wir hier nicht mit der aktuellsten Version von RSS arbeiten müssen (zumindest habe ich das so herausgefunden, als Haupttag der RSS-Feeds aus Antville wird rdf ausgegeben, was nicht der aktuellen DTD entspricht, da muss nochmal genau geprüft werden, welche DTD jetzt für uns "zuständig" ist)

Weiterhin ist noch zu klären, ob und wie auch andere Feeds aus Antville gelesen werden können, z.B. eine komplette Liste der Weblogs, Themenlisten einzelner Blogs etc. Das würde weitreichende Möglichkeiten einer Linksammlung eröffnen, in der dann auch nach Themen gesucht werden könnte. Und genau damit gehts dann beim nächsten Kommentar meinerseits weiter.


So, hier noch die DTD (die Kommentare und die Character Entities (also Sonderzeichen nach ISO Latin-1) habe ich entfernt, das Original liegt hier):


<!ELEMENT rss (channel)>
<!ATTLIST rss
version CDATA #REQUIRED> <!-- must be "0.91"> -->
<!ELEMENT channel (title | description | link | language | item+ | rating? | image? | textinput? | copyright? | pubDate? | lastBuildDate? | docs? | managingEditor? | webMaster? | skipHours? | skipDays?)*>
<!ELEMENT title (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT link (#PCDATA)>
<!ELEMENT image (title | url | link | width? | height? | description?)*>
<!ELEMENT url (#PCDATA)>
<!ELEMENT item (title | link | description)*>
<!ELEMENT textinput (title | description | name | link)*>
<!ELEMENT name (#PCDATA)>
<!ELEMENT rating (#PCDATA)>
<!ELEMENT language (#PCDATA)>
<!ELEMENT width (#PCDATA)>
<!ELEMENT height (#PCDATA)>
<!ELEMENT copyright (#PCDATA)>
<!ELEMENT pubDate (#PCDATA)>
<!ELEMENT lastBuildDate (#PCDATA)>
<!ELEMENT docs (#PCDATA)>
<!ELEMENT managingEditor (#PCDATA)>
<!ELEMENT webMaster (#PCDATA)>
<!ELEMENT hour (#PCDATA)>
<!ELEMENT day (#PCDATA)>
<!ELEMENT skipHours (hour+)>
<!ELEMENT skipDays (day+)>


Christian Köppe

Verlinken :: Kommentieren

RSS die zweite

christian_koeppe_berlin, 27. Oktober 2003, 12:30

Also zuerst mal habe ich festgestellt, dass Antville die aktuelle Version 1.0 der RSS-Spezifikation benutzt. An der DTD hat sich aber im wesentlichen nichts geändert.

So, erste Erkenntnisse gibt es beim Auslesen anderer Inhalte ausser denen auf der Startseite und eines einzelnen Blogs. Ich untersuche gerade die Möglichkeiten, den Inhalt einer Story (inkl. Kommentaren) als RSS auszulesen sowie auch solche Sachen wie Userlists, Themenlisten etc. Bisher herausgefunden habe ich, dass für eben dieses Auslesen skins definiert werden müssen, welche dann mit Hilfe der vorhandenen Makros das entsprechende XML (also das RSS-Feed) erzeugen.

Ich werde erste Entwürfe bei mir lokal testen und dann in Absprache mit der Installationsgruppe auf unserem Server erweitern. Welche Möglichkeiten es dann genau gibt, werde ich wie üblich hier veröffentlichen.

Verlinken :: Kommentieren

Allgemeine Funktionsweise

christian_koeppe_berlin, 8. November 2003, 13:19

Bevor ich in meinem nächsten Kommentar eine erste Version einer Erweiterung unseres Antville-Servers vorstellen werde (entweder eine Themenliste pro blog oder auch eine Blogliste mit den behandelten Themen), möchte ich noch kurz erklären, wie das ganze funktioniert und wie es anderswo eingesetzt wird.

Das Auslesen des RSS-Feeds geschieht wie vieles andere in Antville auch mit Hilfe eines Skins und einer Script-datei. Beide Dateien müssen sich im entsprechenden Verzeichnis des Servers befinden.

Ein Beispiel verdeutlicht das vielleicht etwas besser: Wie ich in einem der letzten Kommentare schon beschrieben habe, bekommt man nach Eingabe von rss hinter der URL des Blogs den RSS-Feed von ebendiesem. Was dabei passiert ist folgendes: der Applikationsserver ruft eine Funktion namens rss auf, welche als gleichnamiges Script im root-Verzeichnis liegt. Dieses Script sammelt dann die notwendigen Informationen (last modified stories etc.), legt diese in Parametern und erstellt anschliessend mit Hilfe des Skins den RSS-Feed.

Wenn man nun also den RSS-Feed einer Story mit Kommentaren und evtl. noch anderen Informationen auslesen möchte, muss man in das Story-verzeichnis des Servers ein entsprechendes Skin- und Scriptdateien-paar legen. Dieses kann mit rss benannt werden (für den Standardfeed) oder auch andere Namen bekommen (für spezifischere Feeds, als Beispiel will ich hier mal eine mögliche Liste aller Nutzer, die Kommentare zu einer Story abgegeben haben mit entsprechenden Links auf ihre eigenen Blogs angeben). Die Möglichkeiten werden dabei lediglich vom Applikationserver eingeschränkt. Da diese Feeds als zusätzliche Funktionen implementiert werden können, also das bestehende System nicht verändert werden muss, gibt es diesbezüglich auch keine Sicherheitsbeschränkungen.

Eine Frage gibt es natürlich noch zu beantworten: Was macht man jetzt mit den Feeds? Zum einen gibt es da sogenannte Feed-Reader. Diese lesen in regelmässigen Abständen die Feeds aus zuvor benannten Blogs aus und zeigen diese formatiert an. Hier ein paar Beispiele für Feed-Reader (mit entsprechenden Links, öffnen alle in neuem Fenster):

NetNewsWire (Mac)
FeedReader (Win)
Syndirella (Win)

Eine zweite Möglichkeit ist die Verarbeitung des RSS-Feeds (welcher ja eine XML-Datei ist) mit Hilfe einer Scriptsprache, z.B. PHP oder auch JavaScript, oder auch eine Formatierung mit CSS (Cascading Style Sheets). Von einer direkten Darstellung mit Hilfe von XSL würde ich abraten, da lediglich der Internet Explorer dies unterstützt.


So, ich hoffe mal die Funktionsweise halbwegs verständlich erklärt zu haben. Für Fragen bin ich natürlich jederzeit offen (am besten als Kommentar anhängen).

Christian Köppe

Verlinken :: Kommentieren

Das Dilemma und die mögliche Lösung

christian_koeppe_berlin, 10. November 2003, 13:35

Ich habe bei mir gestern den oben erwähnten FeedReader (Win) heruntergeladen und bei mir installiert. Anschliessend habe ich einen Blog unseres Servers abonniert, was soweit auch funktioniert. Ich bekomme dann eine Liste aller Stories innerhalb dieses Blogs. Wenn ich von diesen eine auswähle, kann ich ca. 4 Zeilen der Story lesen und dann kommt ein link namens Read On. Und nun kommt unser Dilemma: dieser Link funktioniert nicht. Das liegt wohl daran, das ebendiese Funktion (auslesen des RSS-Feeds einer Story) bei Antville nicht implementiert ist. An der Lösung dieses Problems arbeite ich gerade, da ich schon denke, dass solche Möglichkeiten wie FeedReader auch in unserer Lehrveranstaltung von Nutzen seine können. Sobald diese Möglichkeit existiert, gibt es an dieser Stelle einen kurzen Hinweis.

Christian Köppe

Verlinken :: Kommentieren

RSS-FEEDS UNSERES SERVERS JETZT KORREKT!

christian_koeppe_berlin, 14. November 2003, 14:38

Das Problem, dass man mit normalen FeedReadern die Blogs unseres Servers nicht ordentlich lesen kann, liegt bzw. lag an einem Fehler in den entsprechenden rssItem.skin-Dateien (im site- und story-Ordner).

Dort wird beim Link lediglich die relative URL angegeben, richtig ist hier aber die komplette URL. Dazu muss zusätzlich noch innerhalb des Link-Tags folgender Tag eingefügt werden:

<% root.sysurl %>

das sieht dann insgesamt so aus:

<link><% root.sysurl %><% param.url encoding="xml" %></link>

Nachdem diese Zeile in den entsprechenden Dateien eingefügt wurden und unser Antville-Server neu gestartet wurde, war der Link-Tag korrekt. Jetzt können zumindest unser Server und einzelne Weblogs mit gängigen RSS-FeedReadern KORREKT gelesen werden.

Als nächstes werde ich einen RSS-Output für eine Story erstellen. Dieser enthält dann eine Liste der Kommentare, welche von einem FeedReader aus gelesen werden können. Eine, wie ich finde, sehr interessante und einfache Möglichkeit, die Entwicklung einer Story mitzuverfolgen. Dazu muss diese nämlich nur noch im FeedReader abonniert werden und dieser zeigt dann an, ob neue Kommentare erstellt wurden.

Ich kann nur empfehlen, einen FeedReader zu installieren und die für einen interessanten Blogs (und später auch Stories) zu abonnieren, das erleichtert das Lesen neuer Artikel erheblich.

Für Fragen stehe ich natürlich zur Verfügung.

Verlinken :: Kommentieren

der feed funktioniert bestens

Hans.Mittendorfer.Uni-Linz, 18. November 2003, 15:25

ich habe Ihren blog mit NetNewsWire abonniert, der Feed funktioniert einwandfrei. Es wurden jedoch z.B. beim Abonnement des BelegBlogs nur 7 Einträge angezeigt, obwohl wesentlich er wesentlich mehr enthält. Worin liegt die Limitation. In der Aktualität, in de maximalen Anzahl, ...

H. Mittendorfer

PS: machen Sie weiter so! Ihre Belegarbeit zeigt bereits in Richtung einer "sehr guten Note" :-)

Verlinken :: Kommentieren

RSS-Feed für Story verfügbar!!

christian_koeppe_berlin, 24. November 2003, 13:17

Soeben habe ich den Feed für eine Story zum Laufen gebracht. Der Feed gibt als Items dann die Kommentare zu der Story zurück. Das ist eine sehr komfortable Möglichkeit, die Entwicklung einer Story mit Hilfe eines Feed-Readers zu verfolgen. Zu erreichen ist der Feed über die URL der Story (in diesem Fall z.B. /blogville/stories/606/) und dem Hinzufügen von rss.

zur Ansicht einfach hier klicken:

/blogville/stories/606/rss

Für alle, die die Technik dahinter interessiert, will ich's hier kurz dokumentieren:

Wie bereits weiter oben beschrieben, läuft bei Antville das meiste über Skript-Dateien und Skin-Dateien. Ich habe also (angelehnt an die Funktionsweise für die Feeds von root und site) eine Skriptdatei namens rss.hac erstellt, welche über den Anhang rss aufgerufen wird. Innerhalb dieser Datei suche ich mit Hilfe von Antville-Funktionen und -Makros die benötigten Informationen zusammen, also header der Kommentare, den Autor etc. Diese übergebe ich dann zusammen mit dem rss.skin (welcher das Format des Outputs beschreibt, also XML) der Renderfunktion und jene setzt dann alles zusammen. Probleme gab es z.B. wenn noch keine Kommentare vorhanden waren, dafür musste ich noch einen zusätzlichen Skin namens rssNoItems.skin erstellen, welcher den Fall von noch nicht vorhandenen Kommentaren abdeckt.

Ich werde versuchen, dass der Link, auf den der XML-Button zeigt, im Fall der Ansicht einer Story auch korrekt auf deren Feed zeigt. Damit kann man dann über Link-Adresse kopieren des Kontextmenüs die Adresse direkt kopieren und beim FeedReader bzw. RSS-Ticker einfügen.

Zur Limitierung der Anzahl der Beiträge
Diese ist jetzt aufgehoben, d.h. wenn man einen Blog abonniert, bekommt man in dem Feed ALLE Stories aufgelistet.

Christian Köppe

Verlinken :: Kommentieren

weitere zukünftige Feeds...

christian_koeppe_berlin, 24. November 2003, 19:14

Ich habe eine neue Story angelegt, in der ich Vorschläge für weitere sinnvolle Feeds sammeln möchte. Deren Umsetzung kommentiere ich dann allerdings in dieser Story.

Der Link zur Story: /blogville/stories/2247/

Christian Köppe

Verlinken :: Kommentieren

StoryFeed

joern.schmieta.berlin, 26. November 2003, 22:00

ist es möglich, dass zur Zeit im Storyfeed nur die Kommentare, nicht aber die Story selber enhalten ist? Oder ist das beabsichtigt?

Gruss Jörn

Verlinken :: Kommentieren

StoryFeed Antwort

christian_koeppe_berlin, 26. November 2003, 22:50

Das ist richtig, es sind nur die Kommentare enthalten. Dieses Verhalten ist angelehnt an die anderen RSS-Feeds von Blog und Server, welche auch nur die untergeordneten Elemente enthalten. Die Frage ist, ob es im Falle einer Story nicht evtl. Sinn macht (und das könnte ich mir schon vorstellen) diese auch mit in den Feed aufzunehmen.

Das schöne ist, das wir uns ja nicht auf eins beschränken müssen. Ich werde also einen Feed namens rssMitStory erstellen, welcher dann auf die übliche Weise abrufbar ist und als erstes Item die Story selber enthält. Wenn er fertig ist, werde ich es hier veröffentlichen.

Christian Köppe

Verlinken :: Kommentieren

RSS-Linkliste

christian_koeppe_berlin, 23. Januar 2004, 14:10

Hier eine Linkliste zu Seiten, welche mit RSS in Verbindung stehen:

RDF Site Summary 1.0 Specification Working Group

Dies ist die Gruppe, die sich mit der Spezifikation beschäftigt. In der Newsgroup erhält man viele Tips zum Umgang mit RSS und der Verarbeitung. Auch mögliche Erweiterungen werden dort diskutiert.

What is RSS?

Eine sehr gute Zusammenfassung über RSS (in englisch).

-------------------------------
Und hier noch die links zu den einzelnen Spezifikationen:

RSS
Dublin Core (dc)
Syndication

Christian Köppe

Verlinken :: Kommentieren


To prevent spam abuse referrers and backlinks are displayed using client-side JavaScript code. Thus, you should enable the option to execute JavaScript code in your browser. Otherwise you will only see this information.