본문 바로가기
Cito 일/아무나 하는 파이썬

쿠팡파트너스 - 트위터 너무 쉽게 자동 트윗하기

by Cito citopes 2020. 8. 18.
반응형

2020/08/18 - [Cito 일/아무나 하는 파이썬] - 쿠팡파트너스 트위터에 공짜로 트윗하기 아무나 할 수 있다.

 

쿠팡파트너스 트위터에 공짜로 트윗하기 아무나 할 수 있다.

2020/08/11 - [Cito 일/아무나 하는 파이썬] - 쿠팡파트너스 트위터에 공짜로 트윗하자. 쿠팡파트너스 트위터에 공짜로 트윗하자. 이전 글에서 말한것 처럼 나름 신박한 프로그램을 공짜로 얻은 기분�

www.citopes.com

지난번에 이어서 이번에는 본분에 해당하는 함수 부분을 보겠습니다.
전체 코드를 보면 

쿠팡파트너스의 상품을 불러오는 main() 와 그 안에 인증을 위한 generateHmac() 함수, 트위터에 사용할 이미지를 저장하는 tweet_image()함수가있어요.

그리고, main() 함수를 실행해주는 부분이 있습니다..

def main():
    REQUEST_METHOD = "GET"
    DOMAIN = "https://api-gateway.coupang.com"


    URL = '/v2/providers/affiliate_open_api/apis/openapi/products/bestcategories/'+ str(COUPANG_TARGET_CATEGORY_ID) + \
          '?limit=' + str(COUPANG_PER_ITEM_LIMIT)

    # Replace with your own ACCESS_KEY and SECRET_KEY
    ACCESS_KEY = COUPANG_API_ACCESS_KEY
    SECRET_KEY = COUPANG_API_SECRET_KEY


    def generateHmac(method, url, secretKey, accessKey):
        path, *query = url.split("?")
        os.environ["TZ"] = "GMT+0"

        dateGMT = strftime('%y%m%d', gmtime())
        timeGMT = strftime('%H%M%S', gmtime())
        datetime = dateGMT + 'T' + timeGMT + 'Z'

        message = datetime + method + path + (query[0] if query else "")

        signature = hmac.new(bytes(secretKey, "utf-8"),
                             message.encode("utf-8"),
                             hashlib.sha256).hexdigest()

        return "CEA algorithm=HmacSHA256, access-key={}, signed-date={}, signature={}"\
            .format(accessKey, datetime, signature)


    authorization = generateHmac(REQUEST_METHOD, URL, SECRET_KEY, ACCESS_KEY)
    url = "{}{}".format(DOMAIN, URL)
    resposne = requests.request(method=REQUEST_METHOD, url=url,
                                headers={
                                    "Authorization": authorization,
                                    "Content-Type": "application/json"
                                },
                                )

    result = resposne.json()['data']

    random_choice_int = random.randint(1, len(result))

    random_choice_item = result[random_choice_int]


    auth = tweepy.OAuthHandler(TWITTER_API_CONSUMER_ACCESS_KEY, TWITTER_API_CONSUMER_SECRET_KEY)
    auth.set_access_token(TWITTER_API_ACCESS_TOKEN, TWITTER_API_ACCESS_TOKEN_SECRET)

    api = tweepy.API(auth)

    def tweet_image(url, message):
        filename = 'temp.jpg'
        request = requests.get(url, stream=True)
        if request.status_code == 200:
            with open(filename, 'wb') as image:
                for chunk in request:
                    image.write(chunk)

            api.update_with_media(filename, status=message)
            os.remove(filename)
        else:
            print("Unable to download image")

    tweet_image(url=random_choice_item['productImage'],
                message=random_choice_item['productName'] + " " + random_choice_item['productUrl'])

    print(datetime.now())
    print(random_choice_item['productId'])
    print(random_choice_item['productName'])
    print(random_choice_item['productImage'])
    print(random_choice_item['productUrl'])
    print("\n")

한줄씩 보면.... 많네요... 

def main():

main이라는 이름의 함수를 정의한거에요.

    REQUEST_METHOD = "GET"
    DOMAIN = "https://api-gateway.coupang.com"


    URL = '/v2/providers/affiliate_open_api/apis/openapi/products/bestcategories/'+ str(COUPANG_TARGET_CATEGORY_ID) + \
          '?limit=' + str(COUPANG_PER_ITEM_LIMIT)

    # Replace with your own ACCESS_KEY and SECRET_KEY
    ACCESS_KEY = COUPANG_API_ACCESS_KEY
    SECRET_KEY = COUPANG_API_SECRET_KEY

이 부분은 카테고리 목록상품 가져오는 쿠팡 API를 사용하기 위한 부분이네요
REQUEST_METHOD = "GET" 결과를 GET방식으로 받아오겠다.
DOMAIN 쿠팡파트너스 API를 요청할 URL
URL 쿠팡파트너스 API를 요청할 URL로 위에 DOMAIN과 붙여서 사용
URL의 뒤쪽에 보면 COUPANG_TARGET_CATEGORY_ID, COUPANG_PER_ITEM_LIMIT 두개의 값이 입력되는것을 볼 수 있는데, 지난 번에 정의 내린 그 부분의 값들이 되겠다. 카테고리코드 1014와 상품갯수 100개가 그것이다.

ACCESS_KEY, SECRET_KEY 는 지난번에 정의 한 쿠팡파트너스 API키를 받아서 값으로 한다.

지난번에 뜬금없이 정의한 값들이 여기에 이렇게 사용되는것이었다.
참 쉽죠?

댓글2