soomgogather.naver.masterreport의 소스 코드
from marshmallow import Schema, ValidationError, fields, validate
from ._searchad import BaseSearchAD
[문서]class MasterReport(BaseSearchAD):
"""Naver SearchAd API MasterReport
Naver SearchAd API에서 발급받은 api_key, secret_key, customer_id를 사용하여 MasterReport 클래스 객체를 생성한다.
생성한 MasterReport 객체로 마스터 기능을 이용하여 종류별 광고 정보 일괄 다운로드(마스터 데이터)하고 각 광고 정보를 확인할 수 있다.
광고 정보 일괄 다운로드는 특정 시점을 기준으로 광고 계정에 등록된 모든 광고 정보를 다운로드하는 기능으로 상시로 변경되는 정보는 제공되지 않으며 사용자가 등록한 광고 정보만 제공된다.
다운로드된 광고 정보는 각각 종류별 정보만 담고있다.
* 광고 정보 일괄 다운로드(마스터 기능 이용하기)의 최대 제공 기간은 '최근 2년(730일)'이다.
* 데이터가 존재하지 않는 경우 다운로드 링크는 제공되지 않는다.
* 일부 항목은 변경 분 데이터를 제공하지 않는다.
* 릴리즈 노트 참고 - (http://naver.github.io/searchad-apidoc/#/release-notes)
https://naver.github.io/searchad-apidoc/#/tags/MasterReport
사용 예시) 특정 시점을 기준으로 광고 계정에 광고 정보에 대한 마스터리포트를 생성하고, 등록된 모든 광고 정보를 다운로드 할 수 있다.
.. code-block:: python
>>> from soomgogather.naver import MasterReport
>>> master_report = MasterReport(api_key='_', secret_key='_', customer_id='_')
>>> r = master_report.create(params={
... 'item': 'Media',
... })
>>> if r.status_code == 204:
... print("Media 광고 정보가 생성되었습니다.")
>>> r = master_report.list()
>>> if r.status_code == 200:
... print(r.json())
"""
default_path = '/master-reports' # Master Report에 관련된 요청을 보내기 위한 기본 uri
class _MasterReportSchema(Schema):
item = fields.Str(
attribute='item',
required=True,
)
from_time = fields.Str(attribute="fromTime")
def _get_params(self, params):
try:
return self._MasterReportSchema().load(params)
except ValidationError as err:
raise ValueError(f"incorrect parameters: {err}")
[문서] def list(self):
"""요청을 통해 생성된 광고 정보에 대한 작업 목록(최대 100개)을 가져온다."""
return self.call('GET', self.default_path)
[문서] def create(self, params):
"""필요한 항목을 선택하여 마스터 리포트를 요청하고, 해당 항목에 대한 광고 정보 리포트를 생성한다.
https://gist.github.com/naver-searchad/186ca42e1e8596b0e3dcf74e3a86c04f
:param params: 쿼리 스트링을 구성하기 위한 매개변수, item은 필수
:type params: dict
**params:**
- *item* (`str`) : 제공되는 광고 정보 목록 (네이버에서 제공하는 항목 중에 선택)
- *from_time* (`str, optional`) - 특정 시점 (ISO 8601 UTC, 2021-12-01T00:00:00Z)
"""
return self.call('POST', self.default_path, params=self._get_params(params))
[문서] def get(self, job_id):
"""특정 job_id를 사용해서 해당 마스터 리포트의 작업 상세 정보를 가져온다.
:param job_id: 유효한 마스터 리포트 Job id
:type job_id: str
"""
return self.call('GET', f'{self.default_path}/{job_id}')
[문서] def delete_all(self):
"""모든 마스터 리포트 작업을 삭제한다."""
return self.call('DELETE', self.default_path)
[문서] def delete(self, job_id):
"""해당 마스터 리포트를 job id로 삭제한다.
:param job_id: 유효한 마스터 리포트 Job id
:type job_id: str
"""
return self.call('DELETE', f'{self.default_path}/{job_id}')