概要

python の http.server.SimpleHTTPRequestHandler を使って Markdown をHTMLに変換する簡単なサーバを書いてみた。

目次

環境作成

mkdir markdown_server
cd markdown_server
python3 -m venv venv
source venv/bin/activate
pip install markdown

サーバを書く

https://docs.python.org/ja/3/library/http.server.html
https://docs.python.org/ja/3/library/http.server.html#http.server.SimpleHTTPRequestHandler

"""Markdown公開用サーバ."""

import http.server
import markdown
import socketserver
import os
import posixpath


PORT = 8000

class MarkdownHandler(http.server.SimpleHTTPRequestHandler):
    def __init__(self, request, client_address, server):
        super().__init__(request, client_address, server)
        self.extensions_map[".md"] = "text/html; charset=utf-8"

    def do_GET(self):
        base, ext = posixpath.splitext(self.path)
        if ext == ".md" and os.path.exists(self.path[1:]):
            with open(self.path[1:], "r") as f:
                lines = "\n".join(f.readlines())
                response = markdown.Markdown().convert(lines).encode("utf-8")
                self.send_head()
                self.wfile.write(response)
            return
        super().do_GET()

# ポートの再利用を許可する(コレがないとしばらくの間は同じポートを利用できない)
socketserver.TCPServer.allow_reuse_address = True

with socketserver.TCPServer(("", PORT), MarkdownHandler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()

トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS