Definire una finestra di query, non un abbonamento
Usa from e to nei percorsi di contenuto per definire periodi, invece di attendere eventi su una connessione persistente. Reddit Stream API è un archivio storico indipendente, non un servizio ufficiale in diretta, SSE o WebSocket. Ogni esecuzione del lavoro invia richieste separate. Pianificare interrogazioni periodiche non garantisce attualità né dimostra che tutti i nuovi dati siano comparsi tra le esecuzioni. Il calendario appartiene al client, non è un ritmo di aggiornamento garantito dall’archivio.
Le date usano YYYY-MM-DD, si applicano a created_utc in UTC e includono l’intero giorno indicato in to. Non sono date di ingresso nell’archivio e non ammettono precisione oraria. Se scegli finestre giornaliere contigue, distingui i giorni iniziali e finali per evitare una sovrapposizione introdotta dal limite inclusivo. Questa organizzazione locale non garantisce finestre complete o risultati identici quando le interroghi nuovamente.
Inizia con https://api.redditstreamapi.com/v1/posts?subreddit=datasets&limit=3&page=2, l’esempio della pagina iniziale. Chiede fino a tre post di datasets nella seconda pagina, non un punto cronologico di continuazione. Scegli X-API-Key: <chiave> oppure Authorization: Bearer <chiave> e conserva il segreto sul server. La sessione del pannello account è distinta da queste intestazioni: consulta Ottieni una chiave API per preparare l’accesso.
Salvare una pagina prima di avanzare localmente
Scegli una dimensione di pagina da 1 a 100 secondo le capacità dell’applicazione. Il massimo non promette prestazioni ottimali né un numero minimo di record. Anche page va da 1 a 100 e ogni richiesta riceve una pagina. Controlla prima lo stato HTTP e convalida data come lista prima di trasformare i campi disponibili. Una lista vuota riuscita è un risultato valido.
Conserva risposta, parametri e numero di pagina ricevuti prima di aggiornare il punto di controllo locale. Quel punto appartiene alla tua applicazione, non è un cursore stabile emesso dall’archivio. Rielaborare una copia locale non richiede un altro recupero; chiedere nuovamente la stessa pagina può generare un nuovo addebito. La seconda risposta non garantisce gli stessi record, campi o ordine della prima. Mantieni riconoscibile questa differenza nei rapporti del lavoro.
Leggi total insieme a relation: eq esprime il totale esatto della query, gte un limite inferiore e unknown l’assenza di un totale affidabile, eventualmente null. Non sostituire sconosciuto con zero. Conserva has_more e window_exhausted per descrivere i limiti incontrati. Alla pagina 100 annota il limite nel lavoro: una coda conclusa o un totale esatto non certifica un download completo.
Distinguere limiti, errori e costi
I record seguono _doc, un ordine interno, non cronologia, rilevanza o punteggio. min_score filtra senza ordinare. Puoi ordinare o rimuovere duplicati dai dati ricevuti localmente, senza provare un’estrazione esaustiva o una sequenza di eventi senza lacune. parent_id o link_id presenti permettono associazioni locali senza conversazione completa garantita. La documentazione descrive i filtri e distingue contenuti, consultazione per id e catalogo di comunità.
HTTP 400 richiede di correggere i parametri, 401 di verificare chiave e intestazione, 402 di consultare il saldo nel pannello e 429 di limitare e distanziare nuovi tentativi. Puoi prevedere pause crescenti e un massimo di ripetizioni senza garantire ripresa successiva. /v1/status è pubblico e gratuito, ma restituisce soltanto una dichiarazione statica e conferma la risposta HTTP. Non convalida le chiavi, non mostra il saldo e non verifica il motore di ricerca.
Ogni recupero riuscito costa un credito, anche vuoto o ripetuto. Le richieste non valide non addebitano saldo e gli errori a monte restituiscono la prenotazione. Un timeout del client può nascondere un successo addebitato; un altro tentativo riuscito costa un altro credito. Un errore locale successivo non annulla quel successo remoto. Consulta i prezzi per stimare pagine e prove: $1 per 1000 successi e ricarica pagata minima di $50, senza abbonamenti o scadenza dei crediti acquistati.