안녕하세요. 네이버 스마트스토어와 연동된 커머스 api와 관련하여 문의가 있어 글을 올립니다.
네이버 스마트스토어에 엑셀을 통행 상품을 대량을 등록하고, 이후에 수정을 하려는데,
상품수정도 엑셀을 통해서 많은 부분을 수정할 수 있지만,
상품상세페이지는 일괄수정하지 못하게 되어있어, 일일이 수작업을 통해 작업을 해야했습니다.
그러다가, 커머스 api 가 있다는 걸 알고, api 를 통한 수정이 가능하지 파이썬을 통해 코딩을 했는데요.
1200개정도를 일괄로 변경에 성공하긴 했는데, 제가 하는 방식이 맞는지 궁금해서 글을 올립니다.
1. api 토큰발행
2. 상품조회 api 를 통해 상품 정보 페이지 모두 다운로드
3. 다운로드한 페이지를 json 파일로 변환 저장
4. 위 다운로드한 json 파일 중, 상품상세페이지 부분을, 파이썬을 통해, 일괄변경 후, 저장.
5. 상품수정 api를 통해 위 수정한 json 파일을 업로드,
=> 다만 초당 쿼리가 2를 넘으면 안되고, 쿼터별로 제한이 있다고 하여(네이버 커머스 api 담당자 깃허브 댓글 확인),
=> 아래 코드를 통해, 초당 10쿼리를 하돼, 쿼터를 기반으로 하여, 대기시간 결정하여, 쿼리 실행(아래 코드로 함)
이런 방식으로 성공하긴 했는데, 너무 막고 품는 식으로 하는 건 아닌지 궁금해서 글을 올립니다.
방식이 맞는지 알려주시면, 로직을 수정해보고 싶습니다.
# 응답 받기
res = conn.getresponse()
data = res.read()
# 응답 출력
print(data.decode("utf-8"))
# 응답 헤더에서 제한 관련 정보 추출
replenish_rate = res.getheader('GNCP-GW-RateLimit-Replenish-Rate')
remaining_quota = res.getheader('GNCP-GW-RateLimit-Remaining')
# 제한 정보 출력
print(f"Product No: {product_no}")
print(f"Replenish Rate (초당 처리 가능한 총 사용량): {replenish_rate}")
print(f"Remaining Quota (남아있는 기본 쿼터): {remaining_quota}\n")
# 남은 쿼터를 기반으로 대기 시간 결정
if remaining_quota and int(remaining_quota) <= 1:
time.sleep(1) # 대기 시간 조정 가능
else:
time.sleep(0.1) # 초당 최대 요청에 맞춰 대기
제 경우는 요청함수(GET,POST,DEL등) 내부에 그냥 0.5 슬립을 무조건 줬어요.
오래된 글이라 보실지 모르겠지만
본인이 운영하는 스마트스토어도 상세페이지 추출은 안되게 막혀있다고 하는데
말씀하신 방법으로는 가능한건가요?
https://github.com/commerce-api-naver/commerce-api/discussions/1900
상세페이지에 이미지 100장 정도가 있는데,
그 중에서 특정 이미지를 커머스 API를 활용해 수정하려고 하는데 막혀서요 질문드립니다.