Reddit Proxy
RU

Перенесите чтение публикаций и проверьте смысл результата

Перенесите чтение dataengineering на исторический архив: сопоставьте поля, сохраните пустые результаты и проверьте страницы, ошибки и стоимость повторов.

Запишите критерии до изменения кода

Выберите задание, которое использует старые публикации dataengineering. Перечислите обязательные поля, поведение при отсутствии текста и зависимость от порядка записей. Для каждого требования отметьте решение: поддерживается напрямую, обрабатывается локально или остаётся вне переноса. Так успешный HTTP-ответ станет свидетельством работы определённой операции, а не обещанием совместимости всего клиента. Reddit Proxy предоставляет независимый исторический архив, не официальный интерфейс текущего состояния Reddit.

Сохраните первую страницу с новым ключом

Выполните GET https://api.redditproxy.com/v1/posts?subreddit=dataengineering&limit=3 с X-API-Key: <key> или Authorization: Bearer <key>. Оба варианта принимают ключ redditproxy.com, а не прежний OAuth-токен. Секрет хранится на сервере и не попадает в диагностические файлы. Сохраните параметры и ответ для повторной локальной обработки, не предполагая, что три записи обязательно найдутся.

Список публикаций соответствует /v1/posts; список комментариев — /v1/comments, поиск — /v1/search, известный отдельный элемент — /v1/item?id=.... Это разные операции с документированными параметрами. Нельзя подставить произвольный адрес Reddit и ожидать его пересылки. Поиск элемента не загружает автоматически всю связанную беседу.

Преобразуйте данные без выдуманного контекста

Проверьте массив data и нужные поля каждой записи до преобразования. Различайте отсутствие значения, пустую строку, пустую успешную страницу и ошибку вашего преобразователя. Ответы содержат плоские записи. При наличии parent_id и link_id возможна локальная группировка, но эти поля не являются фильтрами и не гарантируют полную ветку. Проверьте результат отчёта на сохранённой странице до дальнейшего сбора.

Переносите смысл фильтра, а не знакомое имя

Параметр q ищет в title и text: слова объединяются условием AND внутри совпадающего поля. Распределение нужных слов между заголовком и текстом не означает совпадения. Это не произвольный язык запросов. Даты from и to задаются как YYYY-MM-DD в UTC, день to включается полностью. min_score только фильтрует по числовому порогу. Порядок _doc не отражает время, релевантность или оценку; локальная сортировка меняет только уже полученный набор.

Замените прежнее правило окончания обхода

На запрос приходится максимум 100 записей, на набор условий — 100 отдельно запрашиваемых страниц. Читайте total вместе с relation: eq означает точный итог запроса, gte — нижнюю границу, unknown — ненадёжный итог, возможно null. Неизвестное количество не равно нулю. Достижение предела страниц и деление по датам не доказывают полноту или отсутствие дублей. В журнале переноса сохраните реально запрошенные страницы и нерешённые вопросы об охвате.

Испытайте ошибки перед подключением отчёта

HTTP 400 требует исправить параметры, 401 — проверить ключ, 402 — баланс, 429 — снизить частоту. Успешное извлечение стоит один кредит, даже если результатов нет. Неверный запрос не списывает кредиты, сбой источника возвращает резерв. Потеря ответа клиентом возможна после оплаченного успеха сервера; успешный повтор расходует ещё один кредит. Для проверки преобразования повторно обрабатывайте сохранённый ответ, когда новый запрос не нужен.

Сравните отчёт с исходными критериями. Локальная проверка не гарантирует будущую доступность или неизменность архива. Операции записи и получения текущего состояния не входят в этот адаптер. Публичный /v1/status сообщает статическую область сервиса и подтверждает ответ HTTP-приложения, не здоровье источника. Параметры сверяйте с документацией, расходы — с ценами, доступом управляйте на странице ключа.