본문 바로가기

Naver Search AD

Chapter6 - 기능 구현

안녕하세요 개발자 정씨입니다.

거두절미하고 바로 기능 부분 살펴보도록 하겠습니다

 

1. adgroup id 획득

  • CUSTOMER_ID에 등록된 campaign 리스트를 획득한 뒤, setting.py에서 설정한 campaign의 id값을 색출합니다.
  • 획득한 campaign id를 이용하여, adgroup 리스트를 획득한 뒤, setting.py에서 설정한 adgroup의 id값을 색출합니다.
def get_adgroup_id() :
    uri = '/ncc/campaigns'
    method = 'GET'
    r = requests.get(setting.BASE_URL + uri, headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID))
    for i in r.json():
        if(i['name'] == setting.campaign_name) :
            campaign_id = i['nccCampaignId']

    uri = '/ncc/adgroups'
    method = 'GET'
    r = requests.get(setting.BASE_URL + uri, params={'nccCampaignId': campaign_id} ,headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID))
    for i in r.json():
        if(i['name'] == setting.adgroup_name) :
            adgroup_id = i['nccAdgroupId']
            
    return adgroup_id

 

 

2. keyword id 획득

  • setting.py에서 설정한 keyword값을 기반으로 id값을 획득합니다. (파워링크에서 사용)
def get_keyword_id() :
    uri = '/ncc/keywords'
    method = 'GET'
    r = requests.get(setting.BASE_URL + uri, params={'nccAdgroupId': get_adgroup_id()} ,headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID))
    for i in r.json():
        if(i['keyword'] == setting.modify_word) :
            keyword_id = i['nccKeywordId']  
    return keyword_id

 

 

3. ad id 획득

  • setting.py에서 설정한 ad값을 기반으로 id값을 획득합니다. (쇼핑검색에서 사용)
def get_ad_id() :
    uri = '/ncc/ads'
    method = 'GET'
    r = requests.get(setting.BASE_URL + uri, params={'nccAdgroupId': get_adgroup_id()} ,headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID))
    for i in r.json():
        if(i['referenceData']['id'] == setting.modify_word) :
            ad_id = i['nccAdId']
    return ad_id

 

 

4. 금액 값 획득

  • 2,3번에서 알아낸 keyword id와 ad id로 현재 금액 설정을 확인함
def get_amount_by_keyword_id() :
    uri = '/ncc/keywords'
    method = 'GET'
    r = requests.get(setting.BASE_URL + uri, params={'nccAdgroupId': get_adgroup_id()} ,headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID)
    for i in r.json():
        if(i['keyword'] == setting.modify_word) :
            amount = i['bidAmt']
    return amount

def get_amount_by_ad_id() :
    uri = '/ncc/ads'
    method = 'GET'
    r = requests.get(setting.BASE_URL + uri, params={'nccAdgroupId': get_adgroup_id()} ,headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID))
    for i in r.json():
        if(i['referenceData']['id'] == setting.modify_word) :
            amount = i['adAttr']['bidAmt']
    return amount

 

 

  • 위의 함수들을 토대로 크롤링으로 서치한 등수와 setting.py에서 세팅한 등수를 비교하여 금액을 변경하는 함수는 아래와 같습니다.
def change_amount(cmd) :
    if(cmd == "up") :
        if(setting.adtype == '쇼핑검색') :
            print("초기금액: " + str(get_amount_by_ad_id()) + "원")

            uri = '/ncc/ads/' + get_ad_id()
            method = 'GET'
            r = requests.get(setting.BASE_URL + uri, headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID))

            retrieved_adkeyword = r.json()

            uri = '/ncc/ads'
            method = 'PUT'
            retrieved_adkeyword['adAttr']['bidAmt'] = get_amount_by_ad_id() + setting.amount_unit
            r = requests.put(setting.BASE_URL + uri, params={'fields': 'adAttr'}, json=[retrieved_adkeyword], headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID))

            print("변경된 금액: " + str(get_amount_by_ad_id()) + "원")

        elif(setting.adtype == '파워링크') :
            print("초기금액: " + str(get_amount_by_keyword_id()) + "원")

            uri = '/ncc/keywords/' + get_keyword_id()
            method = 'GET'
            r = requests.get(setting.BASE_URL + uri, headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID))

            retrieved_adkeyword = r.json()

            uri = '/ncc/keywords'
            method = 'PUT'

            retrieved_adkeyword['bidAmt'] = get_amount_by_keyword_id() + setting.amount_unit
            retrieved_adkeyword['useGroupBidAmt'] = 0
            r = requests.put(setting.BASE_URL + uri, params={'fields': 'bidAmt'}, json=[retrieved_adkeyword], headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID))

            print("변경된 금액: " + str(get_amount_by_keyword_id()) + "원")

    if(cmd == "down") :
        if(setting.adtype == '쇼핑검색') :
            print("초기금액: " + str(get_amount_by_ad_id()) + "원")

            uri = '/ncc/ads/' + get_ad_id()
            method = 'GET'
            r = requests.get(setting.BASE_URL + uri, headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID))

            retrieved_adkeyword = r.json()

            uri = '/ncc/ads'
            method = 'PUT'
            retrieved_adkeyword['adAttr']['bidAmt'] = get_amount_by_ad_id() - setting.amount_unit
            r = requests.put(setting.BASE_URL + uri, params={'fields': 'adAttr'}, json=[retrieved_adkeyword], headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID))

            print("변경된 금액: " + str(get_amount_by_ad_id()) + "원")

        elif(setting.adtype == '파워링크') :
            print("초기금액: " + str(get_amount_by_keyword_id()) + "원")

            uri = '/ncc/keywords/' + get_keyword_id()
            method = 'GET'
            r = requests.get(setting.BASE_URL + uri, headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID))

            retrieved_adkeyword = r.json()

            uri = '/ncc/keywords'
            method = 'PUT'

            retrieved_adkeyword['bidAmt'] = get_amount_by_keyword_id() - setting.amount_unit
            retrieved_adkeyword['useGroupBidAmt'] = 0
            r = requests.put(setting.BASE_URL + uri, params={'fields': 'bidAmt'}, json=[retrieved_adkeyword], headers=get_header(method, uri, setting.API_KEY, setting.SECRET_KEY, setting.CUSTOMER_ID))

            print("변경된 금액: " + str(get_amount_by_keyword_id()) + "원")

 

 

이상으로 모든 기능 구현을 마쳤습니다.

질문은 언제나 환영입니다. 감사합니다.