Naipy는 네이버 API를 쉽게 사용할 수 있도록 만든 파이썬 래퍼 라이브러리입니다.
- 동기/비동기 모두 지원 - 상황에 맞게 선택해서 사용
- 9가지 검색 API - 이미지, 블로그, 도서, 백과사전 등
번역 기능 - 언어감지 및 다중언어 번역 지원(Papago API 서비스 종료 2024-02-29)- 타입 안정성 - 완벽한 타입 힌팅으로 IDE 자동완성 지원
- 최신 Python - Python 3.10+ 표준 준수
- 포괄적 문서 - 명확한 문서화와 예제 제공
pip install naipy또는 최신 개발 버전을 사용하려면:
pip install git+https://github.com/d3vksy/Naipy.gitfrom naipy import sync
# API 키 없이 사용 가능 (샘플키 사용)
search = sync.Search()
# 이미지 검색
result = search.image("강아지")
print(result.title)
print(result.link)
print(result.thumbnail)
# 블로그 검색
blog_result = search.blog("파이썬 튜토리얼")
print(blog_result.bloggername)
print(blog_result.postdate)import asyncio
from naipy import client
async def main():
search = client.Search()
result = await search.image("고양이")
print(result.title)
print(result.link)
asyncio.run(main())프로덕션 환경에서는 반드시 본인의 API 키를 발급받아 사용하세요.
- 네이버 개발자 센터 방문
- 애플리케이션 등록
- 발급받은 Client ID와 Client Secret 사용
from naipy import sync
search = sync.Search(
client_id="YOUR_CLIENT_ID",
client_secret="YOUR_CLIENT_SECRET"
)| 메서드 | 설명 |
|---|---|
search.image(query) |
이미지 검색 |
search.blog(query) |
블로그 검색 |
search.book(query) |
도서 검색 |
search.encyc(query) |
백과사전 검색 |
search.cafearticle(query) |
카페 글 검색 |
search.kin(query) |
네이버 지식인 검색 |
search.webkr(query) |
웹페이지 검색 |
search.shop(query) |
쇼핑 검색 |
search.doc(query) |
전문자료 검색 |
Papago API가 2024-02-29부로 종료되었습니다. 아래 메서드는 더 이상 동작하지 않습니다.
| 메서드 | 설명 |
|---|---|
translator.detect(text) |
언어 감지 |
translator.translation(text, target) |
텍스트 번역 |
translator.dual_translation(text, [targets]) |
다중 언어 번역 |
각 검색 결과는 전문화된 데이터 클래스로 반환됩니다:
title- 이미지 제목link- 이미지 링크thumbnail- 썸네일 URLsizeheight- 이미지 높이sizewidth- 이미지 너비
title- 포스트 제목link- 포스트 링크description- 포스트 설명bloggername- 블로거 이름bloggerlink- 블로거 링크postdate- 발행일
title- 상품명link- 상품 링크image- 상품 이미지lprice- 최저가hprice- 최고가mallName- 쇼핑몰명productId- 상품 IDbrand- 브랜드명
자세한 사항은 공식 문서를 참고하세요.
from naipy import sync
from naipy.error import (
NaipyException,
AuthenticationError,
PermissionError,
RateLimitError,
ValidationError,
)
try:
search = sync.Search()
result = search.image("test")
except AuthenticationError:
print("API 인증 실패")
except RateLimitError:
print("요청 한도 초과")
except ValidationError as e:
print(f"입력값 오류: {e}")
except NaipyException as e:
print(f"Naipy 오류: {e}")Papago API 종료로 인해 동작하지 않습니다.
import asyncio
from naipy import client
from naipy.error import RateLimitError
async def search_with_retry(query, max_retries=3):
search = client.Search()
for attempt in range(max_retries):
try:
return await search.image(query)
except RateLimitError:
if attempt < max_retries - 1:
wait_time = 2 ** attempt
print(f"{wait_time}초 대기 후 재시도...")
await asyncio.sleep(wait_time)
else:
raise
asyncio.run(search_with_retry("python"))이 프로젝트는 MIT 라이선스 하에서 배포됩니다. - LICENSE 파일 참고
버그 리포트, 기능 제안, PR은 언제나 환영합니다!