diff --git a/README.md b/README.md index e5c370f..3598ade 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,9 @@ make.com을 이용해서 만든 AutoMation Flow를 Python을 이용하여 변환 ### Python 개발 순서 * DB에서 url을 가져오는 코드작성(완료). * url을 이용해서 파싱하고 텍스트만 추출하는 기능 구현(완료). -* OpenAI이용 코드 작성(진행중). -* HTML문서 변환 코드 작성. -* 워드프레스 등록 플로우 코드 작성. +* OpenAI이용 코드 작성(완료)-비용 절감을 위하여 제목, 이미지 생성 제외. +* HTML문서 변환 코드 작성(완료). +* 워드프레스 등록 플로우 코드 작성(기능 테스트 완료 - 연결 필요). * 코드 리팩토링. ## 코드 이슈 diff --git a/convert_md.py b/convert_md.py new file mode 100644 index 0000000..30c36e9 --- /dev/null +++ b/convert_md.py @@ -0,0 +1,30 @@ +import os +from dotenv import load_dotenv +import markdown +import translate_article as ta +import open_ai as oa + +# .env 파일에서 API 키 로드 +load_dotenv(r'./.env.dev') + +# 예시 기사 텍스트 (text 파싱 결과로 제공된 텍스트를 사용할 수 있습니다) +article_text = ta.getContents() + +# 블로그 스타일 참고 텍스트 +style_reference = os.getenv("reference_style") + +# 블로그 포스트 생성 +blog_post = oa.generate_blog_post(article_text, style_reference) + +# 결과 출력 +print(blog_post) + +# Markdown 텍스트 예시 +markdown_text = blog_post + +# Markdown을 HTML로 변환 +html = markdown.markdown(markdown_text) + +# 결과 출력 +print("Converted HTML:") +print(html) \ No newline at end of file diff --git a/open_ai.py b/open_ai.py index 44f00d7..42e2360 100644 --- a/open_ai.py +++ b/open_ai.py @@ -17,6 +17,8 @@ def generate_blog_post(article_text, style_reference): 너는 대한민국에 거주하는 블로그 전문가이다. 네가 작성한 블로그 글은 지난 3년간 높은 주목성, 관여도, 전환율을 만들었다. 이 전문성을 이용해서 제공받는 기사를 블로그 형태로 변형하여 작성해야만 한다. + --- + 글을 작성하고 제목을 만들어서 맨 마지막 줄에 추가해줘. """ f"\n블로그 스타일은 아래 문서를 모방해줘. 적절한 사례들이 들어가도 좋겠어.\n---\n{style_reference}\n" f"제공된 기사 내용:\n{article_text}" @@ -36,15 +38,16 @@ def generate_blog_post(article_text, style_reference): blog_post = response.choices[0].message.content return blog_post -# 예시 기사 텍스트 (text 파싱 결과로 제공된 텍스트를 사용할 수 있습니다) -article_text = ta.getContents() +if __name__ == "__main__": + # 예시 기사 텍스트 (text 파싱 결과로 제공된 텍스트를 사용할 수 있습니다) + article_text = ta.getContents() -# 블로그 스타일 참고 텍스트 -style_reference = os.getenv("reference_style") + # 블로그 스타일 참고 텍스트 + style_reference = os.getenv("reference_style") -# 블로그 포스트 생성 -blog_post = generate_blog_post(article_text, style_reference) + # 블로그 포스트 생성 + blog_post = generate_blog_post(article_text, style_reference) -# 결과 출력 -print(">>>>\n" * 3) -print(blog_post) + # 결과 출력 + print(">>>>\n" * 3) + print(blog_post) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 184f71d..c2239f0 100644 Binary files a/requirements.txt and b/requirements.txt differ diff --git a/wp.py b/wp.py new file mode 100644 index 0000000..9d78d60 --- /dev/null +++ b/wp.py @@ -0,0 +1,43 @@ +import os +from dotenv import load_dotenv +import json +import requests +from urllib.parse import urljoin +from datetime import datetime + +# .env 파일에서 API 키 로드 +load_dotenv(r'./.env.dev') + +wp_url = os.getenv('WP_URL') +wp_usr = os.getenv('WP_USERNAME') +wp_key = os.getenv('WP_API_KEY') +status = 'draft' #즉시발행:publish, 임시저장:draft +# slug = 'input your slug' + +title = '파이썬 자동포스팅' +content = 'html 호출 연동 필요.' # 연결만하면됨 테스트 완료. +category_id = [2] # 카테고리 아이디 +# tag_ids = [21] #태그아이디 +media_id=None #이미지 업로드를 제외 None + +payload = { + "status": status, + "title": title, + "content": content, + "date": datetime.now().isoformat(), # YYYY-MM-DDTHH:MM:SS + "categories": category_id +} +if media_id is not None: + payload['featured_media'] = media_id + + + +result = requests.post(urljoin(wp_url, "wp-json/wp/v2/posts"), + data=json.dumps(payload), + headers={'Content-type': "application/json"}, + auth=(wp_usr, wp_key)) + +if result.ok: + print(f"성공 code:{result.status_code}") +else: + print(f"실패 code:{result.status_code} reason:{result.reason} msg:{result.text}") \ No newline at end of file