Различайте дату публикации и время сбора
При сравнении обсуждений фототехники за два периода отделяйте дату записи от времени получения ответа. Reddit Posts API применяет from и to к created_utc, а не ко времени загрузки в архив. Это независимый исторический сервис без официальной связи с Reddit и обновлений в реальном времени. Определенный период покрытия, постоянная доступность и одинаковые будущие результаты не гарантируются; исследование должно учитывать эти ограничения источника.
Начните с https://api.redditpostsapi.com/v1/posts?subreddit=photography&min_score=10&limit=3, чтобы изучить доступные записи. Запрос выбирает сообщество и порог числового рейтинга, а не тему оборудования или лучшие публикации. Прочитайте текст локально и определите, как различать рекомендацию камеры, вопрос об объективе и прочие материалы о фотографии. Это предлагаемые категории вашей разметки, а не обнаруженные сервисом результаты. Отсутствующий текст следует отмечать отдельно, не подменяя его выводом об отсутствии темы.
Определите исследовательский интервал в UTC до отправки запроса. from и to задаются как YYYY-MM-DD, причем день to включается полностью. Это отбор по дням, а не интерфейс для указания секунд. Если событие описано в местном времени, сначала переведите его границы в UTC. Для внутрисуточного вопроса запросите охватывающие даты и примените локальный отбор по доступным временным значениям, зафиксировав отсутствующие или непригодные поля.
Разделите соседние периоды без общего дня
Условный пример правил отбора: from=2024-05-01 и to=2024-05-07 включают семь указанных суток UTC. Следующий период может использовать from=2024-05-08 и to=2024-05-14. Эти даты поясняют семантику, а не подтверждают покрытие архива. Если начать второй интервал 7 мая, этот день намеренно попадет в оба. Правильно заданные соседние диапазоны все равно не гарантируют полного или свободного от повторов получения данных при удаленном обходе страниц.
Сохраните маршрут, сообщество, даты, порог рейтинга, поисковый q и тип записи для каждого окна. Постоянство этих условий помогает объяснять отбор, но не устраняет отсутствующий контент и влияние порога score. min_score не сортирует и не является объективной мерой качества рекомендации. Отделяйте локальные решения разметки от условий API, которые отобрали записи. Сравнивая два окна, поясните также единицу анализа и причину исключения каждого неподходящего текста.
Один запрос получает одну страницу максимум из 100 записей; page ограничен номерами от 1 до 100. Выдача следует внутреннему порядку _doc, а не времени или релевантности. Локально отсортированная таблица охватывает только полученные публикации. Если большое окно упирается в предел, более короткие интервалы могут организовать дальнейшую работу, но такое разделение не доказывает полноты. Сохраните фактический ответ до продвижения локальной контрольной точки по страницам.
Проверьте фактический состав каждого окна
Читайте relation вместе с total: eq означает точный итог запроса, gte — нижнюю границу, unknown — отсутствие надежного итога, возможно null. Точный счетчик не доказывает загрузки всех совпадений. Сохраняйте сообщенный тип итога для каждого окна, не превращая неизвестное значение в ноль. В отчете укажите реально проанализированные записи и объясните исключения, повторяющиеся идентификаторы и отсутствующий текст, не заявляя о полном календаре обсуждений оборудования.
Сохраняйте исходные ответы, параметры, время получения и версию правил разметки. Повторная обработка этих файлов может поддержать воспроизводимость вашего локального анализа; удаленный повтор не обещает тех же публикаций. Ответы плоские. Если parent_id либо link_id присутствуют, клиент может связать полученные объекты, но полное дерево обсуждения не гарантируется. Эти поля не являются фильтрами запроса. Не достраивайте ненаблюдавшиеся комментарии или отсутствующие связи по предположению.
Одна успешная проба, страница или повтор стоят один кредит, включая пустой результат. Обрабатывайте 400 как неверные параметры, 401 как проблему ключа, 402 как нехватку кредитов, 429 как ограничение частоты. Некорректные запросы не списывают баланс; сбой вышестоящего сервиса возвращает резерв. Потеря ответа клиентом может последовать за платным успехом. /v1/status подтверждает лишь статическое описание и ответ HTTP-приложения. Сверьтесь с документацией, тарифами и страницей ключа перед продолжением сбора и описывайте окна как ограниченные полученные выборки.