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 кредитов, без подписок и срока действия оплаченных кредитов. Изучите документацию, цены, страницу ключа и руководство. Бесплатный публичный статус не подтверждает состояние поиска, полноту файла или баланс.