43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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}") | 
