wordpress-collect/wp.py
2024-02-15 22:48:32 +08:00

92 lines
2.0 KiB
Python

import base64
import os
import requests, json
wp_url = "http://192.168.81.231/wp-json/wp/v2/"
user = "api"
passwd = "JBu7 Q2oZ rDze okev nhHo jXHM"
get = "get"
post = "post"
def req(method="get", path="", params=None):
if params is None:
params = {}
url = wp_url + path
if method == "get":
response = requests.get(url, params=params, auth=(user, passwd))
elif method == "post":
response = requests.post(url, data=params, auth=(user, passwd))
else:
raise Exception("method error")
return response.json()
def get_posts():
params = {
"per_page": 100
}
return req(get, "posts", params)
# 发布
def post_post(title, content, featured_media=None):
data = {
"title": title,
"content": content,
"status": "publish"
}
if featured_media:
data["featured_media"] = featured_media
return req(post, "posts", data)
def upload_media(filepath):
data = open(filepath, 'rb').read()
filename = os.path.basename(filepath)
# get content type
import mimetypes
mime_type = mimetypes.guess_type(filename)[0]
if mime_type is None:
mime_type = 'image/jpg'
res = requests.post(url=wp_url + 'media',
data=data,
headers={'Content-Type': mime_type,
'Content-Disposition': 'attachment; filename=%s' % filename},
auth=(user, passwd))
# pp = pprint.PrettyPrinter(indent=4) ## print it pretty.
# pp.pprint(res.json()) #this is nice when you need it
new_dict = res.json()
new_id = new_dict.get('id')
# link = new_dict.get('guid').get("rendered")
return new_id
def get_post_url(post_id):
# get rendered url
res = req(get, "posts/" + str(post_id))
print(res)
return res['link']
def get_media_url(media_id):
# get rendered url
res = req(get, "media/" + str(media_id))
# if exists
if res['guid']['rendered']:
return res['guid']['rendered']
return None