파이썬으로 제작한 워드프레스에 쿠팡 파트너스 포스팅을 자동으로 해주는 프로그램의 소스 코드 입니다.
저도 프로그램(코딩)을 잘 알지는 못하고, 인터넷을 찾아보며 만든 프로그램이기에 좋은 프로그램인지는 잘 모르겠습니다.
쿠팡 파트너스 자동 포스팅 장점
하지만 쿠팡 파트너스를 수작업으로 포스팅 하는게 아니고, 파이썬을 이용해서 자동으로 포스팅 해주기 때문에 많은 시간을 절약할 수 있습니다.
잠자는 시간에도 포스팅 할 수 있고, 24시간 포스팅도 가능합니다.
프로그램은 크게 3부분으로 구성되어 있습니다.
- 쿠팡 파트너스에서 정보를 받아오고
- 받아온 정보를 바탕으로 워드프레스에 자동으로 글을 작성하고
- 자동으로 태그를 넣고 포스팅 합니다.
파이썬 설치 및 워드프레스 설치 방법은 지난번 작성했던 포스팅을 참고 하시면 됩니다.
쿠팡 파트너스 자동 포스팅 소스 코드
1. 파이썬에 사용할 모듈을 임포트 합니다.
import datetime
import hmac
import hashlib
import os
import time
import requests
import json
import urllib.request
import secrets
from urllib.parse import urlencode
from wordpress_xmlrpc import Client
from wordpress_xmlrpc import WordPressPost
from wordpress_xmlrpc.methods import posts
2. 쿠팡 파트너스 기능 클래스를 만듭니다.
class cupangMgr:
DOMAIN = "https://api-gateway.coupang.com"
# HMAC 인증정보 생성
def generateHmac(self, method, url, secretKey, accessKey):
path, *query = url.split("?")
os.environ["TZ"] = "GMT+0"
datetime = time.strftime('%y%m%d') + 'T' + time.strftime('%H%M%S') + '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)
3. 쿠팡 파트너스에서 제품 정보를 가져옵니다.
def get_productsdata(self, request_method, authorization, keyword, limit):
URL = "/v2/providers/affiliate_open_api/apis/openapi/products/search?keyword=" + urllib.parse.quote(
keyword) + "&limit=" + str(limit)
url = "{}{}".format(self.DOMAIN, URL)
response = requests.request(method=request_method, url=url, headers={"Authorization": authorization,
"Content-Type": "application/json;charset=UTF-8"})
retdata = json.dumps(response.json(), indent=4).encode('utf-8')
jsondata = json.loads(retdata)
data = jsondata['data']
productdata = data['productData']
return productdata
4. 변수를 설정합니다.
if __name__ == '__main__': method = 'GET' # 정보를 얻는것이기 때문에 GET keyword = ' ' # 검색할 키워드, 쿠팡에서 검색하는거랑 결과가 동일합니다. limit =30 # 몇개의 정보를 가져올지 설정. 상위부터 가져옵니다. access_key = ' ' # API access key secret_key = ' ' # API secret key URL = "/v2/providers/affiliate_open_api/apis/openapi/products/search?keyword=" + urllib.parse.quote( keyword) + "&limit=" + str(limit) test = cupangMgr() authorization = test.generateHmac(method, URL, secret_key, access_key) # HMAC 생성 productdata = test.get_productsdata(method, authorization, keyword, limit) # API 호출 productCount = len(productdata) i = 0 while i < productCount: print(productdata[i]['productId']) print(productdata[i]['productName']) print(productdata[i]['productPrice']) print(productdata[i]['productImage']) print(productdata[i]['productUrl']) print(productdata[i]['keyword']) print(productdata[i]['rank']) print(productdata[i]['isRocket']) print(productdata[i]['isFreeShipping']) print(datetime.datetime.now()) strProductId = str((productdata[i]['productId'])) strProductName = (productdata[i]['productName']) strProductPrice = str((productdata[i]['productPrice'])) strProductImage = (productdata[i]['productImage']) strProductUrl = (productdata[i]['productUrl']) strKeyword = (productdata[i]['keyword']) strRank = str((productdata[i]['rank'])) strIsRocket = bool(productdata[i]['isRocket']) strIsFreeShipping = bool(productdata[i]['isFreeShipping']) if strIsRocket == True: strIFRocket = '로켓배송 가능 상품이라 로켓배송 지역이면, 로켓배송으로 빠르게 배송 받아보실 수 있습니다.' else: strIFRocket = '로켓배송 가능한지는 아래 배송도착일 확인 링크에서 확인 가능합니다.' if strIsFreeShipping == True: strIFFreeship = '배송비는 무료이며,' else: strIFFreeship = '배송비는 아래 배송도착일 확인 링크에서 확인 가능하며,'
5. 워드프레스 포스팅을 위해 제목과 본문을 작성합니다.
client = Client("https://워드프레스주소/xmlrpc.php", "워드프레스ID", "워드프레스비밀번호") postx = WordPressPost() postx.title = '가성비 노트북 ' + strProductName postx.slug = strProductName postx.content = '''<p><span style="font-family: Helvetica;">오늘 소개해드릴 상품은 가성비 좋은 노트북 '''+strProductName+''' 입니다.</span></p> <p><span style="font-family: Helvetica;">이 상품은 쿠팡에서 '''+strKeyword+''' 조회시 추천 순위 '''+strRank+'''위 입니다.</span></p> <p><span style="font-family: Helvetica;">'''+strKeyword+''' 인기순위, '''+strKeyword+''' 가격정보는 아래 본문에서 확인 가능합니다.</span></p> <p><span style="font-family: Helvetica; color: rgb(40, 50, 78);">(업데이트 날짜 : '''+time.strftime('%y-%m-%d')+''')</span></p> <p><span style="font-family: Helvetica;">상품별 추천순위, 판매가격, 배송비, 로켓배송 가능여부, 상품사진을 확인 하실 수 있습니다.</span></p> <p><span style="font-family: Helvetica;"><br></span></p> <h1><span style="font-family: Helvetica; font-size: 19px; color: rgb(209, 72, 65);">'''+strProductName+'''</span></h1> <p><span style="font-family: Helvetica;"><br></span></p> <h2><span style="font-family: Helvetica; font-size: 19px; color: rgb(243, 121, 52);">▶ 판매가격</span></h2> <p><span style="font-family: Helvetica;">가격은 <span style="color: rgb(44, 130, 201);">'''+strProductPrice+'''원</span> 입니다.</span></p> <p><span style="font-family: Helvetica;">(아래 링크에서 현재 가격을 확인 하세요.)</span></p> <p><a href="'''+strProductUrl+'''" rel="noopener noreferrer" target="_blank"><span style="font-family: Helvetica;"><strong>★ 현재가격 보기 ★</strong></span></a></p> <p><span style="font-family: Helvetica;"><br></span></p> <h2><span style="font-family: Helvetica; font-size: 19px; color: rgb(243, 121, 52);">▶ 배송비, 로켓배송</span></h2> <p><span style="font-family: Helvetica;">'''+strIFFreeship+''',</span></p> <p><span style="font-family: Helvetica;">'''+strIFRocket+'''</span></p> <p><span style="font-family: Helvetica;">(배송비, 로켓배송 가능 여부가 변동될 수 있으니 아래 링크에서 확인하세요.)</span></p> <p><a href="'''+strProductUrl+'''" rel="noopener noreferrer" target="_blank"><span style="font-family: Helvetica;"><strong>★ 배송비, 로켓배송 보기 ★</strong></span></a></p> <p><span style="font-family: Helvetica;"><br></span></p> <h2><span style="font-family: Helvetica; font-size: 19px; color: rgb(243, 121, 52);">▶ 상품 상세정보, 구매후기</span></h2> <p><span style="font-family: Helvetica;">추가적인 상품정보, 상품사진 및 구매후기는 아래 상품정보 상세보기에서 확인 가능합니다.</span></p> <p><a href="'''+strProductUrl+'''" rel="noopener noreferrer" target="_blank"><span style="font-family: Helvetica;"><strong>★ 상품정보 상세보기 ★</strong></span></a></p> <p><span style="font-family: Helvetica;"><br></span></p> <h2><span style="font-family: Helvetica; font-size: 19px; color: rgb(243, 121, 52);">▶ 상품사진</span></h2> <p><img src="'''+strProductImage+'''"></p> <p><br></p>''' postx.terms_names = { 'post_tag': [strKeyword+' 추천',strKeyword+' 순위',strKeyword+' 비교',strKeyword+' 가격비교'], 'category': ['Coupangs'] } postx.post_status = 'publish' client.call(posts.NewPost(postx)) time.sleep(10) i = i + 1
포스팅 본문 이미지
위와 같이 포스팅 하면 대략 아래와 같은 화면으로 자동 포스팅 됩니다.
본문의 내용을 응용하면 한 포스팅에 순위별로도 자동 포스팅이 가능합니다.
쿠팡 파트너스 자동 포스팅 결과
위와 같이 파이썬으로 스크립트를 작성 후 실행 하면 워드프레스에 쿠팡 파트너스 글이 자동으로 포스팅 됩니다.
몇개의 상품을 가져올지 정하고, postx.content의 내용이 워드프레스의 본문 이므로 본인에 맞게 내용을 바꾸시면 됩니다.
그리고 time.sleep에 포스팅 시간 간격을 정해주시면 됩니다.
이렇게 자동 포스팅을 이용해서 일정 부분 수익이 나는 부분을 확인했습니다.
필요하시면 위 소스 코드를 참고 하셔서 도움이 되었으면 합니다.
좋은 정보 감사합니다.
공개해준 소스로 작성해보았는데 api 호출을 못하고 있어요.
무엇이 잘못 되었을까요?
productdata = test.get_productsdata(method, authorization, keyword, limit) # API 호출
AttributeError: ‘cupangMgr’ object has no attribute ‘get_productsdata’
안녕하세요 좋은 정보 감사합니다
저도 위에분과 같은 오류메세지가 뜨는데 어떻게 하면 되나요?ㅠㅠ
코드 공개해주셔서 감사합니다.
잘 사용할께요~ 전 아래처럼 에러메시지가 나오는데요~
authorization = test.generateHmac(method, URL, secret_key, access_key) # HMAC 생성
AttributeError: ‘cupangMgr’ object has no attribute ‘generateHmac’
어느 부분을 수정하면 될까요?
선생님 안녕하세요. 코드를 쭉 봤는데 어떤 부분을 수정하면 한 본문안에 여러 제품 순위를 넣을 수 있을까요?
안녕하세요. 질문을 제가 정확히 이해 못했는데 어느 부분에서 막히는건가요?
본문은 5번의 워드프레스에 작성하는 코드에 따라 달라집니다.
위 글에 “본문의 내용을 응용하면 한 포스팅에 순위별로도 자동 포스팅이 가능합니다.” 라고 적어주셨는데, 어떤 함수를 건드려야 한 포스팅에 여러 제품을 넣을 수 있을지 모르겠어서 질문 남깁니다ㅠㅠ 현재는 한 포스팅에 하나만 포스트가 되어서요!
4번에 나오는 변수값을 다르게 주고 5번에 ”+strProductImage1+”, ”+strProductImage2+”” 이런식으로 넣어야 할것같다고 생각은 드는데 정확히 어떻게 구현해야할지 막막해서 문의 남겨봅니다.
포스팅 내용이 되는 html을 반복적으로 사용해서 1위부터 10위까지의 컨텐츠를 만들면 됩니다.
카톡 cleanadm 으로 톡하나만 부탁드립니다~
프로그램 문의하려구요