La richiesta API di categoria scarica tutti gli argomenti

Sto creando analisi sull’utilizzo del nostro forum e scarico informazioni sugli argomenti di ciascuna categoria.

Tuttavia, la richiesta non estrae sempre tutti gli argomenti. Me ne sono accorto solo perché in precedenza aveva estratto alcuni argomenti che ora sono scomparsi dal nostro ultimo report.

Esempio:

L’argomento è presente quando apro la pagina della categoria nel browser.

Il codice che utilizzo:

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}

Perché sta succedendo questo e come posso risolvere?

Allora dovresti usare il plugin Data Explorer.

Vedi Discourse Data Explorer e Come eseguire query Data Explorer con l’API di Discourse.

1 Mi Piace

Grazie, ma al momento non possiamo installare quel plugin. Possiamo fare qualcosa per correggere l’API?

Questo è un plugin ufficiale, stabile e ben mantenuto, cosa ti impedisce di installarlo?

L’interfaccia utente utilizza un sistema di paginazione per scaricare ciascun set di argomenti. Questo è probabilmente il motivo per cui non riesci a vederli tutti.

Controlla la query che il tuo browser sta inviando per esempi di ogni chiamata (vedi la scheda di rete)

Tuttavia, come giustamente sottolinea @pfaffman, questo non è il modo più appropriato per ottenere dati per l’analisi poiché è ottimizzato per l’interfaccia utente.

1 Mi Piace