Category API-Anfrage lädt alle Themen herunter

Ich erstelle Analysen zur Nutzung unseres Forums und lade Informationen zu den Themen jeder Kategorie herunter.

Allerdings werden nicht immer alle Themen abgerufen. Das ist mir nur aufgefallen, weil zuvor einige Themen abgerufen wurden, die nun in unserem neuesten Bericht fehlen.

Beispiel:

Das Thema ist vorhanden, wenn ich die Kategorie-Seite im Browser öffne.

Der von mir verwendete Code:

from dotenv import load_dotenv
import os
import requests

load_dotenv()

headers = {
    "Content-Type": "application/json",
    "Api-Username": os.environ["USERNAME"],
    "Api-Key": os.environ["API_KEY"],
}

method = "GET"
url = "https://forum.aragon.org/c/proposals-for-main-dao/50.json"

response = requests.request(method, url, headers=headers)
topics = response.json()["topic_list"]["topics"]

found_topics = list()
for topic in topics:
    found_topics.append(topic["id"])

print(sorted(found_topics))

{topic: topic in found_topics for topic in [3519, 3528]}
>>>
[3075, 3224, 3299, 3312, 3449, 3472, 3474, 3526, 3554, 3555, 3557, 3583, 3586, 3592, 3613, 3624, 3626, 3659, 3674, 3677, 3680, 3694, 3695, 3699, 3702, 3710, 3716, 3720, 3725, 3737]

{3519: False, 3528: False}

Warum passiert das und wie kann ich es beheben?

Dann solltest du das Data Explorer Plugin verwenden.

Siehe Discourse Data Explorer und How to run Data Explorer queries with the Discourse API.

1 „Gefällt mir“

Danke, aber derzeit können wir dieses Plugin nicht installieren. Können wir etwas tun, um die API zu reparieren?

Dies ist ein offizielles, stabiles und gut gepflegtes Plugin. Was hindert Sie daran, es zu installieren?

Die Benutzeroberfläche verwendet ein Paging-System, um jeden Satz von Themen herunterzuziehen. Das ist wahrscheinlich der Grund, warum Sie sie nicht alle sehen können.

Überprüfen Sie die Abfrage, die Ihr Browser sendet, um Beispiele für jeden Aufruf zu sehen (siehe Netzwerk-Tab).

Wie @pfaffman jedoch zu Recht feststellt, ist dies nicht der am besten geeignete Weg, um Daten für Analysen zu erhalten, da er für die Benutzeroberfläche optimiert ist.

1 „Gefällt mir“