Automatically upload and update local markdown to WordPress based on REST API/Password via Python
:star2::star2::star2: Welcome m2w 2.5!
Chinese tutorial: Docker系列 WordPress系列 WordPress上传或更新Markdown的最佳实践-m2w 2.0
m2w
is a tool for automatically uploading or updating local Markdown to WordPress via Python, based on REST API (2.5+
) or Password.
m2w
has these features:
config/user.json
to maintain the user information in a little different way comparing with m2w 1.0
.legacy_*.json
.myblog.py
instead of two (update.py
and upload.py
in m2w 1.0
).v2.2.4+
)Miniconda is recommended to manage Python version and related dependencies.
Here is the dependency:
# Python version
python_requires='>=3.7.6'
# Dependencies
install_requires=[
"python-frontmatter>=1.0.0",
"markdown>=3.3.6",
"python-wordpress-xmlrpc>=2.3",
"httpx>=0.24.0"
]
After 2022-12-10, m2w
was uploaded onto PyPi. To install m2w
, just run this code in your shell/conda environment:
pip install m2w
You can also directly download m2w
from this repotory. The usage is exactly the same.
You can specify version or resource when installing m2w
:
pip install -i https://pypi.org/simple m2w==2.5.13
Generally, the latest version of m2w
is recommended.
This step is needed only when you want to use the REST API mode.
myblog.py
file (or other names you like) in <path01>
. Here is the demo. Create <path02>/config/user.json
and set path_m2w
as <path02>
in myblog.py
:path_m2w = '<path02>' # Absolute path of m2w config folder
<path02>/config/user.json
. You can add many websites like web01
! Please go to the demo for more details. Here are some interpretations:
"web01": {
"domain": "https://domain-01.com",
"username": "username-01",
"application_password": "password-01",
"path_markdown": [
"E:/Github/m2w/@test/main",
"E:/Github/m2w/@test/main2"
],
"post_metadata": {
"category": ["test"],
"tag": ["test"],
"status": "publish"
},
"path_legacy_json": "/config/legacy"
}
"web01": {
"domain": "https://domain-01.com",
"username": "username-01",
"password": "password-01",
"path_markdown": [
"E:/Github/m2w/@test/main",
"E:/Github/m2w/@test/main2"
],
"post_metadata": {
"category": ["test"],
"tag": ["test"],
"status": "publish"
},
"path_legacy_json": "/config/legacy"
}
application_password
is REST API, and password
is the conventional passord of your account. if both application_password
and password
exit, only application_password
is available for m2w.myblog.py
like: python <path01>/myblog.py
This demo is conducted in Win10 with VScode.
As shown in the following GIF, all changed or brand-new markdowns can be automatically updated/upload via just a simple command python myblog.py
!
m2w.py
is the same name as m2w
package, which would bring some bugs. I change the name of the demo script as myblog.py
.m2w 2
to PyPi. You can install m2w 2
with code (in Shell) like pip install -i https://pypi.org/simple m2w
. The project url is https://pypi.org/project/m2w.m2w 2.2.4
(Strongly recommended)! m2w 2.2
!Client
function, which is helpful to avoid legacy bugs if the connection to the WordPress website is not available.m2w
project.[ ] shuoshuo and page update & upload
[ ] Enhanced markdown support: python-markdown
to markdown-it-py
[ ] Support Hexo-like YAML head:
title: I Love You
tags:
- You
- I
- Love
categories:
- Note
date: 2023-11-08 16:38:31
update: 2023-11-08 16:40:31
--
Feel free to dive in! Open an issue or submit PRs. m2w follows the Contributor Covenant Code of Conduct.
This software depends on other packages that may be licensed under different open source licenses.
m2w is released under the MIT license. See LICENSE for details.
Applications similar to m2w