피드로 돌아가기
Lemmy Scraper: export posts and comments from any Fediverse community
Dev.toDev.to
Backend

Lemmy REST API의 비정형 페이지네이션을 해결한 고밀도 데이터 추출 설계

Lemmy Scraper: export posts and comments from any Fediverse community

Devil Scrapes2026년 6월 2일12intermediate

Context

ActivityPub 프로토콜 기반의 Lemmy 인스턴스들은 공개 REST API를 제공하나 Bulk Export 기능이 부재한 상황임. 특히 버전별 API 명세 변경과 서로 다른 페이지네이션 메커니즘으로 인해 안정적인 데이터 수집에 어려움이 존재함.

Technical Solution

  • Cursor-based와 Integer-based 페이지네이션이 혼재된 API 구조를 처리하는 개별 추상화 로직 구현
  • v0.19 버전에서 변경된 Sort Enum의 하위 호환성 문제를 Pydantic 기반의 사전 검증 로직으로 해결
  • Rate Limit 대응을 위한 Exponential Backoff 알고리즘 적용으로 요청 안정성 확보
  • Browser Fingerprint Rotation 기법을 통한 인스턴스별 차단 가능성 최소화
  • 관계형 데이터를 CSV 등으로 즉시 활용 가능하도록 Denormalized한 Flat JSON 구조로 변환하여 출력
  • Federated 모델 특성에 따른 post_ap_id 추적으로 원본 인스턴스 데이터 정합성 유지

- API 버전 변경에 따른 Enum 값 삭제 여부를 확인하는 사전 유효성 검사 단계 도입 - 서로 다른 페이지네이션 방식(Cursor vs Offset)이 공존할 경우 각각의 핸들러를 분리하여 설계 - 외부 API 수집 시 Rate Limit을 고려한 지수적 백오프 전략 적용 여부 검토 - 후처리를 최소화하기 위해 수집 단계에서 데이터를 Denormalization하여 저장하는 구조 고려

원문 읽기