Reddit Data Stream

Pianifica lotti storici con avanzamento locale e limiti espliciti

Progetta il lavoro ETL: recuperare una pagina, conservare la risposta, generare JSONL locale e registrare limiti, errori e costo delle nuove query.

Ottieni una chiave API

Definisci il lavoro del tuo sistema di pianificazione

Configura nella tua infrastruttura un’attività limitata per recuperare post o commenti archiviati. Reddit Data Stream è indipendente da Reddit e non offre aggiornamenti in diretta. Chiamate periodiche non trasformano l’API in flusso di eventi, SSE, WebSocket o canale di modifiche. Non sono promesse novità fra esecuzioni né un ordine temporale per rilevare tutto ciò che viene aggiunto. Il servizio non fornisce la pianificazione o l’esecuzione delle tue attività.

Definisci le destinazioni della risposta originale e del JSONL derivato, oltre a un massimo locale di chiamate per esecuzione. Salva percorso, filtri, limit e page con un tuo identificatore di lotto. Questo registro appartiene all’ETL, non è un cursore emesso dall’archivio. Distingui risposta conservata, trasformazione in attesa e file completato per non interpretare un errore di scrittura come un errore di recupero.

Non usare l’ultimo created_utc ricevuto come riferimento di nuova acquisizione nell’archivio. from e to filtrano la creazione in YYYY-MM-DD UTC, includendo tutto l’ultimo giorno, non l’arrivo o la modifica di un record. Suddividere le date può organizzare il lavoro, ma non prova esaustività. Nemmeno il numero di pagina salvato garantisce ripresa stabile o consegna unica dei record fra esecuzioni. Dichiara questi limiti nei processi periodici.

Conserva la pagina prima di scrivere JSONL

L’esempio iniziale è GET https://api.redditdatastream.com/v1/posts?subreddit=apacheairflow&limit=3&page=3. Richiede post di quella comunità, fino a tre record della pagina tre, non i post più recenti. Per i commenti usa comments oppure search con i filtri documentati. Autentica dal server con X-API-Key: <chiave> oppure Authorization: Bearer <chiave>. La pagina della chiave spiega l’accesso prima del pagamento; escludi i segreti dai file e dai registri.

Controlla lo stato HTTP e conserva la risposta ricevuta prima di normalizzare i campi. Poi valida data e scrivi ciascun record scelto come un oggetto JSON per riga con il tuo codice. Se un testo contiene interruzioni di riga, serializzalo in JSON per rappresentarle tramite escape all’interno dell’oggetto. Conserva pagination e credits come metadati separati. Il percorso restituisce JSON, non un file JSONL, un’esportazione massiva o una destinazione di archiviazione gestita.

I record restituiti sono strutture piatte, senza gerarchie di thread assemblate dal server. Quando i campi parent_id e link_id sono presenti, è responsabilità del client raggruppare localmente le conversazioni, anche se questo non garantisce una struttura di conversazione completa. Non esistono filtri per questi identificatori. Campi e riferimenti possono mancare: definisci il trattamento dei record rifiutati localmente e conserva il motivo. Se hai salvato la risposta, rielabora quella copia per riparare il file; non chiama l’API e non rimborsa il credito originale.

Termina i lotti e separa i costi

Nei percorsi dei contenuti limit e page vanno da 1 a 100, con una chiamata per pagina. _doc non ordina per tempo, rilevanza o punteggio; min_score è soltanto una soglia numerica. Leggi total con relation: eq è esatto per la query, gte è limite inferiore e unknown è un totale non affidabile, eventualmente null. Conserva has_more e window_exhausted, rispetta il limite e annota dove il lavoro si è fermato. Non promettere copertura completa o record unici.

Una risposta vuota riuscita non genera righe di data, ma richiede una voce di lotto e costa un credito. Correggi i parametri con 400, verifica chiave e dominio con 401, saldo con 402 e usa attese e tentativi limitati per 429. /v1/status è pubblico e gratuito, ma dichiara soltanto l’ambito e conferma la risposta HTTP. Non controlla la ricerca né lo stato dei tuoi file o delle tue attività e non certifica una ripresa riuscita.

Ogni recupero riuscito costa un credito, anche vuoto o ripetuto: $1 per 1000 richieste. La ricarica minima è $50 per 50000 crediti acquistati e i 100 di prova sono condizionati. Le richieste non valide non addebitano; i guasti a monte restituiscono la prenotazione. Una disconnessione può nascondere un successo fatturato e un altro recupero riuscito costa un nuovo credito. Un errore locale non lo rimborsa. Consulta prezzi e documentazione per separare pagine, prove e nuove query dall’elaborazione locale. Suddivisione delle date e deduplicazione non provano esaustività.