soomgogather.naver.statreport의 소스 코드

from marshmallow import Schema, ValidationError, fields, validate

from ._searchad import BaseSearchAD


[문서]class StatReport(BaseSearchAD): """Naver SearchAd API StatReport Naver SearchAd API에서 발급받은 api_key, secret_key, customer_id를 사용하여 StatReport 클래스 객체를 생성한다. 생성한 StatReport 객체로 대용량 보고서 기능을 이용하여 특정일에 발생한 대용량 보고서 다운로드(Stat 데이터)하고 광고 효과 보고서를 확인할 수 있다. 대용량 보고서 다운로드는 계정 단위로 특정일에 발생한 광고 효과 보고서를 다운로드하는 기능으로 일 단위로만 신청 가능하며, 기간별 조회 기능은 제공되지 않는다. 다운로드 항목에서 필요한 보고서 종류를 선택하고 생성 요청하여 사용할 수 있다. * 대용량 보고서의 최대 제공 기간은 최근 1년이다. 유형에 따라 기간이 상이하다. https://naver.github.io/searchad-apidoc/#/tags/StatReport 사용 예시) 계정단위로 특정일에 발생한 광고 효과 보고서(Stat 리포트)를 생성하고, 등록된 모든 광고 효과 보고서를 다운로드 할 수 있다. .. code-block:: python >>> from soomgogather.naver import StatReport >>> stat_report = StatReport(api_key='_', secret_key='_', customer_id='_') >>> r = stat_report.create(params={ ... 'report_type': 'AD_CONVERSION', ... 'report_date': '20211201', ... }) >>> if r.status_code == 204: ... print("AD_CONVERSION 광고 효과 보고서가 생성되었습니다.") >>> r = stat_report.list() >>> if r.status_code == 200: ... print(r.json()) """ default_path = '/stat-reports' # Stat Report에 관련된 요청을 보내기 위한 기본 uri class _StatReportSchema(Schema): report_type = fields.Str( attribute='reportTp', required=True, ) report_date = fields.Str( attribute="statDt", required=True, ) def _get_params(self, params): try: return self._StatReportSchema().load(params) except ValidationError as err: raise ValueError(f"incorrect parameters: {err}")
[문서] def list(self): """모든 등록된 보고서 작업을 검색한다.""" return self.call('GET', self.default_path)
[문서] def create(self, params): """필요한 항목을 선택하여 대용량 보고서(Stat Report)를 요청하고, 특정일에 발생한 광고 효과 보고서를 생성한다. https://naver.github.io/searchad-apidoc/#/operations/POST/~2Fstat-reports :param params: 쿼리 스트링을 구성하기 위한 매개변수 :type params: dict **params:** - *reportTp* (`str`) : 제공되는 광고 성과 목록 (네이버에서 제공하는 항목 중에 선택) - *statDt* (`str`) - 특정일 (ISO 8601(UTC): 2021-12-01T00:00:00Z, YYYYMMDD(KST): 20211201) """ return self.call('POST', self.default_path, params=self._get_params(params))
[문서] def get(self, report_job_id): """특정 Report Job(보고서 작업)을 검색한다. :param report_job_id: 유효한 Report Job ID :type report_job_id: str """ return self.call('GET', f'{self.default_path}/{report_job_id}')
[문서] def delete_all(self): """모든 Report Job들을 삭제한다.""" return self.call('DELETE', self.default_path)
[문서] def delete(self, report_job_id): """해당 Report Job을 삭제한다. :param report_job_id: 유효한 Report Job ID :type report_job_id: str """ return self.call('DELETE', f'{self.default_path}/{report_job_id}')