I don’t know if it’ll help, but I wrote a little ruby program that will download all of a topic or category. (It doesn’t pay attention to dates, though.)
Oops. Getting the links wrong is what made me believe discourse support pagination using page=X in the first place (my own bad conversion from curl to a web browser).
Perhaps I should have ask a more general question: If search/query.json has a grouped_search_result with more_posts set true, how do I get to see the additional posts?
Ich versuche zu verstehen, wie die Discourse-API verwendet wird.
Bei den folgenden URLs vermute ich, dass sich term auf einen Zeitraum oder eine Dauer bezieht. Das ergibt sich aus term=after:2016-01-01%20before:2017-01-01 usw. Mir ist jedoch unklar, was term=API bedeutet. Kann das jemand erläutern?
Es gibt tatsächlich zwei Suchendpunkte, die Sie aufrufen können: /search.json?q= und /search/query?term=.
term bedeutet einfach Suchbegriff und bezieht sich nicht auf einen Zeitraum oder eine Dauer.
Um die Such-API zu verstehen, empfiehlt es sich, Reverse engineer the Discourse API zu verfolgen und die Suchanfragen, die Sie über die API durchführen möchten, auszuführen, um zu sehen, wie die Benutzeroberfläche dieselben API-Anfragen stellt.
Eigentlich möchte ich den gesamten Inhalt einer Seite abrufen (in meinem Fall eine Liste von Themen in einer Kategorie, siehe Obtaining a list of topics from a category). Ich möchte nicht Seite für Seite gehen, wenn es nicht notwendig ist. Und ich glaube nicht, dass Reverse Engineering hier funktionieren würde, da Discourse die Seite einfach erweitert, während man nach unten scrollt. Mir ist keine Option bekannt, die die gesamte Seite auf einmal anzeigt. Gibt es eine Möglichkeit, das zu tun?
Es gibt keinen einzelnen API-Aufruf, der ALLE Themen einer Kategorie abrufen kann. Sie müssen mehrere API-Aufrufe tätigen. Der Grund dafür ist, dass eine Kategorie über 1 Million Themen enthalten kann, was eine enorme Abfrage darstellt und die Leistung Ihrer Website beeinträchtigen könnte. Wenn Sie das Scrollen reverse-engineeren, können Sie sehen, wie die Discourse-Benutzeroberfläche API-Aufrufe für weitere Themen durchführt, und Sie können dieses Verhalten in Ihrer API nachbilden.
Je nachdem, was Sie erreichen möchten, können Sie auch die Data-Explore-Abfrage verwenden, um die Anzahl der Themen in einer Kategorie zu ermitteln, und einen API-Aufruf an diese gespeicherte Abfrage tätigen.