/m2w

Automatically upload and update local markdown to WordPress via Python

Primary LanguagePythonMIT LicenseMIT

m2w 2: Markdown to WordPress

Automatically upload and update local markdown to WordPress via Python

🌟🌟🌟 Welcome m2w 2!

Tutorial: Docker系列 WordPress系列 WordPress上传或更新Markdown的最佳实践-m2w 2.0

Table of Contents

Background

m2w is an easy-to-use tool for automatical upload & update of markdown to WordPress, which has been frozen in v1.0.7. m2w 1.0 is powerful enough for most people, but not very friendly:

  • You have to assign legacy or new path to store the blog markdowns, which means that you could not position your files as you like.
  • It's not convenient to manage multiple sites with exactly the same blog markdowns.

You can still find tutorials about m2w 1.0 (Zh/En), which is not maintained anymore. It's OK if you just use m2w 1.0, and It works very well.

=================

Now, more powerful m2w 2 comes and meet everyone! 🌟 🌟 🌟

m2w 2 has these features:

  • Use config/user.json to maintain the user information in a little different way comparing with m2w 1.0.
  • You can just keep your file structures locally as you like.
  • You can manage lots of websites at the same time via multiple legacy_*.json.
  • All you need to deal with is a single python script myblog.py instead of two (update.py and upload.py in m2w 1.0).
  • Ignore repeated new markdown files for uploading (v2.2.4+)
  • Stable and useful as m2w 1.0.

Install

Miniconda is recommended to manage Python version and related dependencies.

Here is the dependency:

# Python 3.7.4 is the version I use m2w. I'm not sure whether it could work well in more advanced Python versions.
python_requires='>=3.7.4'

# Dependencies
install_requires=[
    "python-frontmatter>=1.0.0",
    "markdown>=3.3.6",
    "python-wordpress-xmlrpc>=2.3"
]

After 2022-12-10, m2w 2 was uploaded onto PyPi. To install m2w 2, just run pip install m2w in your shell/conda environment. You can also directly download m2w 2 from this repotory. The usage is exactly the same.

You can specify version or resource when installing m2w 2:

pip install -i https://pypi.org/simple m2w==2.2.11

Generally, the latest version of m2w is recommended.

Usage

  1. Install m2w from PyPi or this Github repotory.
  2. Build a 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:
# Absolute path of m2w
path_m2w = '<path02>'
  1. Define <path02>/config/user.json. You can add many websites like web01! Please go to the demo for more details. Here is some interpretations:
  • domain, username, password: The information of your WordPress site and account.
  • path_markdown: Add as much top folders as you want!
  • post_metadata: Default category information.
  • websites: Add as much accounts as you want!
  • path_legacy_json: Just leave it alone and do not change anything!
"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"
    }
  1. Run myblog.py like:
python <path01>/myblog.py

Demo

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!

Typora_zKwwaE10Qe

LOG

  • 2022-12-14m2w.py is the same name as m2w package, which would bring some bugs. I change the name of the demo script as myblog.py.
  • 2022-12-10 :Upload 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.
  • 2022-12-08 :Ignore repeated uploading of new markdown based on their file names. Update ot m2w 2.2.4 (Strongly recommended)!
  • 2022-12-06:Optimized parameter space of m2w, which make it more flexible. Update ot m2w 2.2!
  • 2022-12-03:Brand-new m2w 2.0!
  • 2022-11-13:Add error control for the Client function, which is helpful to avoid legacy bugs if the connection to the WordPress website is not available.
  • Before: Create m2w project.

TO-DO

  • Nothing

Related Efforts

Maintainers

@huangwb8

Contributing

Feel free to dive in! Open an issue or submit PRs.

m2w follows the Contributor Covenant Code of Conduct.

Contributors

Nobody yet.

License

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.

More

Applications similar to m2w

  • WordPressXMLRPCTools: Manage WordPress posts in Hexo way.
  • markpress: Write WordPress in Markdown in Your Favorite Text Editor
  • wordpress-markdown-blog-loader: This utility loads markdown blogs into WordPress as a post. It allows you to work on your blog in your favorite editor and keeps all your blogs in git.