由于每次把*.md文件上载到blog都需要写一个复杂的yaml在开头,所以写了这个基于python的程序以减轻工作量。
代码如下:
| import tkinter as tkfrom 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应该会容易得多。
为了做个小小试验,先贴一张希儿的图片在下面。如果网页端加载图片和我想象的方式差不多的话,那么希儿的图片将会展现在下面。
 希儿
希儿