ブログページ簡易作成ツール

Posted on 2024年02月24日 (土) in 自作ツール

Pelican ブログを作るさい、コンテンツになるマークダウンに簡易的なメタデータを入力する必要があるのだが、毎回手書きするのは怠いためテンプレート用ツールを作ってみた。

ツール画像

コードはこの様になっている。

from tkinter import *

from tkinter import ttk

import time

from tkinter import messagebox



category_list=[カテゴリリスト]

tag_list=[タグリスト]



def create_site():

    title=entry_title.get()

    slug=entry_Slug.get()

    summary=entry_summary.get("1.0", "end-1c")

    auther="yukisakura"

    date=time.strftime("%Y-%m-%d", time.localtime())

    category=combo_category.get()

    tags=[]

    for tag in tag_list:

        if globals()[tag+"_var"].get()==1:

            tags.append(tag)



    file_text=f"""

Title: {title}

Date: {date}

Author: {auther}

Slug: {slug}

Category: {category}

Tags: {",".join(tags)}

Summary: {summary}


# 目次

[TOC]

"""

    file_name=f"{date}_{title}.md"

    with open(file_name,"w",encoding="utf-8") as f:

        f.write(file_text.lstrip())

    messagebox.showinfo("情報", "サイトを作成しました。")


root=Tk()

root.title("Create Site")

label_title=ttk.Label(root, text="タイトル")

entry_title=ttk.Entry(root,width=100)

label_Slug=ttk.Label(root, text="スラッグ")

entry_Slug=ttk.Entry(root,width=100)

label_summary=ttk.Label(root, text="概要")

entry_summary=Text(root,width=100,height=3)

label_category=ttk.Label(root, text="カテゴリー")

combo_category=ttk.Combobox(root, values=category_list,state="readonly")

label_tags=ttk.Label(root, text="タグ")

frame=ttk.Frame(root)

for i,tag in enumerate(tag_list):

    globals()[tag+"_var"]=IntVar()

    globals()[tag+"_var"].set(0)

    globals()["check_"+tag]=ttk.Checkbutton(frame, text=tag, variable=globals()[tag+"_var"], onvalue=1, offvalue=0)

    globals()["check_"+tag].grid(row=i//3,column=i%3)


label_title.grid(row=0, column=0)

entry_title.grid(row=0, column=1)

label_Slug.grid(row=1, column=0)

entry_Slug.grid(row=1, column=1)

label_summary.grid(row=2, column=0,columnspan=2)

entry_summary.grid(row=3, column=0,columnspan=2)

label_category.grid(row=4, column=0,columnspan=2)

combo_category.grid(row=5, column=0,columnspan=2)

label_tags.grid(row=6, column=0,columnspan=2)

frame.grid(row=7, column=0,columnspan=2)

button=ttk.Button(root, text="作成", command=create_site)

button.grid(row=8, column=0,columnspan=2)

root.mainloop()

標準ライブラリでだけで作っており、構造も単純であるためカスタマイズを必要に応じて行える。