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

쿠팡파트너스 - 트위터 너무 쉽게 자동 트윗하기 (트위터 글쓰기 API 호출)

by citopes 2020. 8. 23.
반응형

2020/08/22 - [Cito 일/아무나 하는 파이썬] - 쿠팡파트너스 - 트위터 너무 쉽게 자동 트윗하기 (쿠팡파트너스 API 호출)

 

쿠팡파트너스 - 트위터 너무 쉽게 자동 트윗하기 (쿠팡파트너스 API 호출)

2020/08/22 - [Cito 일/아무나 하는 파이썬] - 쿠팡파트너스 - 트위터 너무 쉽게 자동 트윗하기 (쿠팡파트너스 인증) 쿠팡파트너스 - 트위터 너무 쉽게 자동 트윗하기 (쿠팡파트너스 인증) 2020/08/18 - [Cit

www.citopes.com

지난글에 쿠팡파트너스 API 호출하는 것까지 알아보았습니다.
이번엔 트위터 api 호출을 해봅시다. 아마도 오늘이 cp.py파일 리딩의 마지막일듯 하네요

    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'])

우선 tweepy 라이브러리를 통해서 API를 연결합니다.

    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)

가장 처음에 정의하고 입력한 트위터의 4가지의 값을 이용해서 tweepy라이브러리의 API() 함수를 호출하여 연결하는 부분입니다.

API에 연결이 된 상태에서 트위터에 업로드 할 쿠팡상품 이미지를 준비 합니다.

    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")

이미지를 준비할 함수 tweep_image() 입니다.
입력받은 변수는 url, message 입니다.
파일이름을 temp.jpg라고 정의한 변수 filename을 준비하고
입력받은값 url에 있는 정보를 받아서request에 담습니다.

request의 상태값 200 (정상)이면, image로 명명한 파일(temp.jpg)를 열어 그곳에 이미지를 입력(자장)합니다.

api를 통해서 이미지와 트윗할 메세지를 전송 한 후 저장했던 파일을 삭제 합니다.

또한, request의 상태값이 200이 아니라면 "Unable to download image" 라고 콘솔에 보여줍니다.

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

위에서 작성한 tweet_image 함수를 호출합니다.
전달할 정보는 이전에 랜덤으로 뽑아온 트위터 정보중 productImage값 (상품 이미지값)을 url로, 
상품명과 상품주소(쿠팡파트너스 개인 상품주소)를 조합한 트위터에 글쓰기 하는 내용을 message로 만들어서 보냅니다.

 

    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")

 전송한 값들을 콘솔에 print해서 어떤 상품들이 정송 되었는지를 확인해 봅니다.

if __name__ == '__main__':
    while True:
        main()
        sleep(DEFAULT_SLEEP_TIME)

main() 함수를 실행시킵니다. whle True: 조건을 줌으로써 무한루프 실행을 시킵니다.
단. sleep(DEFAULT_SLEET_TIME)을 통해서 지난번에 정의한 슬립타임 (3시간)간격으로 반복해서 실행하도록 한다.

 

이것으로 무한히 영원하게 쿠팡파트너스의 상품을 트위터 계정에 계속적으로 발행하는 방법에 대해서 기본적인 소스 리딩을 해 보았다.

이것으로 처음 파이썬을 접하게 되었고, 이 소스의 불편함을 해소하고자 구글링을 통해서 약간의 수정을 가했고, 지금은 만족하면서 사용하고 있다.

다음번엔 이 소스를 어떻게 수정하였는지에 대해서 보겠습니다.

반응형

댓글