일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 프로그래머스
- 탐욕알고리즘
- HTTP
- 개발
- 개발자
- 정렬알고리즘
- 네트워크
- 하루코딩
- 알고리즘코딩테스트
- HTTP상태
- Spring
- SQLP
- API
- SQL
- 자바
- Python
- 서버
- JQuery
- jsp
- 알고리즘
- ChatGPT
- java
- codingtest
- 파이썬
- 챗지피티
- 코딩테스트
- 백준
- 그리디알고리즘
- javascript
- SQLD
- Today
- Total
개발자's Life
[Python] ChatGPT 를 이용하여 워드프레스 게시글 자동업로드_키워드는 식품안전나라 API 사용 본문
[Python] ChatGPT 를 이용하여 워드프레스 게시글 자동업로드_키워드는 식품안전나라 API 사용
Rowen Jobs 2023. 8. 2. 06:53ChatGPT API 와 식품안전나라 API 를 이용하여 워드프레스 게시글 업로드 진행하는 법에 대해 적어보려 한다.
ChatGPT API 사용 방법에 대해서는 아래 글을 참고!
2023.07.31 - [Back-end/Python] - [Python] ChatGPT API 를 이용하여 ChatGPT 사용해보기
[Python] ChatGPT API 를 이용하여 ChatGPT 사용해보기
파이썬 코드로 ChatGPT API 연결하여 사용하는 코드는 자바에 비해 아주 단순하다. 자바 코드로 작성된 ChatGPT API 가 궁금할 경우 아래 링크를 확인하면 된다. 2023.03.11 - [Back-end/Java] - [JAVA] ChatGPT API
rowen.tistory.com
식품안전나라 Open API
https://www.foodsafetykorea.go.kr/api/openApiAplcInfo.do
데이터활용서비스
3 INFO-100 인증키가 유효하지 않습니다. 인증키가 없는 경우, 홈페이지에서 인증키를 신청하십시오.
www.foodsafetykorea.go.kr
그리고 참고해야 하는 부분이 워드프레스 자동 업로드 방법이고 아래 글을 참고!
2023.07.28 - [Back-end/Python] - [Python] 워드프레스 자동 게시글 올리는 코드 작성(자동화)
[Python] 워드프레스 자동 게시글 올리는 코드 작성(자동화)
워드프레스에 생각보다 아주 간단하게 자동 포스팅을 할 수 있었다. import requests from urllib.parse import urljoin from datetime import datetime # 변수셋팅 ##도메인 주소 WP_URL = 'https://yourDomain.com/' ##추가 사용
rowen.tistory.com
위 두가지 API 를 이용하여 파이썬 코드에 주석을 달아 적어본다.
import json
import requests
import openai
import urllib.request
from urllib.parse import urljoin
from datetime import datetime
# 변수셋팅
##도메인 주소
WP_URL = 'https://yourDomain.com/'
##추가 사용자이름
WP_USERNAME = 'userName'
##추가 된 사용자 편집 페이지에서 발급 받은 비밀번호
WP_PASSWORD = 'userPassword'
#publish(즉시발행), draft(임시저장)
status = 'draft'
##슬러그
slug = 'auto-slug'
##제목
title = '파이썬 자동포스팅'
##본문내용을 html 로 적으면 된다
content = 'h1 태그 : <h1>H1 태그 테스트</h1>'
##카테고리 아이디는 글 > 카테고리 > 카테고리 이름에 커서를 가져가면 카테고리 아이디값이 나온다.(tag_id로 되어 있다.)
category_id = [1]
##카테고리 아이디 찾는 방법과 동일
tag_id = [6]
## 변수 지정
user_ = WP_USERNAME
pass_ = WP_PASSWORD
# 이미지 다운로드 받을 파일 경로 지정
folder="/yourPath/"
# 식품안전나라에서 API 사용
# http://openapi.foodsafetykorea.go.kr/api/keyId/serviceId/dataType/startIdx/endIdx
url1 = 'http://openapi.foodsafetykorea.go.kr/keyId/serviceId/dataType/json/1/10'
headers1 = {'Authorization': 'Digest username="postman", realm="Users", nonce="ni1LiL0O37PRRhofWdCLmwFsnEtH1lew", uri="/digest-auth", response="254679099562cf07df9b6f5d8d15db44", opaque=""'}
# 아래와 같이 파라미터를 전달하는 값은 이번에 사용하지 않고 1 ~ 10 가지의 식품 내용을 가지고 오겠습니다.
params = {'param':'있을경우 사용'}
data1 = {'data':'있을 경우 사용'}
# API 반환된 값 변수에 담기
response = requests.get(url1,headers=headers1)
json2 = json.loads(response.content)
# 반환 된 값으로 반복문, 여기부터 Chat GPT API 사용
# Chat GPT 만 사용하실 분은 반복문 안 집중적으로 봐주시면 됩니다.
for idx, recipe in enumerate(json2["COOKRCP01"]["row"]):
## chat GPT
contentForGPT = ""
# API KEY 를 넣어주세요
openai.api_key = "Your Chat GPT API"
messages = []
# 질문할 내용 데이터 가공
contentForGPT = recipe["RCP_NM"] + "의 효능에 대해 알려줘"
#질문 내용 확인
print("content : ", contentForGPT)
# 질문 내용 Message 변수에 추가
messages.append({"role": "user", "content": contentForGPT})
# 질문내용 답변 받기
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages
)
# 질문내용 답변 변수 삽입
chat_response = completion.choices[0].message.content
# finish Chat GPT
# 여기까지 Chat GPT 반환내용
# 식품안전나라에서 받은 Title 셋팅
title = recipe["RCP_NM"]
# 워드프레스 본문내용 셋팅
html = f'''
<br>
<h3>재료</h3>
<br>
{recipe["RCP_PARTS_DTLS"]}
<hr>
<h5>조리 순서</h5>
<br>
{recipe["MANUAL01"]}
<br>
{recipe["MANUAL02"]}
<br>
{recipe["MANUAL03"]}
<br>
{recipe["MANUAL04"]}
<br>
<br>
<hr>
<h5>
About..
</h5>
<br>
# Chat GPT 본문내용 삽입
{chat_response}
'''
# 식품안전나라에서 받은 이미지 URL 변수에 담고 이미지 내 컴퓨터 파일 경로에 다운로드
food_img_url = recipe["ATT_FILE_NO_MK"]
filename = "food_" + str(idx) + ".jpg"
filepath= folder + filename
urllib.request.urlretrieve(food_img_url, "/yourPath/food_" + str(idx) + ".jpg")
#Finish API 셋팅
# 저장된 파일 업로드할 이미지 셋팅
url = urljoin(WP_URL, '/wp-json/wp/v2/media/')
f = open(filepath, 'rb')
image_data = f.read()
f.close()
espSequence = bytes(filename, "utf-8").decode("unicode_escape")
headers = {
'Content-Type': 'image/png',
'Content-Disposition': 'attachment; filename=%s' % espSequence,
}
res2 = requests.post(
url,
data=image_data,
headers=headers,
auth=(WP_USERNAME, WP_PASSWORD),
)
media_info = res2.json()
media_id = media_info['id']
media_url = media_info['source_url']
# 업로드 된 파일 URL 변수 삽입
img_contents = f'''[caption id="attachment_{media_id}" align="aligncenter" width="500"]<img class="size-full wp-image-{media_id}" src="{media_url}" alt="{title}" width="500" height="500"> {title}[/caption]
<p> </p><br />
<p> </p>
'''
# 위 내용의 html 삽입 및 data 셋팅
content = html
payload = {"status": status,
"slug": slug,
"title": title,
"content": content,
# "date": now.isoformat(),
"categories": category_ids,
"tags": tag_ids,
}
# 이미지 있을 경우 이미지 정보도 삽입
if media_id is not None:
payload['featured_media'] = media_id
# 워드프레스 업로드 시작
res = requests.post(urljoin(WP_URL, "/wp-json/wp/v2/posts"),
data=json.dumps(payload),
headers={'Content-type': "application/json"},
auth=(WP_USERNAME, WP_PASSWORD))
if res.ok:
print(f'''성공 code:{res.status_code}''')
else:
print(f"실패 code:{res.status_code} reason:{res.reason} msg:{res.text}")
반복문을 통해 계속 업로드가 된다.
진행 프로세스를 참고하여 다시 코드를 보면 이해하기 조금 더 쉬울것이다.
[프로세스]
식품안전나라 API 호출 -> 1 ~ 10 가지 레시피 정보를 가지고 반복문 -> 반복문 속에서 Chat GPT 에게 음식에 대한 효능 질문 호출 -> 식품안전나라 값과 ChatGPT 반환된값의 데이터를 가공하여 워드프레스 업로드
이미지 다운로드 후 워드프레스 재업로드와 식품안전나라 API 반환 값이 조금 혼동이 올 수 있으나 이전 게시글들을 이해하였으면 충분히 해당 내용들을 제거하고 사용할거라 예상합니다!!!!!
'Back-end > Python' 카테고리의 다른 글
[Python] 아마존 웹 크롤링, Bard(바드) API사용하여 워드프레스 게시글 올리기 - Rowen Jobs (1) | 2023.08.04 |
---|---|
[Python] 아마존 베스트셀러 페이지 웹 크롤링하기 (0) | 2023.08.03 |
[Python] Bard(좀 편법..) 를 이용하여 Bard 사용해보기 (0) | 2023.08.01 |
[Python] ChatGPT API 를 이용하여 ChatGPT 사용해보기 (0) | 2023.07.31 |
[Python] 워드프레스 자동 게시글 올리는 코드 작성(자동화) (0) | 2023.07.28 |