由于每次把*.md
文件上载到blog都需要写一个复杂的yaml
在开头,所以写了这个基于python
的程序以减轻工作量。
代码如下:
import tkinter as tk from tkinter import filedialog from datetime import datetime import os
now=datetime.now() time0=now.strftime('%Y_%m_%d_%H_%M')
path0=filedialog.askopenfilename(initialdir=r"url") filename0 = os.path.basename(path0).rpartition('.')[0] print('path =',path0)
def select_file(starting_folder=r'url'): root = tk.Tk() root.withdraw() root.lift() root.attributes('-topmost', True) root.update()
file_path = filedialog.askopenfilename(initialdir=starting_folder) if file_path: relative_path = os.path.relpath(file_path, starting_folder).replace("\\", "/") return '/img/'+relative_path else: return None
name=input('文件标题(t_+内容/inh继承)|') if name=='' or name=='t_': name=time0 elif name[0:2]=='t_': if name[2:]=='inh': name=time0+'_'+filename0 else: name=time0+'_'+name[2:] elif name=='inh': name=filename0 print(name)
title=input('标题|')
date0=input('创建日期(yyyy-mm-dd[ hh:mm]/n[ow])|') if date0=='n': date0=now.strftime('%Y-%m-%d %H:%M') print(date0) date1=input('更新日期(yyyy-mm-dd[ hh:mm]/n[ow])|') if date1=='n': date1=now.strftime('%Y-%m-%d %H:%M') print(date1)
tags=input('tags标签|') if ',' in tags: tags=f'[{tags}]' categories=input('categories分类|') if ',' in categories: categories=f'[{categories}]' description=input('description|')
mathjax=input('mathjax|') copyright_=input('copyright|')
topimg=input('设置顶图(*/n)|') if topimg!='n': topimg=select_file() else: topimg=None print(topimg)
cover=input('设置封面图(*/n)|') if cover!='n': cover=select_file() else: cover=None print(cover)
with open(f"../{name}.md",'w',encoding='utf-8') as f: f.write('---\n') f.write(f'title: {title}\n') f.write(f'date: {date0}\n') if date1: f.write(f'updated: {date1}\n') f.write(f'tags: {tags}\n') f.write(f'categories: {categories}\n') f.write(f'description: {description}\n') f.write(f'mathjax: {mathjax}\n') if topimg: f.write(f'top_img: {topimg}\n') if cover: f.write(f'cover: {cover}\n') f.write('toc: true\n') f.write(f'copyright: {copyright_}\n') f.write('---\n')
with open(path0,'r',encoding='utf-8') as f1: with open(f"../{name}.md",'a',encoding='utf-8') as f2: f2.write(f1.read())
|
这样一来至少大部分工作可以自动完成了。
提取一些可能用到的一些模板语句:
tkinter
的文件选择器 基本的文件选择器只需一行
path0=filedialog.askopenfilename(initialdir=r"url") filename0 = os.path.basename(path0).rpartition('.')[0] print('path =',path0)
|
包括取文件路径和取文件名。
文件选择器增强版
def select_file(starting_folder=r'url'): root = tk.Tk() root.withdraw() root.lift() root.attributes('-topmost', True) root.update()
file_path = filedialog.askopenfilename(initialdir=starting_folder) if file_path: relative_path = os.path.relpath(file_path, starting_folder).replace("\\", "/") return '/img/'+relative_path else: return None
|
在前面进行一些窗口化的小操作,包括隐藏主窗口并且把tk实例置于最前,不然新出现的窗口可能会以非活动窗口的形式出现在最后面。
时间格式
from datetime import datetime
now=datetime.now() time0=now.strftime('%Y_%m_%d_%H_%M')
|
注意datetime
是datetime
库下的类。不能直接引用datetime
库。
有时间会解决一下Typora上传图片的机制,这样搬运带图片的blog应该会容易得多。
为了做个小小试验,先贴一张希儿的图片在下面。如果网页端加载图片和我想象的方式差不多的话,那么希儿的图片将会展现在下面。
希儿