Bewertungen von JED erhalten

7

Ich habe auf der NoNumber-Website gesehen, dass er eine Registerkarte hat, auf der beispielsweise Bewertungen aus dem Joomla Extensions Directory angezeigt werden

Ich habe mich gefragt, ob es möglich ist, Bewertungen von der JED-Website abzurufen. Ich habe mich umgesehen, aber es scheint, dass JED weder eine API bereitstellt noch etwas im Ordner der Joomla-Bibliotheken finden kann.

Ich habe versucht, den HTML-Code von einer Seite zu analysieren. Dies ist jedoch übertrieben und führt zu sehr langen Ladezeiten für Seiten.

Weiß jemand, ob dies möglich ist? Wäre ein RSS-Feed angemessener?

Lodder
quelle

Antworten:

9

Es gibt eine nicht dokumentierte JSON-API.

Angenommen, Ihre Erweiterung hat eine ID von 83. Diese URL gibt Ihnen die Erweiterung und ihre Bewertungen:

http://extensions.joomla.org/index.php?option=com_jed&view=extension&layout=details&id=83&format=json

Wenn Sie jsonp anstelle einer einfachen json-Ausgabe benötigen, setzen Sie format = jsonp.

Um die Erweiterungs-ID zu ermitteln, können Sie zur aktuellen Seite der Erweiterungen gehen, z. B. http://extensions.joomla.org/extensions/extension/contacts-and-feedback/forms/fabrik , und die Schaltfläche "Bewertung überprüfen" auf der Schaltfläche überprüfen - was ähnlich aussieht wie:

http://extensions.joomla.org/write-review/review/add?extension_id=83

Verwenden Sie FOO als Ihre Erweiterungs-ID aus dem Segment extension_id = FOO.

