Reddit Data Stream

Перенесіть архівну сторінку до власного конвеєра JSONL

Побудуйте обмежений конвеєр з історичних GET-відповідей. Третя сторінка apacheairflow, локальний JSONL і вартість запитів без живого потоку.

Отримати API-ключ

Приклад запиту

cURL

curl --fail-with-body -H "Authorization: Bearer YOUR_API_KEY" "https://api.redditdatastream.com/v1/posts?subreddit=apacheairflow&limit=3&page=3"

Отримуйте історичну сторінку, а не потік подій

Reddit Data Stream надає власникам ETL-конвеєрів доступ для читання до незалежного історичного архіву Reddit. Це не офіційний сервіс Reddit, без оновлень у реальному часі, SSE, підписок WebSocket чи стрічки змін. Кожен GET повертає окрему JSON-відповідь. Запуск наступного завдання виконує новий запит до архіву, а не підписує застосунок на майбутні дописи Reddit, видалення чи виправлення записів.

Призначення цього процесу — файл JSONL, який ваш код створює локально. API не надає потокового експорту чи готового завантаження JSONL. Відокремлюйте отримання, перетворення й публікацію файла, щоб відрізняти помилку власного запису від відмови джерела. Планувальник, сховище та подальша обробка залишаються вашою відповідальністю. Назва сервісу не означає постійного з’єднання, з якого надходять нові записи без окремих запитів.

Записи й поля можуть бути відсутні; повне охоплення, стала схема, незмінність результатів та постійна доступність не гарантовані. Локальна позначка прогресу описує вашу роботу, а не виданий архівом токен продовження. Повторне отримання тієї самої сторінки не обов’язково поверне ті самі записи чи порядок. Локальне усунення дублікатів працює лише з отриманим і не доводить завантаження всього архіву без пропусків та повторів.

Перевірте третю сторінку перед записом рядків

Використовуйте GET https://api.redditdatastream.com/v1/posts?subreddit=apacheairflow&limit=3&page=3. Тут subreddit=apacheairflow обмежує спільноту, limit=3 запитує не більше трьох дописів, page=3 вибирає третю сторінку із цими параметрами. Це не отримання трьох сторінок і не продовження після часової позначки події. Передавайте X-API-Key: <ключ> або Authorization: Bearer <ключ> зі свого сервера. Обидва формати приймають ключ архіву цього домену.

Синтетичний фрагмент відповіді, лише для пояснення: {"data":[],"pagination":{"page":3,"limit":3,"total":null,"relation":"unknown"},"credits":{"cost":1,"balance":99}}. Реального запиту не виконували, баланс вигаданий. Порожня глибша сторінка не встановлює точного підсумку нуль для всієї вибірки. Успішне порожнє отримання коштує один кредит. Воно не додає рядків записів до вашого JSONL; це відрізняється від відсутності відповіді через мережевий збій. Записи apacheairflow можуть бути відсутні або недоступні.

Після реальної успішної відповіді перевірте, що data — масив, і перегляньте записи перед збереженням. Для JSONL серіалізуйте кожен запис як окреме значення JSON і додайте переведення рядка; переноси всередині вихідного тексту має екранувати серіалізатор. Не діліть сирий текст допису на рядки й не записуйте всю відповідь так, ніби це допис. За потреби зберігайте pagination і credits окремо як метадані власної обробки.

Обмежте завдання й ураховуйте віддалений успіх

Для вмісту limit і page приймають від 1 до 100, кожна сторінка потребує окремого виклику. Внутрішній порядок _doc не є хронологією, релевантністю, оцінкою чи часом завантаження до архіву. created_utc останнього запису не є надійною позначкою продовження. Читайте total з relation: eq — точний підсумок запиту, gte — нижня межа, unknown — ненадійний підсумок, можливо null. Сторінки й поділ дат не доводять повноти.

Кожне успішне отримання коштує один кредит, включно з порожнім і повторним: $1 за 1000 запитів. Некоректні запити не списуються; збій джерела повертає резерв. Тайм-аут клієнта може приховувати оплачений успіх, а помилка локального запису JSONL не скасовує оплати. Нова успішна віддалена спроба коштує ще один кредит, навіть якщо ваш завантажувач потім вилучає повторювані рядки. Відокремлюйте витрати архіву від результату локального збереження.

Реєстрація використовує електронну пошту й пароль довжиною 12–72 байти UTF-8; ключ показують один раз одразу, до оплати. Умовні 100 пробних кредитів залежать від спільного захисту мережі від зловживань. Мінімальне платне поповнення $50 дає 50000 кредитів, без підписок і строку дії придбаних кредитів. Прочитайте документацію, ціни, сторінку ключа та посібник. Безоплатний публічний статус не підтверджує стану пошуку, повноти файла чи балансу.