Beachten Sie, dass die Ratenbegrenzung möglicherweise in Zukunft implementiert wird. Daher sollten Sie die Ergebnisse von API-Aufrufen am besten zwischenspeichern. Außerdem werden in Zukunft möglicherweise JSON-Web-Token ( http://jwt.io/ ) benötigt, um auf die API zuzugreifen.

Rob Clayburn
quelle
Danke Rob, ich werde mich auch
darum
Am Ende habe ich diese Methode angewendet. Ich habe unten eine Antwort geschrieben, die zeigt, wie ich den JSON durchlaufen habe.
Nochmals
5

Das ist eine tolle Idee.

Ich nehme an, Sie könnten ein Tool wie Feed43 verwenden , um einen " benutzerdefinierten Feed " zu erstellen . Es ist ein kostenloser Onlinedienst, der jede Webseite im laufenden Betrieb in einen RSS-Feed umwandelt. Sie können diesen Feed dann verwenden und die Ergebnisse anzeigen, wo immer Sie möchten.

Dabei werden Freiform-HTML- oder XML-Dokumente in gültige RSS-Feeds konvertiert, indem Text- oder HTML-Ausschnitte mithilfe von Suchmustern extrahiert und diese Ausschnitte mithilfe von Ausgabevorlagen zusammengefügt werden, um benutzerfreundlichen Inhalt der Feed-Elemente zu erstellen.

Sobald Sie das Feed-Setup haben, scheint es ganz einfach zu sein.

  • Ihr Feedreader sendet eine Anfrage an unseren Server, um den Feed herunterzuladen.
  • Feed43 wiederum lädt die ursprüngliche Quell-URL herunter, verarbeitet sie, konvertiert sie im laufenden Betrieb in einen gültigen RSS-Feed und gibt sie an die Feed-Reader-Anwendung zurück.
  • Der Feedreader zeigt Ihnen den Inhalt dieses Feeds an.

Ich habe es selbst schnell mit einer zufälligen JED-Erweiterungs-URL versucht und es werden die Bewertungen erfasst, obwohl sie in einem Tab in JED angezeigt werden (andere kostenlose RSS-Ersteller können dies nicht tun).

Spielen Sie hier selbst damit herum , ich habe momentan nicht viel Zeit, damit zu experimentieren. Die Suchparameter haben mich umgehauen, aber ich bin mir sicher, dass es nur ein wenig Übung braucht!

Hoffe das hilft.

Jonboy
quelle
Danke Johnny. Tatsächlich habe ich das schon einmal versucht und auch ich wurde von den Suchmustern abgelenkt. Ich werde das auf jeden Fall weiter untersuchen und sehen, was ich mir einfallen lassen kann. Ich hoffe, dass JED die Leistung ihrer Website aussortiert, da sie heutzutage langsam zu sein scheint: /
Lodder
5

Am Ende habe ich mich für die von @Rob Clayburn empfohlene JSON-Methode entschieden.

Es wirft ein massives Objekt mit allem ab, was es über die Erweiterung zu wissen gibt.

Am Ende schrieb ich Folgendes, um mir den Rezensionstitel und den Haupttext zu geben:

<?php
    $url        = 'http://extensions.joomla.org/index.php?option=com_jed&view=extension&layout=details&id=3711&format=json';
    $contents   = file_get_contents($url);
    $decode     = json_decode($contents, true);
    $reviews    = $decode['reviews'];

    foreach ($reviews as $key => $value) 
    {
        echo $value['core_title']['html'] . "<br>";
        echo $value['core_body']['html'] . "<br>";
    }
?>

Sie können auch durch htmlentweder valueoder ersetzen text.

Auf dem neuen JED können Sie etwas schreiben für:

  • Funktionalität
  • Benutzerfreundlichkeit
  • Unterstützung
  • Dokumentation

Wenn Sie also die Ergebnisse erhalten, erhalten Sie möglicherweise Folgendes:

{Funktionalität} TEXT_HERE {/ Funktionalität} {Leichtigkeit der Verwendung} TEXT_HERE {/ Leichtigkeit der Verwendung} {Unterstützung} TEXT_HIER {/ Unterstützung} {Dokumentation} TEXT_HERE {/ Dokumentation}

Daher kann eine Kategorisierung / Trennung erforderlich sein.

Hoffe, das hilft denen, die in Zukunft dasselbe tun wollen.

Ich könnte ein Joomla-Modul schreiben, damit andere es in ihre eigene Site integrieren können, ohne sich um Code kümmern zu müssen.

Lodder
quelle
4

Ich habe ein Modul codiert, das die JED-Site einmal pro Tag durchsucht und den analysierten Inhalt mithilfe des Cache-Verwaltungssystems von Joomla zwischenspeichert. Es war großartig, da die Seiten schnell geladen wurden. Der JED hat jedoch das Layout der Site geändert und ich habe es einfach nicht repariert.

Es gibt viele regressive reguläre Ausdrücke, aber es kann getan werden. Ich würde Ihnen meine anbieten, aber es funktioniert noch nicht für ihr neues Design und Layout.

muely2k1
quelle
Ah schön. Haben Sie damals einen Cron-Job benutzt?
Lodder
Alle Bewertungen usw. verwenden Mikrodaten, so dass Sie so etwas verwenden können, um die Bewertungen zu kratzen. github.com/linclark/MicrodataPHP (aber ich denke, der json-Ansatz ist einfacher)
Rob Clayburn
@Lodder - Ja, über die Joomla-CLI aufrufen, um den Datensatz und den Cache für diesen Tag zu aktualisieren. Ich hatte auch eine Abfragezeichenfolgenvariable, die das Update erzwingen konnte (zu Test- / manuellen Updatezwecken).
muely2k1
1

Leider gibt es keinen RSS-Feed auf JED-Seiten :( Ich vermute, sie machen das manuell oder sie kratzen die Seite. Es ist eine Schande, denn es wäre fantastisch, wenn sie auch für schema.org-Markups verwendet werden könnten.

Andrés Maeso
quelle